Skip to main content
POST
/
v1
/
virtual-accounts
Create a virtual account
curl --request POST \
  --url https://api.ledger.so/v1/virtual-accounts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "customerId": "cus_abc123",
  "sourceCurrency": "USD",
  "developerFeePercent": 1.5
}
'
{
  "ok": true,
  "data": {
    "id": "va_jkl012",
    "customerId": "cus_abc123",
    "sourceCurrency": "USD",
    "destinationCurrency": "USDC",
    "destinationPaymentRail": "solana",
    "walletId": "wal_def456",
    "depositInstructions": {
      "bankName": "Lead Bank",
      "routingNumber": "101019644",
      "accountNumber": "9876543210",
      "accountType": "checking"
    },
    "status": "active",
    "createdAt": "2025-01-15T12:00:00Z"
  }
}

Authorizations

Authorization
string
header
required

API key passed as a Bearer token. Format: ld_<env>_<prefix>_<secret> where <env> is test or live.

Headers

Idempotency-Key
string

Unique key to ensure idempotent request processing. Reusing a key for a different route or method returns 409 Conflict.

Example:

"idk_a1b2c3d4-e5f6-7890-abcd-ef1234567890"

Body

application/json
customerId
string
required

The customer to create the virtual account for.

Example:

"cus_abc123"

sourceCurrency
string
required

Fiat currency to accept for deposits (e.g., USD, EUR, MXN).

Example:

"USD"

developerFeePercent
number

Optional fee percentage the developer takes on each deposit. Defaults to 0.

Required range: 0 <= x <= 100
Example:

1.5

Response

Virtual account created successfully

ok
boolean
required

Indicates the request was successful.

data
object