Sign in
Create account
Sign in
Home
Payments
Business operations
Financial services
Developer tools
Security
All products
Home
Payments
Business operations
Home
Payments
Business operations
Financial services
Developer tools
Support
Overview
Overview
Global Issuing
Getting started
Creating cards
Cards
Virtual cards
Physical cards
Digital wallets
Controls
Spending controls
Real-time authorizations
Fraud protection
3D Secure
Funding
Balance
Connect
Purchases
Authorizations
Transactions
Disputes
Testing
Merchant categories
issuing
·
HomeFinancial servicesCard creation

Issuing with Connect

Learn how to issue cards on connected accounts.

Connect allows you to create separate Stripe accounts for each of your customers, with each account having a separate balance. Cards and cardholders are created under these separate accounts. Platform users can’t fund cards on their connected accounts with the platform’s Issuing Balance, although a platform pays for their connected accounts’ costs, such as card creation.

Create a Connect account

Create a Connect account by following the custom Connect account creation guide, and request the card_issuing, transfers, and card_payments capabilities.

Read more about requesting capabilities.

Terminal
curl https://api.stripe.com/v1/accounts \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d "type"="custom" \ -d "capabilities[transfers][requested]"="true" \ -d "capabilities[card_payments][requested]"="true" \ -d "capabilities[card_issuing][requested]"="true"

Use the API to create Connect accounts for Issuing. While it’s technically possible to create Connect accounts from the dashboard, some Issuing features are not yet accessible from the dashboard.

Required verification information

When you create connected accounts and request capabilities, the response returns a list of requirements. The current requirements to activate the card_issuing capability are:

Legal entity

FieldParameterNotes
Legal namecompany.name
Business addresscompany.address.*
Business typebusiness_typecompany, individual, or non_profit
Company tax IDcompany.tax_id
Merchant category codebusiness_profile.mcc
URLbusiness_profile.urlIf the user does not have a URL, you can provide business_profile.product_description instead.
Terms of servicesettings.card_issuing.tos_acceptance.ip settings.card_issuing.tos_acceptance.dateRecord the Connected Accounts accepting the Issuing terms of service

Representative & Owner

Required for representatives (relationship.representative) and all beneficial owners that own more than 25% of the company (relationship.owner).

FieldParameterNotes
Legal namefirst_name last_name
Date of birthdob.day dob.month dob.year
Residential addressaddress.*
Tax IDid_numberSSN for US users, or ID number as appropriate for the person’s country
EmailemailFor representative only.
ID Document Scanverification.documentIf all other methods of identification fail, this might help Stripe resolve the review process.

The representative is usually an executive or director, depending on where the account is located. They must be able to certify that the information provided is correct. See also beneficial owner.

For card_payments read about the US-specific requirements.

Terminal
curl https://api.stripe.com/v1/accounts/:account_id \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d "business_type"="company" \ -d "business_profile[mcc]"=5999 \ -d "business_profile[url]"="https://www.wesellsocks.com" \ -d "company[name]"="We Sell Socks, Inc." \ -d "company[tax_id]"="11-3456789" \ -d "company[address][line1]"="185 Berry Street" \ -d "company[address][city]"="San Francisco" \ -d "company[address][state]"="CA" \ -d "company[address][postal_code]"=94110 \ -d "company[address][country]"="US" curl https://api.stripe.com/v1/accounts/:account_id/persons \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d "first_name"="Joe" \ -d "last_name"="Smith" \ -d "dob[day]"=12 \ -d "dob[month]"=11 \ -d "dob[year]"=1978 \ -d "address[line1]"="185 Berry Street" \ -d "address[city]"="San Francisco" \ -d "address[state]"="CA" \ -d "address[postal_code]"=94110 \ -d "address[country]"="US" \ -d "id_number"=123456789 \ -d "email"="joe@wesellsocks.com" \ -d "relationship[representative]"="true" \ -d "relationship[owner]"="true" \ -d "relationship[percent_ownership]"=25.0 curl https://api.stripe.com/v1/accounts/:account_id \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d "company[owners_provided]"="true"

Making requests on behalf of Connected accounts

After you create the Connect account, all API calls you execute on behalf of this account must have the CONNECTED_ACCOUNT_ID header passed as part of the request.

Read more about Connect authentication.

Terminal
curl https://api.stripe.com/v1/issuing/cardholders \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \ -d "name"="Jenny Rosen" \ -d "email"="jenny.rosen@example.com" \ -d "phone_number"=+18008675309 \ -d "status"="active" \ -d "type"="individual" \ -d "billing[address][line1]"="1234 Main Street" \ -d "billing[address][city]"="San Francisco" \ -d "billing[address][state]"="CA" \ -d "billing[address][postal_code]"=94111 \ -d "billing[address][country]"="US"

Add funds

To spend money with issued cards, you must first allocate funds to the Issuing balance on each of your connected accounts. This balance represents pooled funds reserved for Issuing, and is safely separated from your earnings, payouts, and funds from other Stripe products.

Before you can top up a connected account from your user’s bank account, you must first collect and verify their bank account. Stripe provides the option of collection via Stripe.js with verification using microdeposits.

  • Integrate Plaid into your application.
  • Call plaidClient.createStripeToken via Plaid’s API to receive a Stripe bank account token (e.g., btok_1FhKKBIzqKMxmFpfAOqBQSrJ).
  • Create a Source on the connected account. The bank account owner’s information must be included, and should match the connected account’s ownership information. Once your source is created, its status is set to chargeable, and it can be used for top ups.
Terminal
curl https://api.stripe.com/v1/sources \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \ -d "type"="ach_debit" \ -d "currency"="usd" \ -d "token"="btok_4XNshPRgmDRCVi" \ -d "owner[address][line1]"="510 Townsend Street" \ -d "owner[address][city]"="San Francisco" \ -d "owner[address][state]"="California" \ -d "owner[address][country]"="US" \ -d "owner[email]"="jenny.rosen@example.com" \ -d "owner[name]"="Jenny Rosen" \ -d "owner[phone]"=5554443333

Top up connected account

Fund the Issuing balance on your connected account with top-ups by passing in the source that was made and setting the destination_balance to issuing.

Terminal
curl https://api.stripe.com/v1/topups \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \ -d "amount"=2000 \ -d "currency"="usd" \ -d "description"="Top-up for week of May 31" \ -d "destination_balance"="issuing" \ -d "statement_descriptor"="Top-up" \ -d "source"="src_18eYalAHEMiOZZp1l9ZTjSU0"
Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.
You can unsubscribe at any time. Read our privacy policy.
On this page
Create a Connect account
Required verification information
Add funds