External Bank Accounts
External bank accounts are financial accounts associated with a Stripe platform’s connected accounts for the purpose of transferring funds to or from the connected account’s Stripe balance.
Was this section helpful? Yes No
Create a bank account
POST / v1 / accounts /:id / external_accounts
Update a bank account
POST / v1 / accounts /:id / external_accounts /:id
Retrieve a bank account
GET / v1 / accounts /:id / external_accounts /:id
List all bank accounts
GET / v1 / accounts /:id / external_accounts
Delete a bank account
DELETE / v1 / accounts /:id / external_accounts /:id
The External Bank Account object
Attributes
- id string Unique identifier for the object.
- account nullable string Expandable Available conditionally The account this bank account belongs to. Only applicable on Accounts (not customers or recipients) This property is only available when returned as an External Account where controller.is_controller is
true. - bank _ name nullable string Name of the bank associated with the routing number (e.g.,
the related setting the related setting). - country string Two-letter ISO code representing the country the bank account is located in.
- currency enum Three-letter ISO code for the currency paid out to the bank account.
- default _ for _ currency nullable boolean Whether this bank account is the default external account for its currency.
- last4 string The last four digits of the bank account number.
- metadata nullable map Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
- routing _ number nullable string The routing transit number for the bank account.
- status string For bank accounts, possible values are
new,validated,verified,verification_failed,tokenized_account_number_deactivatedorerrored. A bank account that hasn’t had any activity or validation performed isnew. If Stripe can determine that the bank account exists, its status will bevalidated. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will beverified. If the verification failed for any reason, such as microdeposit failure, the status will beverification_failed. If the status istokenized_account_number_deactivated, the account utilizes a tokenized account number which has been deactivated due to expiration or revocation. This account will need to be reverified to continue using it for money movement. If a payout sent to this bank account fails, we’ll set the status toerroredand will not continue to send scheduled payouts until the bank details are updated. For external accounts, possible values arenew,errored,verification_failed, andtokenized_account_number_deactivated. If a payout fails, the status is set toerroredand scheduled payouts are stopped until account details are updated. In the US and India, if we can’t verify the owner of the bank account, we’ll set the status toverification_failed. Other validations aren’t run against external accounts because they’re only used for payouts. This means the other statuses don’t apply.
More attributes
- object string, value is "bank_account"
- account _ holder _ name nullable string
- account _ holder _ type nullable string
- account _ type nullable string
- available _ payout _ methods nullable array of enums
- customer nullable string Expandable
- fingerprint nullable string
- future _ requirements nullable object
- requirements nullable object
The External Bank Account object
{ "id": "ba_1N9DrD2eZvKYlo2C58f4DaIa", "object": "bank_account", "account": "acct_1032D82eZvKYlo2C", "account_holder_name": "Jane Austen", "account_holder_type": "individual", "account_type": null, "available_payout_methods": [ "standard" ], "bank_name": "STRIPE TEST BANK", "country": "US", "currency": "usd", "fingerprint": "1JWtPxqbdX5Gamtz", "last4": "6789", "metadata": {}, "routing_number": "110000000", "status": "new"}
Create a bank account
POST / v1 / accounts /:id / external_accounts
When you create a new bank account, you must specify a connected account to create it on. You can only specify connected accounts where account.controller.requirement_collection is application (includes Custom accounts).
If the bank account’s owner has no other external account in the bank account’s currency, the new bank account will become the default for that currency. However, if the owner already has a bank account for that currency, the new account will become the default only if the default_for_currency parameter is set to true.
Parameters
- external _ account object | string Required Either a token, like the ones returned by Stripe.js, or a dictionary containing a user’s bank account details (with the options shown below).
- metadata map Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to
metadata.
More parameters
- default _ for _ currency boolean
Returns
Returns the bank account object
Response
{ "id": "ba_1NAiJy2eZvKYlo2CvChQKz5k", "object": "bank_account", "account": "acct_1032D82eZvKYlo2C", "account_holder_name": "Jane Austen", "account_holder_type": "company", "account_type": null, "bank_name": "STRIPE TEST BANK", "country": "US", "currency": "usd", "fingerprint": "1JWtPxqbdX5Gamtc", "last4": "6789", "metadata": {}, "routing_number": "110000000", "status": "new"}
