Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
Overview
Use for your business
Financial accounts
CardsInstant currency conversion
Global Payouts
Capital
Embed in your platform
Start an integration
Financial Accounts for platforms
Issuing cards
    Overview
    How Issuing works
    Global availability
    Manage fraud
    Cards
    Choose your card type
    Virtual cards
    Physical cards
    Manage cards
    Digital wallets
    Replacement cards
    Card programmes
    Programme management
    Processor-only Issuing
    Customise your card programme
    Add funds to your card programme
    Credit Consumer Issuing
    Stablecoin-backed issuing with Connect
    Controls
    Spending controls
    Advanced fraud tools
    3DS
    Fraud challenges
    Real-time authorisations
    PIN management
    Issuing Elements
    Token Management
    Funding
    Balance
    Post-fund your integration with Stripe
    Post-fund your integration with Dynamic Reserves
    Purchases
    Authorisations
    Transactions
    Disputes
    Testing
    Merchant categories
    ATM Usage
    Enriched merchant data
    Issuing with Connect
    Set up an Issuing and Connect integration
    Update terms of service acceptance
    Connect funding
    Connected accounts, cardholders, and cards
    Inactive connected accounts offboarding
    Embed card management UI
    Credit
    Overview
    Set up connected accounts
    Manage credit terms
    Report other credit decisions and manage AANs
    Report required regulatory data for credit decisions
    Manage account obligations
    Test credit integration
    Additional information
    Choose a cardholder type
    Customer support for Issuing and Treasury
    Issuing watchlist
    Marketing guidance (Europe/UK)
    Product and marketing compliance guidance (US)
Capital for platforms
United States
English (United Kingdom)
HomeMoney managementIssuing cards

Set up an Issuing and Connect integration funded with stablecoinsPrivate preview

Private preview

Stablecoin-backed wallets are currently in private preview.

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.

Availability

  • Your Connect platform must be a United States-based business.
  • Connected accounts must be based in one of the following countries: Argentina and Mexico

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.
  2. 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.
  3. The final step is to enable connected account spending using any of these methods:
    • Prepaid debit cards in USD-using Issuing Cardholders API and Issuing Cards API
    • Crypto wallet transfers in USDC—using Outbound Setup Intents v2 API and Outbound Transfers v2 API
    • Payouts to local bank accounts in USD, MXN, or EUR-using Outbound Setup Intents v2 API and Outbound Transfers v2 API

Before you begin

  • An active Stripe account configured as a platform
  • A US-based legal entity for the platform account.

Fund your platform financial account

Your platform’s financial account is used to disperse funds to connected accounts to fund their account’s card spend.

Retrieve your financial account id

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v2/money_management/financial_accounts \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}"

Create a financial address using the Financial Address v2 API

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/money_management/financial_addresses \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --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.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -G https://api.stripe.com/v2/money_management/financial_addresses \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ -d "include[0]"="credentials.us_bank_account.account_number"

You can monitor incoming funds using the Transactions v2 API and check your financial account balance using the Financial Accounts v2 API.

Onboard connected accounts

Regional considerations
Argentina
Mexico

Only connected accounts in Argentina and Mexico are currently supported.

Create a connected account

Create a v2 Account with storer and card creator capabilities. Learn more about Account capabilities.

ConfigurationDescription
storer.holds_currencies.usdcEnables stablecoin storage features
storer.outbound_transfer.crypto_walletAllows transfers to external wallets
card_creator.commercial.lead.prepaid_cardEnables prepaid card issuing
Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --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/KYB

Review and fulfill the requirements for the connected account. For more information, read more about account creation

After fulfilling the requirements, Stripe and Bridge might take some time to verify the information and activate the configuration. Monitor the account’s progress using webhooks or by retrieving the configuration status with the Retrieve an Account v2 API.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -G https://api.stripe.com/v2/core/accounts/acct_connected_123 \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ -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 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.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/money_management/financial_accounts \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --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

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/money_management/outbound_payments \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --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

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v2/money_management/financial_accounts/fa_connected_123 \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}"

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.

Note

Supported networks are Arbitrum, Avalanche C-Chain, Base, Ethereum, Optimism, Polygon, Solana, Stellar.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/money_management/outbound_setup_intents \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --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.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/money_management/outbound_transfers \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --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

ConfigurationValue
Card ProductBusiness Prepaid Debit
BIN TypeShared BIN
Sponsor BankLead Bank
NetworkVISA
Card CurrencyUSD
Funding ModelPre-funded, Stablecoin-backed
Wallet TypeCustodial
Funding CurrencyUSDC
Funding ChainBase
Card TypesVirtual, Physical, Digital Wallets

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.
Command Line
cURL
No results
curl https://api.stripe.com/v1/issuing/cardholders \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Account:
{{CONNECTED_ACCOUNT_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.

Note

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

Command Line
cURL
No results
curl https://api.stripe.com/v1/issuing/cards \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Account:
{{CONNECTED_ACCOUNT_ID}}
"
\ -d cardholder=ich_123 \ -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.

Spending controls

You can configure stablecoin-backed card spend with Spending controls.

Caution

  • 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.

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.

Monitor money movement

For stablecoin-backed Issuing, the Transactions v2 API contains all of the information about money movement, across card spend and transfers.

Retrieve transaction details

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v2/money_management/transactions/trxn_123 \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ -H "Stripe-Context:
{{CONTEXT}}
"

You can find card spending in the Received Debit v2 API.

Retrieve received debit details

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v2/money_management/received_debits/rd_123 \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ -H "Stripe-Context:
{{CONTEXT}}
"

Testing

Test your integration in a sandbox environment using your US platform account. Stripe can configure it with an identical Issuing configuration.

Note

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

Refer to the Issuing testing guide to simulate purchases, refunds, and disputes.

See also

  • Issuing webhook events
  • Issuing disputes
Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc