# Stablecoin-backed Issuing cards with Connect

Learn how to issue virtual or physical prepaid cards for connected accounts, backed by stablecoin balances.
Available in: US
You can enable spending backed by stablecoins on your Connect platform to:

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

> Stablecoin-backed Issuing cards are currently in [private preview](https://docs.stripe.com/release-phases.md) and only available to platforms based in the United States (US). 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.
- Connected accounts must be based in a market approved during platform onboarding. During private preview, connected accounts can be based in the following markets:

- AR
- BR
- CO
- MX

## 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)
