Card Payouts API

Off-ramp stablecoins to fiat and push payouts to any Visa or Mastercard globally in real-time via Visa Direct and Mastercard Send.

Create Card Payout

Initiate a stablecoin-to-fiat payout to any Visa or Mastercard. Chain handles the conversion and delivers fiat to the recipient's card in real-time.

POST/v1/card-payouts
ParameterTypeDescription
amountrequirednumberPayout amount in the destination fiat currency.
currencyrequiredstringDestination fiat currency (e.g., "USD", "EUR", "GBP").
source_stablecoinrequiredstringStablecoin to convert from (e.g., "USDC", "USDT").
card_networkrequiredstring"visa" or "mastercard".
card_tokenrequiredstringTokenized card identifier (from card tokenization flow).
recipient_namerequiredstringFull name of the cardholder.
recipient_countrystringISO 3166-1 alpha-2 country code of the recipient.
referencestringYour internal reference ID for this payout.
metadataobjectCustom key-value metadata to attach to the payout.

Scope required

This endpoint requires the card_payouts:write scope and a verified business.
Example request
curl -X POST https://api.chain.com/v1/card-payouts \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 250.00,
    "currency": "USD",
    "source_stablecoin": "USDC",
    "card_network": "visa",
    "card_token": "tok_card_abc123",
    "recipient_name": "Jane Doe",
    "recipient_country": "US",
    "reference": "payout_inv_456"
  }'
Response
{
  "id": "cpay_xyz789",
  "amount": 250.00,
  "currency": "USD",
  "source_stablecoin": "USDC",
  "stablecoin_amount": 250.12,
  "fx_rate": 1.00048,
  "card_network": "visa",
  "card_last_four": "4242",
  "recipient_name": "Jane Doe",
  "status": "processing",
  "reference": "payout_inv_456",
  "created_at": "2026-02-12T14:30:00Z",
  "estimated_arrival": "2026-02-12T14:30:05Z"
}

Get Payout Quote

Get a real-time quote for a card payout before initiating. Includes FX rate, fees, and the exact stablecoin amount that will be debited.

POST/v1/card-payouts/quote
ParameterTypeDescription
amountrequirednumberPayout amount in the destination fiat currency.
currencyrequiredstringDestination fiat currency.
source_stablecoinrequiredstringStablecoin to convert from.
card_networkrequiredstring"visa" or "mastercard".
Response
{
  "amount": 250.00,
  "currency": "USD",
  "source_stablecoin": "USDC",
  "stablecoin_amount": 250.12,
  "fx_rate": 1.00048,
  "fee": 0.50,
  "total_debit": 250.62,
  "expires_at": "2026-02-12T14:31:00Z"
}

List Card Payouts

Retrieve all card payouts for your business with optional filtering by status or date range.

GET/v1/card-payouts
ParameterTypeDescription
limitnumberResults per page (default 20, max 100).
starting_afterstringCursor for pagination — payout ID to start after.
statusstringFilter by status: "pending", "processing", "completed", "failed".
Response
{
  "data": [
    {
      "id": "cpay_xyz789",
      "amount": 250.00,
      "currency": "USD",
      "source_stablecoin": "USDC",
      "card_network": "visa",
      "card_last_four": "4242",
      "recipient_name": "Jane Doe",
      "status": "completed",
      "created_at": "2026-02-12T14:30:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Retrieve Card Payout

Retrieve details of a specific card payout by its ID.

GET/v1/card-payouts/:id
Response
{
  "id": "cpay_xyz789",
  "amount": 250.00,
  "currency": "USD",
  "source_stablecoin": "USDC",
  "stablecoin_amount": 250.12,
  "fx_rate": 1.00048,
  "fee": 0.50,
  "card_network": "visa",
  "card_last_four": "4242",
  "recipient_name": "Jane Doe",
  "recipient_country": "US",
  "status": "completed",
  "reference": "payout_inv_456",
  "created_at": "2026-02-12T14:30:00Z",
  "completed_at": "2026-02-12T14:30:04Z"
}

Payout Webhooks

Receive real-time webhook notifications as card payouts progress through each stage.

Payout completed webhook
{
  "type": "card_payout.completed",
  "data": {
    "id": "cpay_xyz789",
    "amount": 250.00,
    "currency": "USD",
    "card_network": "visa",
    "card_last_four": "4242",
    "status": "completed",
    "completed_at": "2026-02-12T14:30:04Z"
  }
}
Payout failed webhook
{
  "type": "card_payout.failed",
  "data": {
    "id": "cpay_abc123",
    "amount": 100.00,
    "currency": "EUR",
    "card_network": "mastercard",
    "status": "failed",
    "failure_reason": "card_not_eligible",
    "failed_at": "2026-02-12T15:00:02Z"
  }
}

Payout Statuses

StatusDescription
pendingPayout created and awaiting processing.
processingStablecoin conversion in progress, fiat being pushed to card network.
completedFiat successfully delivered to the recipient's card.
failedPayout failed — check failure_reason for details.

Supported Networks & Stablecoins

TypeSupported
Card NetworksVisa (via Visa Direct), Mastercard (via Mastercard Send)
StablecoinsUSDC, USDT, DAI, PYUSD, EURC, TUSD, BUSD
Fiat CurrenciesUSD, EUR, GBP, and 9+ additional currencies
Countries200+ countries and territories
globe
icon

Pax Dollar

USDP

icon

Ripple USD

RLUSD

icon

Dollar

USD

icon

Tether

USDT

icon

Pounds

GBP

icon

Euro

Eur