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": "<string>",
  "walletId": "<string>",
  "amount": "<string>",
  "destinationCurrency": "<string>",
  "destinationPaymentRail": "<string>",
  "destinationAddress": "<string>",
  "reference": "<string>",
  "clientReferenceId": "<string>"
}
'
{
  "ok": true,
  "data": {
    "id": "<string>",
    "customerId": "<string>",
    "type": "<string>",
    "status": "<string>",
    "amount": "<string>",
    "sourceCurrency": "<string>",
    "destinationCurrency": "<string>",
    "createdAt": "2023-11-07T05:31:56Z",
    "updatedAt": "2023-11-07T05:31:56Z",
    "destinationAddress": "<string>",
    "payoutAccountId": "<string>",
    "finalAmount": "<string>",
    "destinationTxHash": "<string>",
    "gasFee": "<string>",
    "exchangeFee": "<string>"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.ledger.so/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Pass your API key as a Bearer token: Authorization: Bearer ld_live_...

Body

application/json
customerId
string
required

Ledger customer ID (cus_...)

walletId
string
required

Wallet to transfer from (wal_...). Can be a crypto wallet or a virtual account wallet.

amount
required

Transfer amount

destinationCurrency
string
required

Destination currency code (e.g. "usdc", "gbp", "eur")

destinationPaymentRail
string
required

Payment rail (crypto: "solana", "ethereum", etc. | fiat: "ach", "wire", "sepa", "faster_payments", "spei", "pix")

destinationAddress
string
required

Onchain address for crypto transfers, or payout account ID (pa_...) for fiat transfers

reference
string

Payment reference sent to the recipient's bank. Max 10 chars for ACH, 140 for wire/SEPA.

clientReferenceId
string

Your own reference ID for idempotency or tracking (not sent to recipient)

Response

Transfer created

ok
enum<boolean>
required
Available options:
true
data
object
required

Response fields vary by transfer type. Crypto transfers include destinationAddress, destinationTxHash, and gasFee. Fiat transfers include payoutAccountId instead.