Customers
A Customer represents a person or business using your platform. Every resource in Ledger — wallets, virtual accounts, counterparties — belongs to a Customer. Customers are active immediately on creation. To unlock capabilities like wallets and transfers, customers need to pass identity verification (KYC/KYB). Ledger handles this for you.| Field | Values |
|---|---|
type | individual, business |
status | active, suspended, rejected |
kycStatus | not_started, under_review, incomplete, approved, rejected |
capabilities | wallets, virtualAccounts, transfers |
kycLink: hosted identity verification URLtosLink: hosted terms acceptance URL
Wallets
A Wallet is a custodial crypto wallet Ledger manages on behalf of a customer. Wallets hold stablecoin balances and are the foundation for most money movement. What you can do with a wallet:- Receive deposits via crypto deposit addresses
- Send onchain transfers to external addresses
- Check balance via the balance endpoint
- Hold stablecoin balances
Virtual Accounts
A Virtual Account provides fiat deposit instructions (routing/account numbers, IBAN, CLABE, etc.) that route incoming fiat into a linked wallet as stablecoins.| Field | Description |
|---|---|
sourceCurrency | Fiat currency accepted (usd, eur, mxn, gbp) |
depositInstructions | Bank details to share with senders |
Counterparties
A Counterparty is a customer-owned external account that can receive funds — bank accounts, mobile money wallets, or international wire destinations. Supported types:us_bank, iban, clabe, pix, gb_bank, mobile_money, ghipss, nip, swift
Bank-backed types (us_bank, iban, clabe, pix, gb_bank) require customer KYC approval. Direct types (mobile_money, ghipss, nip, swift) can be created without KYC.
Transactions
A Transaction records any value movement in Ledger. Every deposit and transfer creates a transaction.| Type | Description |
|---|---|
transfer | Onchain transfer to an external address |
wallet_deposit | Crypto received at a deposit address |
destinationAddress: where funds were sentdestinationTxHash: onchain transaction hashfinalAmount: actual amount received after feesgasFee: network fee chargedexchangeFee: conversion fee
Transfers
A Transfer is a directed movement of value that you initiate viaPOST /v1/transfers. It creates a transaction automatically.
The source is always the customer’s wallet. You specify the destination:
- Crypto address on any supported chain (onchain transfer)
- Fiat rail like ACH or SEPA (requires customer KYC)
Webhooks
Webhooks let you receive real-time notifications when events happen in Ledger. Register a URL and Ledger pushes events to you. Event types:customer.created,customer.updatedwallet.created,wallet.updatedvirtual_account.created,virtual_account.updatedtransaction.created,transaction.updatedcounterparty.createdwebhook.test
IDs
Every resource has a prefixed ID:| Prefix | Resource |
|---|---|
cus_ | Customer |
wal_ | Wallet |
cda_ | Crypto Deposit Address |
va_ | Virtual Account |
pa_ | Counterparty |
txn_ | Transaction |
whk_ | Webhook |
Environments
| Environment | API key prefix | Description |
|---|---|---|
| Sandbox | ld_test_ | Development and testing. No real money moves. |
| Live | ld_live_ | Production. Real funds, real transfers. |