Connect
Bank accounts

Managing bank accounts and debit cards

Managing bank accounts and debit cards on your Custom connected accounts

Bank account formats by country

When attaching bank accounts to Custom accounts, platforms need 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.

We recommend 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.

Bank Account Information Example Data
BSB 123456 (6 characters)
Account Number 12345678 (5–9 characters)
Bank Account Information Example Data
IBAN AT611904300234573201
Bank Account Information Example Data
IBAN BE12345678912345
Bank Account Information Example Data
Bank Code 123 (3 characters)
Branch Code 4567 (4 characters, with 1 optional check digit)
Account Number Format varies by bank

When creating a bank via the API, combine the bank code and branch code to create a full routing number (e.g., 1234567).

Bank Account Information Example Data
IBAN BG80BNBG96611020345678 (22 characters)
Bank Account Information Example Data
Transit Number 12345
Institution Number 678
Account Number Format varies by bank

When creating a bank via the API, combine the transit and institution numbers to create a full routing number (e.g., 12345678).

Bank Account Information Example Data
IBAN CY17002001280000001200527600 (28 characters)
Bank Account Information Example Data
IBAN CZ6508000000192000145399 (24 characters)
Bank Account Information Example Data
IBAN DK5000400440116243
Bank Account Information Example Data
IBAN EE382200221020145685 (20 characters)
Bank Account Information Example Data
IBAN FI2112345600000785
Bank Account Information Example Data
IBAN FR1420041010050500013M02606 (27 characters)
Bank Account Information Example Data
IBAN DE89370400440532013000 (22 characters)
Bank Account Information Example Data
IBAN GI75NWBK000000007099453 (23 characters)

While we don't currently support businesses that have operations solely in Gibraltar, it is possible to attach bank accounts that are based in Gibraltar.

Bank Account Information Example Data
IBAN GR1601101250000000012300695 (27 characters)
Bank Account Information Example Data
Clearing Code 123 (3 characters)
Branch Code 456 (3 characters)
Account Number 123456-789 (6-9 characters)

When creating a bank via the API, combine the bank code and branch code to create a full routing number (e.g., 123-456).

Bank Account Information Example Data
IBAN HU42117730161111101800000000(28 characters)
Bank Account Information Example Data
IFSC Code HDFC0004051 (11 characters)
Account Number Format varies by bank
Bank Account Information Example Data
IBAN IE29AIBK93115212345678 (22 characters)
Bank Account Information Example Data
IBAN IT60X0542811101000000123456 (27 characters)
Bank Account Information Example Data
Bank Name いろは銀行
Branch Name 東京支店
Bank Code 0123 (4 characters)
Branch Code 456 (3 characters)
Account Number 1234567 (7-8 characters)
Account Owner Name ヤマダハナコ

Stripe currently only supports ordinary accounts (普通預金) for bank accounts in Japan.

When creating a bank via the API, combine the bank code and branch code to create a full routing number (e.g., 0123456). We also explicitly require the name of the person or business that owns the bank account, via the account_holder_name attribute.

Bank Account Information Example Data
IBAN LI21088100002324013AA (21 characters)
Bank Account Information Example Data
IBAN LT121000011101001000 (20 characters)
Bank Account Information Example Data
IBAN LU280019400644750000 (20 characters)
Bank Account Information Example Data
IBAN LV80BANK0000435195001 (21 characters)
Bank Account Information Example Data
IBAN MT84MALT011000012345MTLCAST001S (31 characters)
Bank Account Information Example Data
Account Number 1234567890 (5-17 digits, format varies by bank)
Bank Account Information Example Data
CLABE 123456789012345678 (18 characters)
Bank Account Information Example Data
IBAN NL39RABO0300065264 (18 characters)
Bank Account Information Example Data
Account Number AABBBB3456789YZZ (15-16 digits)

Typically, banks present the account number in the format xx-xxxx-xxxxxxx-xxx. This can be input directly into the API without separators as the account_number. However, if the portions are provided individually the explanations below will assist in assembling them into the standard format. Refer the points below, to the complete example above.

  • Provide the full 15-16 digit account number without separators.
  • AABBBB is the bank AA and branch numbers BBBB.
  • 3456789 is the account number.
  • 0ZZ is the suffix with the 0 digit being optional if the suffix is only two digits. However, if the suffix is three digits, the first digit must be 0 (e.g., suffix 23 could be represented as either 23 or 023).
Bank Account Information Example Data
IBAN NO9386011117947 (15 characters)
Bank Account Information Example Data
IBAN PL61109010140000071219812874 (28 characters)
Bank Account Information Example Data
IBAN PT50123443211234567890172 (25 characters)
Bank Account Information Example Data
IBAN RO49AAAA1B31007593840000 (24 characters)
Bank Account Information Example Data
Bank Code 1234
Branch Code 567
Account Number 1234567890123456789 (6-19 characters)

When creating a bank via the API, combine the bank code and branch code with a hyphen to create a full routing number (e.g., 1234-567).

Bank Account Information Example Data
IBAN SK3112000000198742637541 (24 characters)
Bank Account Information Example Data
IBAN SI56263300012039086 (19 characters)
Bank Account Information Example Data
IBAN ES9121000418450200051332 (24 characters)
Bank Account Information Example Data
IBAN SE3550000000054910000003 (24 characters)
Bank Account Information Example Data
IBAN CH9300762011623852957 (21 characters)
Bank Account Information Example Data
Sort Code 12-34-56
Account Number 01234567

The information required for UK-based bank accounts depends on the currency being used and the country of your Stripe account.

Bank Account Information Example Data
Routing Number 111000000 (9 characters)
Account Number Format varies by bank

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 see 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 cannot 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.

curl https://api.stripe.com/v1/accounts/{{CONNECTED_STRIPE_ACCOUNT_ID}}/external_accounts \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d external_account=btok_9CUINZPUJnubtQ
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' external_account = Stripe::Account.create_external_account( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { external_account: 'btok_9CUUxVXui4TQyJ', } )
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' external_account = stripe.Account.create_external_account( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', external_account='btok_9CUY3ZiKZEHSlb' )
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $external_account = \Stripe\Account::createExternalAccount( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', [ 'external_account' => 'btok_9CUINZPUJnubtQ', ] );
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; Account account = Account.retrieve("{{CONNECTED_STRIPE_ACCOUNT_ID}}", null); ExternalAccountCollectionParams params = ExternalAccountCollectionParams.builder() .setExternalAccount("btok_9CUaZTAdbT4G5z") account.getExternalAccounts().create(params);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); const bankAccount = await stripe.accounts.createExternalAccount( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', {external_account: 'btok_9CUYdoUSROb2yg'} );
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.BankAccountParams{ Account: stripe.String("{{CONNECTED_STRIPE_ACCOUNT_ID}}"), Token: stripe.String("btok_9CUaZTAdbT4G5z"), } ba, _ := bankaccount.New(params)
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new ExternalAccountCreateOptions { ExternalAccount = "btok_9CUYdoUSROb2yg", }; var service = new ExternalAccountService(); service.Create("{{CONNECTED_STRIPE_ACCOUNT_ID}}", options);

When working with multiple currencies, Stripe automatically sends payouts to an associated bank account or debit card for its currency, thereby avoiding exchange fees. When there are multiple accounts available for a given currency, Stripe uses the one set as default_for_currency.

Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.