Testing Stripe Connect
Before going live, test your Connect integration for account creation, identity verification, and payouts.
Use testing to make sure your Connect integration handles different flows correctly. Use test mode to simulate live mode while taking advantage of Stripe-provided special tokens to use in your tests. Take a look at our payments testing guide for more information on testing charges, disputes, and so on.
Create test accounts
You can create multiple test accounts and use any account type or controller properties you might need (for example, representing multiple countries).
You can create test accounts using the Accounts API or in the Stripe Dashboard.
Use 000-000
as the SMS code when prompted for test accounts.
Test the OAuth flow
You can test your OAuth integration with connected accounts that use a Stripe-hosted dashboard using your test mode client_
.
Your test mode client_
is ca_
. You can find this in your Connect OAuth settings.
Your test mode client_
allows you to:
- Set your
redirect_
to a non-HTTPS URLuri - Set your
redirect_
to localhosturi - Force-skip the account form instead of having to fill out an entire account application (Stripe Dashboard accounts only)
- Get test access tokens for connected accounts
To test the OAuth flow, create a new account after clicking the OAuth link. You can also test connecting an existing Stripe account only if the email is different from your platform account.
Identity verification
After creating a test connected account, you can use tokens to test different verification statuses to make sure you’re handling different requirements and account states. You can use the following tokens to test verification with test accounts.
Test dates of birth
Use these dates of birth (DOB) to trigger certain verification conditions.
DOB | Type |
---|---|
1901-01-01 | Successful verification. Any other DOB results in unsuccessful verification. |
1902-01-01 | Successful, immediate verification. The verification result is returned directly in the response, not as part of a webhook event. |
1900-01-01 | This DOB triggers an Office of Foreign Assets Control (OFAC) alert. |
Test addresses
Use these addresses for line1
to trigger certain verification conditions. You must pass in legitimate values for the city
, state
, and postal_
arguments.
Token | Type |
---|---|
address_ | Successful verification. |
address_ | Unsuccessful verification. |
address_ | Unsuccessful verification from partial address match. |
Test personal ID numbers
Use these personal ID numbers for individual.id_number or the id_number attribute on the Person
object to trigger certain verification conditions.
Number | Type |
---|---|
000000000 | Successful verification. 0000 also works for SSN last 4 verification. |
111111111 | Unsuccessful verification (identity mismatch). |
222222222 | Successful, immediate verification. The verification result is returned directly in the response, not as part of a webhook event. |
Test identity documents
For testing, use test images or file tokens instead of uploading your own test IDs. For details, refer to Uploading a file.
Test document images
You can use a verified image that causes the user to be automatically marked verified
. You can use an unverified image that causes the user to be automatically marked unverified
.
Test file tokens
Use these file tokens to trigger certain identity verification conditions.
Token | Type |
---|---|
file_ | Uses the verified image and marks that document requirement as satisfied. |
file_ | Uses the unverified image and marks that document requirement as not satisfied. |
Business information verification
Business address validation
In some countries, the business address associated with your connected account must be validated before charges, payouts, or both can be enabled on the connected account.
Test business addresses
Use these addresses for line1
to trigger certain validation conditions. You must pass in legitimate values for the city
, state
, and postal_
arguments.
Make sure you start with an address token that has the least permissive validation condition you want to test for. This is because you can’t use an address token that has a more restrictive validation condition than the previous token used. For example, if you provided address_
to have both charges and payouts enabled, you can’t disable payouts or charges afterward by changing the token to an invalid one. You can work around this by creating a new account with the relevant token.
Token | Type |
---|---|
address_ | Both charges and payouts are enabled on the account. |
address_ | Only charges are enabled on the account. Since validation failed on the line1 attribute, it becomes listed again in the requirements hash. |
address_ | Neither charges nor payouts are enabled on the account. Since validation failed, the address attributes become listed again in the requirements hash. |
Test business tax IDs
Use these business tax ID numbers for company.tax_id to trigger certain verification conditions. The test behavior might change depending on the Connected Account countries and the regulations in those countries. Depending on the country’s regulation, a valid tax document can mark tax ID verified in these countries.
Number | Type |
---|---|
000000000 | Successful verification. |
000000001 | Successful verification as a non-profit. |
111111111 | Unsuccessful verification (identity mismatch). |
111111112 | Unsuccessful verification (tax ID not issued). |
222222222 | Successful, immediate verification. The verification result is returned directly in the response, not as part of a webhook event. |
Test directorship verification
Stripe performs directorship verification by comparing the list of directors on the Account
object against a list retrieved from local registries. If the country requires it, you can trigger verification for an Account
object by using these tokens for the person.first_name attribute and setting the person.relationship.director attribute to true.
Token | Type |
---|---|
mismatch_ | Unsuccessful verification of director due to a mismatched name. This can trigger a verification_ verification error. |
missing_ | Unsuccessful verification due to directors missing on the account. This can trigger a verification_ verification error. |
extraneous_ | Unsuccessful verification due to too many directors on the account. This can trigger a verification_ verification error. |
The verification errors can trigger if multiple directors on the Account
object use these magic tokens.
Test company name verification
Trigger company name verification for an Account
object by using this token for the company.name attribute.
Token | Type |
---|---|
mismatch_ | Unsuccessful verification due to a mismatched business name. |
disallowed_ | Unsuccessful verification due to a generic or well-known business name. |
match_ | Successful verification of the business name. |
match_ | Unsuccessful verification due to a business name discrepancy. |
Test statement descriptor verification
Trigger statement descriptor verification for an Account
object by using this token for the settings.payments.statement_descriptor attribute.
Token | Type |
---|---|
mismatch | Trigger an invalid_ verification error. |
disallowed | Trigger an invalid_ verification error. |
Trigger statement descriptor prefix verification for an Account
object by using this token for the settings.payments.statement_descriptor_prefix attribute.
Token | Type |
---|---|
mismatch | Trigger an invalid_ verification error. |
disallowed | Trigger an invalid_ verification error. |
Test business URL verification
Trigger URL verification for an Account
object by using this token for the business_profile.url attribute.
Token | Type |
---|---|
https://disallowed. | Trigger an invalid_ verification error. |
https://geoblocked. | Trigger an invalid_ verification error. |
https://problem. | Trigger an invalid_ verification error. |
https://missing. | Trigger an invalid_ verification error. |
https://mismatch. | Trigger an invalid_ verification error. |
https://passwordprotected. | Trigger an invalid_ verification error. |
https://accessible. | Trigger a successful validation of the URL. |
https://underconstruction. | Trigger an invalid_ verification error. |
https://inaccessible. | Trigger an invalid_ verification error. |
Test Doing Business As (DBA) verification
Trigger DBA verification for an Account
object by using this token for the business_profile.name attribute.
Token | Type |
---|---|
disallowed_ | Trigger an invalid_ verification error. |
invalid_ | Trigger an invalid_ verification error. |
Test product description verification
Trigger product description verification for an Account
object by using this token for the business_profile.product_description attribute.
Token | Type |
---|---|
require_ | Trigger an invalid_ verification error. |
Test capability disabled reasons
Trigger assignment of a specific requirements.disabled_reason to all of an Account
object’s inactive Capability
objects by using this token for the account’s business_profile.url attribute.
Token | Type |
---|---|
https://inactivity. | Set an account with no recent activity as inactive and pause all verifications for it. Set the disabled reason for any inactive capabilities to paused. (rejected. for API versions prior to 2024-06-20 ). |
Trigger or advance verification
Trigger cards
Use these card numbers to trigger various conditions when you’re testing both requirements and tiered verification. For the trigger actions to work, you must use these cards with a Connect charge by setting on_behalf_of, or creating the charge directly on the connected account.
Number | Token | Type |
---|---|---|
4000000000004202 | tok_ | Changes the next set of eventually due requirements to currently due. |
4000000000004210 | tok_ | Triggers a charge block. |
4000000000004236 | tok_ | Triggers a payout block. |
Trigger next requirements
Live mode can require additional verification information when a connected account processes a certain amount of volume. This card sets any additional verification information to be required immediately. If no additional information is required, nothing appears.
Trigger a charge or payout block
If required information isn’t provided by the deadline, Stripe disables the connected account’s charges or payouts. These cards disable the connected account and move any currently due requirements to overdue. These cards have no effect until an account provides the initial information that’s required to enable charges and payouts.
Trigger bank account ownership verification
Connected accounts in the United States and India are subject to Bank account ownership verification. You can complete this verification by uploading supporting documents with the Connect Dashboard or with the API through the documents[bank_account_ownership_verification] hash.
In test mode, you can simulate the US bank account ownership verification process. Use the following test bank account numbers to trigger the verification process. One number presumes successful verification and the other prompts you to upload test images or file tokens to complete the verification process. These test accounts are only available for US accounts.
Routing | Account | Type |
---|---|---|
110000000 | 000999999991 | Triggers and completes the bank account ownership verification process after a short delay |
110000000 | 000999999992 | Private preview Triggers the bank account ownership verification process after a short delay and requests for document upload |
Simulate requirements
If your platform has connected accounts in different countries or plans to, you might need to verify a person’s address as well as their identity (depending on the country). Stripe provides a sample date of birth (DOB) and sample addresses to test for this requirement.
Information provided | Person verification status | requirements. |
---|---|---|
Verified date of birth and verified address | Verified | None |
Verified date of birth and unverified address | Unverified | verification. |
Unverified date of birth and verified address | Unverified | verification. |
Unverified date of birth and unverified address | Unverified | verification. , verification. |
Add funds to Stripe balance
To test adding funds to your Stripe balance from a bank account in the Dashboard, enable test mode and select the desired test bank account in the drop-down menu within the Add to balance dialog. You can simulate success or failure due to insufficient funds.
To test adding funds in the API, use the following test bank tokens as the source while in test mode. Each token simulates a specific kind of event.
Token | Type |
---|---|
btok_ | Successful |
btok_ | Unsuccessful with a no_ code |
btok_ | Unsuccessful with an account_ code |
btok_ | Unsuccessful with an insufficient_ code |
btok_ | Unsuccessful with a debit_ code |
btok_ | Unsuccessful with an invalid_ code |
Payouts
Use the following test bank and debit card numbers to trigger certain events during payout testing. You can only use these values in test mode with test secret keys.
Test mode payouts simulate a live payout but aren’t processed with the bank. Test mode accounts with Stripe Dashboard access always have payouts enabled, as long as valid external bank information and other relevant conditions are met, and never requires real identity verification.
Note
You can’t use test bank and debit card numbers in the Stripe Dashboard on a live mode connected account. If you’ve entered your bank account information on a live mode account, you can still use test mode, and test mode payouts will simulate a live payout without processing actual money.
Bank numbers
Use these test bank account numbers to test payouts. You can only use them with test secret keys.
Debit card numbers
Use these test debit card numbers to test payouts to a debit card. These can only be used with test secret keys.