# 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

| Parameter | Type | Description |
| --- | --- | --- |
| `amount`required | `number` | Payout amount in the destination fiat currency. |
| `currency`required | `string` | Destination fiat currency (e.g., "USD", "EUR", "GBP"). |
| `source_stablecoin`required | `string` | Stablecoin to convert from (e.g., "USDC", "USDT"). |
| `card_network`required | `string` | "visa" or "mastercard". |
| `card_token`required | `string` | Tokenized card identifier (from card tokenization flow). |
| `recipient_name`required | `string` | Full name of the cardholder. |
| `recipient_country` | `string` | ISO 3166-1 alpha-2 country code of the recipient. |
| `reference` | `string` | Your internal reference ID for this payout. |
| `metadata` | `object` | Custom key-value metadata to attach to the payout.

Scope required

This endpoint requires the `card_payouts:write` scope and a verified business.

Example request

```bash
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

```json
{
  "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

| Parameter | Type | Description |
| --- | --- | --- |
| `amount`required | `number` | Payout amount in the destination fiat currency. |
| `currency`required | `string` | Destination fiat currency. |
| `source_stablecoin`required | `string` | Stablecoin to convert from. |
| `card_network`required | `string` | "visa" or "mastercard". |

Response

```json
{
  "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

| Parameter | Type | Description |
| --- | --- | --- |
| `limit` | `number` | Results per page (default 20, max 100). |
| `starting_after` | `string` | Cursor for pagination — payout ID to start after. |
| `status` | `string` | Filter by status: "pending", "processing", "completed", "failed". |

Response

```json
{
  "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

```json
{
  "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

```json
{
  "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

```json
{
  "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

| Status | Description |
| --- | --- |
| `pending` | Payout created and awaiting processing. |
| `processing` | Stablecoin conversion in progress, fiat being pushed to card network. |
| `completed` | Fiat successfully delivered to the recipient's card. |
| `failed` | Payout failed — check failure_reason for details. |

## Supported Networks & Stablecoins

| Type | Supported |
| --- | --- |
| Card Networks | Visa (via Visa Direct), Mastercard (via Mastercard Send) |
| Stablecoins | USDC, USDT, DAI, PYUSD, EURC, TUSD, BUSD |
| Fiat Currencies | USD, EUR, GBP, and 9+ additional currencies |
| Countries | 200+ countries and territories |

Pax Dollar

USDP

Ripple USD

RLUSD

Dollar

USD

Tether

USDT

Pounds

GBP

Euro

EUR
