POST/v1/accounts

Create an account

With Connect, you can create Stripe accounts for your users. To do this, you’ll first need to register your platform.

If you’ve already collected information for your connected accounts, you can prefill that information when creating the account. Connect Onboarding won’t ask for the prefilled information during account onboarding. You can prefill any information on the account.

  • IdempotentThe SDK sends Idempotency-Key, so a retried request is only applied once.

19 body fields
account_tokenstringoptional

An account token, used to securely provide details to the account.

bank_accountobjectoptional

Either a token, like the ones returned by Stripe.js, or a dictionary containing a user's bank account details.

business_profileobjectoptional

Business information about the account.

business_typestringoptional

The business type. Once you create an Account Link or Account Session, this property can only be updated for accounts where controller.requirement_collection is application, which includes Custom accounts.

Allowed:companygovernment_entityindividualnon_profit
capabilitiesobjectoptional

Each key of the dictionary represents a capability, and each capability maps to its settings (for example, whether it has been requested or not). Each capability is inactive until you have provided its specific requirements and Stripe has verified them. An account might have some of its requested capabilities be active and some be inactive.

Required when account.controller.stripe_dashboard.type is none, which includes Custom accounts.

companyobjectoptional

Information about the company or business. This field is available for any business_type. Once you create an Account Link or Account Session, this property can only be updated for accounts where controller.requirement_collection is application, which includes Custom accounts.

controllerobjectoptional

A hash of configuration describing the account controller's attributes.

countrystringoptional

The country in which the account holder resides, or in which the business is legally established. This should be an ISO 3166-1 alpha-2 country code. For example, if you are in the United States and the business for which you're creating an account is legally represented in Canada, you would use CA as the country for the account being created. Available countries include Stripe's global markets as well as countries where cross-border payouts are supported.

default_currencystringoptional

Three-letter ISO currency code representing the default currency for the account. This must be a currency that Stripe supports in the account's country.

documentsobjectoptional

Documents that may be submitted to satisfy various informational requests.

emailstringoptional

The email address of the account holder. This is only to make the account easier to identify to you. If controller.requirement_collection is application, which includes Custom accounts, Stripe doesn't email the account without your consent.

expandarray<string>optional

Specifies which fields in the response should be expanded.

external_accountstringoptional

A card or bank account to attach to the account for receiving payouts (you won’t be able to use it for top-ups). You can provide either a token, like the ones returned by Stripe.js, or a dictionary, as documented in the external_account parameter for bank account creation. <br><br>By default, providing an external account sets it as the new default external account for its currency, and deletes the old default if one exists. To add additional external accounts without replacing the existing default for the currency, use the bank account or card creation APIs. After you create an Account Link or Account Session, this property can only be updated for accounts where controller.requirement_collection is application, which includes Custom accounts.

groupsobjectoptional

A hash of account group type to tokens. These are account groups this account should be added to.

individualobjectoptional

Information about the person represented by the account. This field is null unless business_type is set to individual. Once you create an Account Link or Account Session, this property can only be updated for accounts where controller.requirement_collection is application, which includes Custom accounts.

metadataobjectoptional

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.

settingsobjectoptional

Options for customizing how the account functions within Stripe.

tos_acceptanceobjectoptional

Details on the account's acceptance of the Stripe Services Agreement. This property can only be updated for accounts where controller.requirement_collection is application, which includes Custom accounts. This property defaults to a full service agreement when empty.

typestringoptional

The type parameter is deprecated. Use controller instead to configure dashboard access, fee payer, loss liability, and requirement collection.

Allowed:customexpressstandard

2 status codes
200Successful response.
business_profileobjectoptional

Business information about the account.

business_typestringoptional

The business type.

Allowed:companygovernment_entityindividualnon_profit
capabilitiesobjectoptional
charges_enabledbooleanoptional

Whether the account can process charges.

companyobjectoptional
controllerobjectoptional
countrystringoptional

The account's country.

createdintegeroptional

Time at which the account was connected. Measured in seconds since the Unix epoch.

default_currencystringoptional

Three-letter ISO currency code representing the default currency for the account. This must be a currency that Stripe supports in the account's country.

details_submittedbooleanoptional

Whether account details have been submitted. Accounts with Stripe Dashboard access, which includes Standard accounts, cannot receive payouts before this is true. Accounts where this is false should be directed to an onboarding flow to finish submitting account details.

emailstringoptional

An email address associated with the account. It's not used for authentication and Stripe doesn't market to this field without explicit approval from the platform.

external_accountsobjectoptional

External accounts (bank accounts and debit cards) currently attached to this account. External accounts are only returned for requests where controller[is_controller] is true.

future_requirementsobjectoptional
groupsobjectoptional

The groups associated with the account.

idstringrequired

Unique identifier for the object.

individualobjectoptional

This is an object representing a person associated with a Stripe account.

A platform can only access a subset of data in a person for an account where account.controller.requirement_collection is stripe, which includes Standard and Express accounts, after creating an Account Link or Account Session to start Connect onboarding.

See the Standard onboarding or Express onboarding documentation for information about prefilling information and account onboarding steps. Learn more about handling identity verification with the API.

metadataobjectoptional

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.

objectstringrequired

String representing the object's type. Objects of the same type share the same value.

Allowed:account
payouts_enabledbooleanoptional

Whether the funds in this account can be paid out.

requirementsobjectoptional
settingsobjectoptional

Options for customizing how the account functions within Stripe.

tos_acceptanceobjectoptional
typestringoptional

The Stripe account type. Can be standard, express, custom, or none.

Allowed:customexpressnonestandard
defaultError response.
errorobjectrequired

Error handling

Any other status is an error: Error response.