Managing bank accounts and debit cards
Bank account formats by country
When attaching bank accounts to Custom accounts, your platform needs to provide an account_number
and, in some countries, a routing_number
. Every country has a slightly different format for these numbers, and entering them incorrectly causes subsequent payouts to fail.
Stripe recommends creating validations in your bank account entry forms that enforce the required formats based on the country of the Custom account’s bank. In some countries, separate pieces of information—for example, the bank code and branch codes—must be combined to create a routing number.
Managing bank accounts and debit cards
Express and Custom accounts have an external_accounts
property: a list of all bank accounts and debit cards associated with the Stripe account. Any external account is a possible destination for funds.
Platforms can view the external accounts for its connected Express accounts. Platforms can update the external accounts for its Custom accounts.
{ ... "external_accounts": { "object": "list", "has_more": false, "url": "/v1/accounts/acct_14qyt6Alijdnw0EA/external_accounts", "data": [ { "id": "ba_18u1IUJ6m0aiknMBHFQaTWOj", "object": "bank_account", "account": "acct_18rsqhJ6m0aiknMB", "account_holder_name": "Jane Austen", "account_holder_type": "individual", "bank_name": "STRIPE TEST BANK", "country": "US", "currency": "usd", "default_for_currency": false, "fingerprint": "sSZ2yLp0EZTH17cF", "last4": "6789", "metadata": { }, "routing_number": "110000000", "status": "new" }, {...}, {...}, ], ... }
Destination accounts are added via the external_accounts
parameter when creating or updating Custom accounts. The value should be a bank account or debit card token returned from Stripe.js. Alternatively, you can provide a hash of the bank account details, but using Stripe.js is preferred as it prevents sensitive data from hitting your server.
When using debit cards as a payout destination, the following restrictions apply:
- Must be a non-prepaid U.S. Visa, Mastercard, or Discover
- Limited to 9,999 USD per payout on Instant Payouts
- Generally limited to 3,000 USD per payout otherwise
Also, Stripe can’t perform a negative payout against a debit card to correct a negative Stripe account balance.
Managing multiple bank and debit accounts
By default, providing a new value for external_accounts
while updating a Custom account replaces the existing account with the new one. To add additional bank accounts or debit cards to a connected account, use the Bank Account and Card creation API endpoints.
When working with multiple currencies, Stripe automatically sends payouts to an associated bank account or debit card for its currency to avoid exchange fees. When there are multiple accounts available for a given currency, Stripe uses the one set as default_for_currency
.
Using Financial Connections
You can also optimize Connect payouts for Custom accounts by using Financial Connections to let your users share their third-party bank account data.
Financial Connections enables you to instantly collect tokenized account and routing numbers to facilitate payouts for your connected accounts, helping you in the following ways:
- Increase onboarding conversion by eliminating the need for your connected accounts to leave your website or application to locate their account and routing numbers.
- Reduce first payout failure rates by eliminating errors that result from manual entry of account and routing numbers.
- Ensure you don’t need to store sensitive data such as account and routing numbers on your server.
- Save development time by eliminating the need for you to build bank account form validation when your connected accounts enter their bank account details.
Optionally, you can request permission from your connected account to retrieve additional data on their Financial Connections account. Consider accessing balances data and ownership information to optimize your onboarding and platform experience. Retrieving additional data on an account helps you in the following ways:
- Mitigate fraud when onboarding connected accounts by verifying the ownership details of their bank account, such as the name and address of the account holder.
- Underwrite connected accounts for financial services that you might offer on your platform with balances and transactions data.
To learn more about additional features and benefits, see Financial Connections.