# Stablecoin-backed cards for Stripe Stablecoin Financial Accounts

Learn how to issue virtual or physical prepaid or debit cards for connected accounts, backed by Stablecoin Financial Accounts.

You can enable spending backed by stablecoins on your Connect platform to:

- Create custodial wallets for connected accounts.
- Issue virtual or physical prepaid or debit cards, backed by stablecoin balances.
- Enable direct transfers to external crypto wallets or local off-ramps to bank accounts.

> Stablecoin-backed Issuing cards are currently in [private preview](https://docs.stripe.com/release-phases.md). To get access, [contact Stripe sales](https://stripe.com/contact/embedded-finance).

## Availability

Stablecoin-backed wallets are currently in [private preview](https://docs.stripe.com/release-phases.md). Make sure you’re eligible for the preview before getting started:

- You must [set up your Stripe account](https://docs.stripe.com/get-started/account/set-up.md) and [configure it as a Connect platform](https://dashboard.stripe.com/connect).
- Your Connect platform must be based in the United States or Europe.
- Connected accounts must be based in a market approved during platform onboarding. During private preview, connected accounts can be based in 30+ countries across Latin America, Africa, and the Caribbean. Contact your account representative for specifics on country coverage.

## Funding lifecycle

This guide covers the following funding lifecycle:

1. You first fund your platform account by transferring money from your US bank account to your Stripe Financial Account using the [Financial Addresses v2 API](https://docs.stripe.com/api/v2/money-management/financial-addresses.md).
1. Then you transfer funds from your platform’s financial account to a connected account’s financial account and convert the funds from USD to USDC using the [Outbound Payments v2 API](https://docs.stripe.com/api/v2/money-management/outbound-payments.md).
1. The final step is to enable connected account spending using any of these methods:
   - Prepaid debit cards in USD-using [Issuing Cardholders API](https://docs.stripe.com/api/issuing/cardholders/create.md) and [Issuing Cards API](https://docs.stripe.com/api/issuing/cards/create.md)
   - Crypto wallet transfers in USDC—using [Outbound Setup Intents v2 API](https://docs.stripe.com/api/v2/money-management/outbound-setup-intents.md) and [Outbound Transfers v2 API](https://docs.stripe.com/api/v2/money-management/outbound-transfers.md)
   - Payouts to local bank accounts in USD, MXN, or EUR-using [Outbound Setup Intents v2 API](https://docs.stripe.com/api/v2/money-management/outbound-setup-intents.md) and [Outbound Transfers v2 API](https://docs.stripe.com/api/v2/money-management/outbound-transfers.md)

## Fund your platform financial account

You disperse funds from your platform’s financial account to fund card spending by connected accounts.

### Retrieve your financial account ID

```curl
curl https://api.stripe.com/v2/money_management/financial_accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview"
```

### Create a financial address

Use the [Financial Addresses v2 API](https://docs.stripe.com/api/v2/money-management/financial-addresses.md?api-version=preview) to create a new financial address.

```curl
curl -X POST https://api.stripe.com/v2/money_management/financial_addresses \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  --json '{
    "financial_account": "{{FINANCIALACCOUNTID_ID}}",
    "type": "us_bank_account"
  }'
```

### Retrieve funding credentials

Retrieve the account and routing numbers for wire or ACH transfers. Use the `include` parameter to receive the full account number.

```curl
curl -G https://api.stripe.com/v2/money_management/financial_addresses \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  -d "include[0]=credentials.us_bank_account.account_number"
```

You can monitor incoming funds using the [Transactions v2 API](https://docs.stripe.com/api/v2/money-management/transactions.md) and check your financial account balance using the [Financial Accounts v2 API](https://docs.stripe.com/api/v2/money-management/financial-accounts.md).

## Onboard connected accounts

### Create a connected account

[Create a v2 Account](https://docs.stripe.com/api/v2/core/accounts/create.md) with storer and card creator capabilities. Learn more about [Account capabilities](https://docs.stripe.com/connect/account-capabilities.md#configurations).

| Capability                                               | Description                          |
| -------------------------------------------------------- | ------------------------------------ |
| `storer.capabilities.holds_currencies.usdc`              | Enables stablecoin storage features  |
| `storer.capabilities.outbound_transfers.crypto_wallets`  | Allows transfers to external wallets |
| `card_creator.capabilities.commercial.lead.prepaid_card` | Enables issuing of prepaid cards     |

The following example creates a connected account for an individual in Mexico. Replace the `country` value with the two-letter country code for your connected account’s market.

```curl
curl -X POST https://api.stripe.com/v2/core/accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  --json '{
    "contact_email": "jenny.rosen@example.com",
    "display_name": "Connected Account for Jenny",
    "identity": {
        "country": "mx",
        "entity_type": "individual"
    },
    "configuration": {
        "merchant": {
            "capabilities": {
                "card_payments": {
                    "requested": true
                }
            }
        },
        "storer": {
            "capabilities": {
                "holds_currencies": {
                    "usdc": {
                        "requested": true
                    }
                },
                "outbound_transfers": {
                    "crypto_wallets": {
                        "requested": true
                    }
                }
            }
        },
        "card_creator": {
            "capabilities": {
                "commercial": {
                    "lead": {
                        "prepaid_card": {
                            "requested": true
                        }
                    }
                }
            }
        }
    },
    "dashboard": "none",
    "defaults": {
        "currency": "usdc",
        "responsibilities": {
            "fees_collector": "application",
            "losses_collector": "application"
        }
    }
  }'
```

### Complete KYC and KYB

Review and fulfill the [requirements](https://docs.stripe.com/api/accounts/object.md#account_object-requirements) for the connected account.

After you fulfill the requirements, Stripe and Bridge might take up to 1 business day to verify the information. After verification is complete, the configuration becomes active. Monitor the account’s progress with webhooks or by retrieving the configuration status with the [Retrieve an Account v2 API](https://docs.stripe.com/api/v2/core/accounts/retrieve.md).

```curl
curl -G https://api.stripe.com/v2/core/accounts/{{ACCOUNT_ID}} \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  -d "include[0]=configuration.storer" \
  -d "include[1]=configuration.card_creator"
```

The response includes a `configuration` field with the status for each of the configurations. The account is ready to proceed when `storer.holds_currencies.usdc.status`, `storer.outbound_transfer.crypto_wallet.status`, and `card_creator.commercial.lead.prepaid_card.status` are active.

## Create a financial account

After [capabilities](https://docs.stripe.com/connect/account-capabilities.md) are active, create a financial account for the connected account to hold USDC. This financial account can transfer funds to an external wallet or fund the card spend of an Issuing card.

```curl
curl -X POST https://api.stripe.com/v2/money_management/financial_accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  --json '{
    "type": "storage",
    "storage": {
        "holds_currencies": [
            "usdc"
        ]
    }
  }'
```

## Fund connected account wallets

Send funds from your platform financial account to connected account financial accounts, converting USD to USDC in the process.

### Create an outbound payment

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_payments \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usd"
    },
    "to": {
        "recipient": "{{ACCOUNT_ID}}",
        "payout_method": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usdc"
    },
    "amount": {
        "value": 10000,
        "currency": "usd"
    },
    "description": "Payout to connected account"
  }'
```

### Verify the balance

Check your updated balance after creating your outbound payment.

```curl
curl https://api.stripe.com/v2/money_management/financial_accounts/{{FINANCIALACCOUNTID_ID}} \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview"
```

## Enable crypto wallet transfers

Allow connected accounts to transfer USDC to external crypto wallets they own.

### Create a crypto wallet payout method

For first-time transfers, create a payout method for the external wallet.

Supported networks include:

- Arbitrum
- Avalanche C-Chain
- Base
- Ethereum
- Optimism
- Polygon
- Solana
- Stellar
- Tempo

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_setup_intents \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  --json '{
    "payout_method_data": {
        "type": "crypto_wallet",
        "crypto_wallet": {
            "address": "0x1234567890abcdef1234567890abcdef12345678",
            "network": "polygon"
        }
    }
  }'
```

### Create an outbound transfer

Transfer USDC from the financial account to the crypto wallet.

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_transfers \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usdc"
    },
    "to": {
        "payout_method": "cwa_123",
        "currency": "usdc"
    },
    "amount": {
        "value": 1000,
        "currency": "usdc"
    }
  }'
```

## Issue cards

Issue virtual and physical prepaid debit cards funded with a USD backed stablecoin balance. This section uses v1 Stripe Issuing APIs, which are fully interoperable with the v2 APIs used elsewhere in this guide.

### Card configuration

| Configuration    | Value                              |
| ---------------- | ---------------------------------- |
| Card Product     | Business Prepaid Debit             |
| BIN Type         | Shared BIN                         |
| Sponsor Bank     | Lead Bank                          |
| Network          | VISA                               |
| Card Currency    | USD                                |
| Funding Model    | Pre-funded, Stablecoin-backed      |
| Wallet Type      | Custodial                          |
| Funding Currency | USDC                               |
| Funding Chain    | Base                               |
| Card Types       | Virtual, Physical, Digital Wallets |

### Enable the account to use Issuing

Add the account to Issuing, which enables you to create a `Cardholder` and `Card`.

We provide the platform program value after we onboard your platform.

```curl
curl https://api.stripe.com/v1/issuing/programs \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Version: 2026-03-25.preview; issuing_program_beta=v2" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d platform_program=iprg_123 \
  -d is_default=true
```

### Create a cardholder

Create a `Cardholder` object representing the individual or business entity.

**Requirements for individual cardholders:**

- First and last name (required for sanctions screening).
- Date of birth (reduces false positives for watchlist matches).
- Valid phone number or email (required for digital wallets).
- Authorized user terms acceptance.

```curl
curl https://api.stripe.com/v1/issuing/cardholders \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "name=Jenny Rosen" \
  --data-urlencode "email=jenny.rosen@example.com" \
  --data-urlencode "phone_number=+18008675309" \
  -d status=active \
  -d type=individual \
  -d "individual[first_name]=Jenny" \
  -d "individual[last_name]=Rosen" \
  -d "individual[dob][day]=1" \
  -d "individual[dob][month]=11" \
  -d "individual[dob][year]=1981" \
  -d "individual[user_terms_acceptance][lead][date]=1470266163" \
  -d "individual[user_terms_acceptance][lead][ip]=91.121.146.224" \
  -d "billing[address][line1]=Calle de la Paz 123" \
  -d "billing[address][city]=Cancun" \
  -d "billing[address][state]=Q.R." \
  -d "billing[address][postal_code]=77500" \
  -d "billing[address][country]=MX"
```

### Create a card

When creating virtual and physical cards, use the `financial_account_v2` parameter to specify which Connected Account’s financial account to withdrawn funds from. Standard physical card designs are available immediately, while custom card designs have an approximately 8 week lead time after you finalize the designs.

> This preview requires express or priority shipping as cards ship from the US.

```curl
curl https://api.stripe.com/v1/issuing/cards \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "cardholder={{ISSUINGCARDHOLDER_ID}}" \
  -d "financial_account_v2={{FINANCIALACCOUNTID_ID}}" \
  -d currency=usd \
  -d status=active \
  -d type=virtual
```

Both physical and virtual card PINs are set to a random value at creation. Manage and view PINs using the Stripe API and [Issuing Elements](https://docs.stripe.com/issuing/elements.md).

### Spending controls

You can configure stablecoin-backed card spend with [Spending controls](https://docs.stripe.com/issuing/controls/spending-controls.md).

Keep in mind the following:

- Spending controls are specified in USD
- We removed the Stripe default 500 USD per-day limit for this integration.
- An unconfigurable 10,000 USD per authorization limit applies.
- When spending limits overlap, the most restrictive control applies.

### Digital wallets

Enable cardholders to add cards to Apple Pay and Google Pay through manual provisioning or push provisioning.

**Manual provisioning requirements**: For manual provisioning, follow the [manual provisioning steps](https://docs.stripe.com/issuing/cards/digital-wallets.md#manual-provisioning).

**Push provisioning requirements**:

- Complete manual provisioning steps for the US market.
- Integrate with the Stripe mobile SDKs.
- Obtain Apple Pay entitlement from Apple (for Apple Pay).

Learn more about [digital wallet integration](https://docs.stripe.com/issuing/cards/digital-wallets.md).

## Monitor money movement

For stablecoin-backed Issuing, the [Transactions v2 API](https://docs.stripe.com/api/v2/money-management/transactions.md) contains all of the information about money movement, across card spend and transfers.

### Retrieve transaction details

```curl
curl https://api.stripe.com/v2/money_management/transactions/trxn_123 \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}"
```

You can find card spending in the [Received Debit v2 API](https://docs.stripe.com/api/v2/money-management/received-debits.md).

### Retrieve received debit details

```curl
curl https://api.stripe.com/v2/money_management/received_debits/rd_123 \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}"
```

## Testing

Test your integration in a [sandbox environment](https://docs.stripe.com/sandboxes.md) using your US platform account. [Contact Stripe sales](https://stripe.com/contact/embedded-finance) to configure your sandbox with stablecoin-backed Issuing.

Keep in mind the following:

- Sandboxes support both v1 and v2 API testing.
- Legacy test mode doesn’t support V2 APIs.

Refer to the [Issuing testing guide](https://docs.stripe.com/issuing/testing.md) to simulate purchases, refunds, and disputes.

## See also

- [Issuing webhook events](https://docs.stripe.com/api/events/types.md#event_types-issuing)
- [Issuing disputes](https://docs.stripe.com/issuing/purchases/disputes.md?dashboard-or-api=api)
