Set up an Issuing and Connect integration
Learn how to issue cards on connected accounts.
Stripe Connect provides Stripe Issuing platforms with foundational infrastructure to manage funds flows and compliance requirements. In a Connect integration, the platform account makes API calls on behalf of the connected accounts.
When to use Connect
If you need to issue cards for users that aren’t directly employed by your business, set up Stripe Connect for your Issuing integration. For example, a business building a new expense management product for small businesses can integrate with Connect. Each small business that uses the expense management product is set up as a connected account.
After you set up and onboard connected accounts, your customers can support their card spend by funding their Issuing balance from their external bank account (or, in certain cases, your customers’ spend can be supported by your platform Issuing balance). Your customers can also create cardholders and cards and set up spending controls.
Create connected accounts with Issuing capabilities
To issue cards, each business entity must use a connected account. Issuing only supports connected accounts that don’t use a Stripe-hosted Dashboard, and where your platform is responsible for requirements collection and loss liability, also known as a Custom connected account. Learn how to create connected accounts that work with Issuing. All accounts must request the card_
and transfers
account capabilities.
Beta
Enabling Issuing on non-custom connected accounts is a new feature. Email issuing-beta-feedback@stripe.com to request access.
Create an account
Create a new connected account through the Dashboard or using the API with create Account.
Start with test mode accounts
Test mode connected accounts can’t receive or spend real money and can’t be used in live mode, but they’re identical in configuration and functionality.
Enable Issuing on existing connected accounts
If your platform already has a Connect integration with connected accounts, you can request Issuing on those accounts through the Dashboard or through the API.
Issuing and Treasury accounts
If your platform already has connected accounts, make sure they have a supported configuration for Issuing or Treasury. Issuing only supports connected accounts that don’t use a Stripe-hosted Dashboard, and where your platform is responsible for requirements collection and loss liability, also known as a Custom connected account. If this isn’t the case, you must create new accounts to use Issuing or Treasury. You can see your existing account’s configuration on the Connect accounts page in your Dashboard.
You can also use the API to retrieve the account information and verify that the capabilities
property has the Issuing capability requested. The capability won’t be active until all the requirements are fulfilled.
{ "object": "list", "data": [ { "id": "acct_1234", "object": "account", ... "capabilities": { "card_issuing": "inactive", "transfers": "active", }, ... "controller": { "stripe_dashboard": { "type": "none" }, "fees": { "payer": "application" }, "losses": { "payments": "application" }, "is_controller": true, "type": "application", "requirement_collection": "application" }, }, ... ] }
Start the identity verification process
After you create a connected account, you need to provide more information about the account holder. The capability object has a requirements
hash that contains currently_
identity verification requirements. The user must provide the details itemized in the requirements
hash to enable Issuing capabilities.
If you create an Account object in test mode and want to bypass onboarding requirements to test functionality, use the Accounts update API to provide test values that fulfill all the requirements.
Depending on the business type, the user provides details about the individual, company, non-profit organization, or government entity (Stripe Treasury doesn’t support government entities).
Choose one of the following onboarding options:
Collect and verify required information
When you create a connected account and request capabilities, the response returns a list of all required information. To see the requirements specific to a capability, retrieve the account capability and look at requirements.
.
Note
If you don’t intend to allow your connected accounts to pay out an Issuing balance to an external account, then you can ignore requirements past_due for external_
.
Here are the requirements to activate the card_
capability:
FIELD | PARAMETER | ADDITIONAL NOTES |
---|---|---|
Legal name | company. | |
Business address | company. | The address can’t be a P.O. box, a Highway Contract (HC) box, or a private mailbox. It must be in the US for US-based accounts, UK for UK-based accounts, or a European country for Europe-based accounts. |
Business type | business_ | The business type can be company, individual, or non-profit. |
Company tax ID | company. | |
Phone | company. | |
Merchant category code | business_ | |
URL | business_ | If the user doesn’t have a URL, you can provide the business_ instead. |
Estimated worker count | business_ | An estimated upper bound of your workers (employees, contractors, vendors, and so on) currently working for the business. |
Annual revenue | business_ | The user’s gross annual revenue for its preceding fiscal year. |
Terms of service |
| Record the connected accounts accepting the Issuing terms of service. |
Representatives and beneficial owners
Companies and non-profit organizations require additional onboarding information for representatives (that is, directors [relationship.
] and executives [relationship.
]), and any beneficial owner that owns more than 25% of the company (relationship.
). Each connected account must have at least one representative, who’s usually an executive or director, depending on where the account is located. They must be able to certify that the information provided is correct. Beneficial owners aren’t required.
Learn more about beneficial owners, representatives, and directors.
FIELD | PARAMETER | ADDITIONAL NOTES |
---|---|---|
Legal name | first_ , last_ | |
Date of birth | dob. , dob. , dob. | |
Residential address | address. | The address can’t be a P.O. box, a Highway Contract (HC) box, or a private mailbox. It must be in the US for US-based accounts. |
email | ||
Title | title | Examples for the title include CEO or Director. |
Phone | phone | |
US Tax ID or last 4 digits of SSN | id_ | Accounts of US-based platforms must provide a social security number, and non-US tax ID numbers or ID documents aren’t accepted as a substitute. You can provide either the full nine-digit social security number (id_ ) or the last four digits (ssn_ ) initially. If verification with the last four digits is unsuccessful, then the full nine-digit number is required. |
ID document scan | verification. | Provide an identity document if the full nine-digit social security number can’t be verified. See the acceptable verification documents by country. |
Handle new requirements coming due and changes to the capability status
Sometimes after providing all required information, an account might need to provide additional details or documents. These new requirements appear in the requirements.eventually_due array or in requirements.currently_due. Set up your integration to listen for changes to account requirements by using webhooks.
If the capability is already active
and the account doesn’t satisfy new requirements due on that capability before the current deadline, the capability becomes inactive
until the requirements are satisfied.
Document uploads
If an account’s information can’t be verified, Stripe might require a document to verify the identity of a person (for example, a Passport) or to verify information about the legal entity (for example, a letter from the tax authority). To satisfy document requirements, platforms can send the user to Connect Onboarding (where they’ll be prompted to upload the document), or collect the document from the account in another interface and upload it through the API.
Failure to verify identity within 29 days of the initial application
After an account submits all the required information for Issuing and accepts the Issuing terms of service, Stripe considers the application complete. If we can’t verify an account’s information, the capability remains inactive
until the account provides additional information or uploads a document.
If the account remains inactive
29 days after completing the application, you must send an email notice to the account informing them that we couldn’t verify their identity (see the template).
Stripe monitors for completed applications with unverified identities, and takes the following action after 29 days in live mode and after 1 hour in test mode:
- Generates an account notice
- Clears the Issuing terms of service acceptance hash so terms acceptance becomes a
currently_
requirementdue
You can submit a new application at any time by updating the business information and recording a new acceptance of Issuing’s terms.
Stripe recommends that you present the terms of service as the last step of onboarding, which allows you to track the timing of application completion by referring to the term’s acceptance date.
Terms of service violations
If Stripe identifies a connect account that has violated Stripe’s terms of service, Stripe sets the Issuing capability on the account to inactive
, deactivates any cards, and notifies the account (see the email template). This might happen when an account’s cards are used in relation to prohibited or restricted businesses, such as illegal activities, gambling, firearms, adult content, or cryptocurrencies, or in relation to prohibited activities for Issuing , such as consumer spending, primarily international use, lending, or other abusive or noncompliant use.
Accounts inactive for more than 395 days
Stripe disables issuing on accounts that haven’t completed any card transactions in the past 13 months (395 days). For accounts with additional capabilities, Stripe only disables Issuing if there have also been no payments or Treasury transactions in the prior 395 days, and the Treasury balance is 9.99 USD or less. When Issuing is disabled for inactivity, the Connect account’s card_issuing capability status changes to inactive
and the capability requirements show a disabled_reason of rejected.
. Learn more about managing inactive accounts with Issuing.
Create cardholders and cards
A Cardholder object represents an individual or business entity that you can issue cards to. Each cardholder needs to be associated with a connected account to be issued a virtual or physical card. One connected account can have many cardholders.
Learn more about Cardholders and cards.
Add funds
The Issuing balance is separate from the connected account’s main balance. When issued cards are used for transactions, they draw from the Issuing balance.
Before an issued card can be used for transactions, you must first allocate funds to the connected account’s Issuing balance associated with the card. An Issuing Balance holds funds reserved for the card and is safely separated from earnings, payouts, and funds from other Stripe products. Learn how to fund connected accounts for Issuing.
Use the Dashboard for Issuing with Connect
View the connected accounts on your platform and create new accounts from the Connect page in the Dashboard. An account might appear as restricted
in the Dashboard if requirements are past_
for any of the requested capabilities (including transfers
). You can ignore this if card_
is active.
You can also do the following from the dashboard:
- View account activity for a selected account.
- Edit business and personal details for a selected account.
- Create cardholders, cards, or test authorizations on the account. To do so, click the overflow menu (), select View Dashboard as (account name), and then navigate to Card issuing.
- View program details for a selected account. Follow the above steps to View Dashboard as (account name), then navigate to Settings, the Issuing section, and click Card programs.
You can also access the Issuing page for a connected account directly by navigating to this URL and replacing {{CONNECT_
with the appropriate value: https://dashboard.
As the platform, only you can view the Dashboard on behalf of your connected accounts. Your connected accounts won’t have a Stripe username or password, or access to the Dashboard.