Skip to main content
POST
/
v1
/
customers
/
{id}
/
cards
Issue a card for a customer
curl --request POST \
  --url https://api.ledger.so/v1/customers/{id}/cards \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "type": "virtual",
  "limitAmount": 5000,
  "limitFrequency": "per30DayPeriod"
}
'
{
  "ok": true,
  "data": {
    "id": "card_mno345",
    "customerId": "cus_abc123",
    "type": "virtual",
    "status": "active",
    "last4": "4242",
    "expirationMonth": 12,
    "expirationYear": 2027,
    "spendingLimit": {
      "amount": 5000,
      "frequency": "per24HourPeriod"
    },
    "createdAt": "2025-01-15T13: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"

Path Parameters

id
string
required

The customer ID (prefixed with cus_).

Example:

"cus_abc123"

Body

application/json
type
enum<string>
required

Card form factor.

Available options:
virtual,
physical
limitAmount
number
required

Maximum spending limit amount in USD.

Example:

5000

limitFrequency
enum<string>
required

Time window for the spending limit.

Available options:
per24HourPeriod,
per7DayPeriod,
per30DayPeriod,
allTime

Response

Card issued successfully

ok
boolean
required

Indicates the request was successful.

data
object