Skip to main content
POST
/
v1
/
transfers
Create a transfer
curl --request POST \
  --url https://api.ledger.so/v1/transfers \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "customerId": "cus_abc123",
  "amount": 100,
  "sourceCurrency": "USDC",
  "sourcePaymentRail": "solana",
  "destinationCurrency": "USD",
  "destinationPaymentRail": "ach",
  "destinationAddress": "9876543210"
}
'
{
  "ok": true,
  "data": {
    "id": "txn_stu901",
    "customerId": "cus_abc123",
    "amount": 100,
    "sourceCurrency": "USDC",
    "sourcePaymentRail": "solana",
    "destinationCurrency": "USD",
    "destinationPaymentRail": "ach",
    "destinationAddress": "9876543210",
    "status": "pending",
    "createdAt": "2025-01-15T14: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 initiating the transfer.

Example:

"cus_abc123"

amount
number
required

Amount to transfer in the source currency.

Example:

100

sourceCurrency
string
required

Currency to send from.

Example:

"USDC"

sourcePaymentRail
string
required

Payment rail for the source.

Example:

"solana"

destinationCurrency
string
required

Currency to receive.

Example:

"USD"

destinationPaymentRail
string
required

Payment rail for the destination.

Example:

"ach"

destinationAddress
string
required

Destination account address or identifier.

Example:

"9876543210"

Response

Transfer created successfully

ok
boolean
required

Indicates the request was successful.

data
object