Skip to main content

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.

Create a customer

curl -X POST https://api.ledger.so/v1/customers \
  -H "Authorization: Bearer $LEDGER_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: create-cust-1" \
  -d '{
    "email": "user@example.com",
    "firstName": "Jane",
    "lastName": "Doe",
    "type": "individual"
  }'
Customers are created as active immediately. Ledger returns hosted verification links in the response.
{
  "ok": true,
  "data": {
    "id": "cus_...",
    "email": "user@example.com",
    "firstName": "Jane",
    "lastName": "Doe",
    "type": "individual",
    "status": "active",
    "kycStatus": "not_started",
    "kycLink": "https://...",
    "tosLink": "https://...",
    "capabilities": {
      "wallets": false,
      "virtualAccounts": false,
      "transfers": false
    },
    "createdAt": 1710000000000,
    "updatedAt": 1710000000000
  }
}

KYC lifecycle

  1. Create the customer via POST /v1/customers
  2. Direct the customer to complete verification via kycLink and tosLink
  3. Once approved, capabilities unlock based on verification level
  4. You can now create wallets, virtual accounts, and initiate transfers
Listen for customer.updated webhooks to track KYC progress in real-time.

Request fields

FieldTypeRequiredDescription
emailstringYesCustomer email address
firstNamestringYesFirst name
lastNamestringYesLast name
typestringNoindividual (default) or business
phonestringNoPhone number

Key fields to watch

FieldValues
statusactive, suspended, rejected
kycStatusnot_started, under_review, incomplete, approved, rejected
capabilitieswallets, virtualAccounts, transfers

Listing customers

curl "https://api.ledger.so/v1/customers?limit=10" \
  -H "Authorization: Bearer $LEDGER_API_KEY"