# Stablecoin-backed card issuing 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 card issuing is 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: - Your Stripe account must be [active](https://docs.stripe.com/get-started/account/activate.md) and [configured 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 <>" \ -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 <>" \ -H "Stripe-Version: 2026-03-25.preview" \ --json '{ "financial_account": "fa_connected_123", "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 <>" \ -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 prepaid card issuing | 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 <>" \ -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/connect/handle-verification-updates.md) 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/acct_connected_123 \ -H "Authorization: Bearer <>" \ -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. As soon as they’re active, the account is ready to proceed. ## 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 <>" \ -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 <>" \ -H "Stripe-Version: 2026-03-25.preview" \ --json '{ "from": { "financial_account": "fa_platform_123", "currency": "usd" }, "to": { "recipient": "acct_connected_123", "payout_method": "fa_connected_123", "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/fa_connected_123 \ -H "Authorization: Bearer <>" \ -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 <>" \ -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 <>" \ -H "Stripe-Version: 2026-03-25.preview" \ --json '{ "from": { "financial_account": "fa_connected_123", "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 "<>:" \ -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 "<>:" \ -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 "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "cardholder={{ISSUINGCARDHOLDER_ID}}" \ -d financial_account_v2=fa_connected_123 \ -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 <>" \ -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 <>" \ -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. Stripe can configure it with an identical Issuing configuration. 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)