Skip to content

Stripe: Create an account

Stripe accounts.postAccounts: arguments, response, policy and SDK examples.

← Accounts operations · Get started

Operation stripe.postaccounts

Provider route: POST /v1/accounts. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/stripe with npm, or alter-sdk-stripe with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { StripeIntegration } from "@alter-ai/stripe";
async function execute(input: Parameters<StripeIntegration["accounts"]["postAccounts"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new StripeIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.accounts.postAccounts(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_stripe import StripeIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = StripeIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.accounts.post_accounts(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
headersobjectOptionalAdditional keys: not allowed
headers.Idempotency-KeystringOptionalMinimum length: 1
Maximum length: 255
bodyobjectOptionalAdditional keys: not allowed
body.account_tokenstringOptionalAn [account token](https://docs.stripe.com/api#create_account_token), used to securely provide details to the account.
Maximum length: 5000
body.bank_accountJSONOptionalEither a token, like the ones returned by [Stripe.js](https://stripe.com/docs/js), or a dictionary containing a user’s bank account details.
body.bank_account (anyOf 1)ModelAlternativeExpand Create an account — request body — body / bank_account / account_holder_type: company, individual, account type: checking, futsu, savings, toza, object: bank account
body.bank_account (anyOf 2)stringAlternativeMaximum length: 5000
body.business_profileModelOptionalExpand Create an account — request body — body business profile
body.business_typestringOptionalThe business type. Once you create an [Account Link](/api/account_links) or [Account Session](/api/account_sessions), this property can only be updated for accounts where [controller.requirement_collection](/api/accounts/object#account_object-controller-requirement_collection) is `application`, which includes Custom accounts.
One of: company, government_entity, individual, non_profit
body.capabilitiesModelOptionalExpand Create an account — request body — body capabilities
body.companyModelOptionalExpand Create an account — request body — body company
body.controllerobjectOptionalA hash of configuration describing the account controller’s attributes.
body.controller.feesobjectOptional
body.controller.fees.payerstringOptionalOne of: account, application
body.controller.lossesobjectOptional
body.controller.losses.paymentsstringOptionalOne of: application, stripe
body.controller.requirement_collectionstringOptionalOne of: application, stripe
body.controller.stripe_dashboardobjectOptional
body.controller.stripe_dashboard.typestringOptionalOne of: express, full, none
body.countrystringOptionalThe 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](https://stripe.com/global) as well as countries where [cross-border payouts](https://stripe.com/docs/connect/cross-border-payouts) are supported.
Maximum length: 5000
body.default_currencystringOptionalThree-letter ISO currency code representing the default currency for the account. This must be a currency that [Stripe supports in the account’s country](https://docs.stripe.com/payouts).
Format: currency
body.documentsobjectOptionalDocuments that may be submitted to satisfy various informational requests.
body.documents.bank_account_ownership_verificationobjectOptional
body.documents.bank_account_ownership_verification.filesarrayOptional
body.documents.bank_account_ownership_verification.files[]stringEach itemMaximum length: 500
body.documents.company_licenseobjectOptional
body.documents.company_license.filesarrayOptional
body.documents.company_license.files[]stringEach itemMaximum length: 500
body.documents.company_memorandum_of_associationobjectOptional
body.documents.company_memorandum_of_association.filesarrayOptional
body.documents.company_memorandum_of_association.files[]stringEach itemMaximum length: 500
body.documents.company_ministerial_decreeobjectOptional
body.documents.company_ministerial_decree.filesarrayOptional
body.documents.company_ministerial_decree.files[]stringEach itemMaximum length: 500
body.documents.company_registration_verificationobjectOptional
body.documents.company_registration_verification.filesarrayOptional
body.documents.company_registration_verification.files[]stringEach itemMaximum length: 500
body.documents.company_tax_id_verificationobjectOptional
body.documents.company_tax_id_verification.filesarrayOptional
body.documents.company_tax_id_verification.files[]stringEach itemMaximum length: 500
body.documents.proof_of_addressobjectOptional
body.documents.proof_of_address.filesarrayOptional
body.documents.proof_of_address.files[]stringEach itemMaximum length: 500
body.documents.proof_of_ultimate_beneficial_ownershipobjectOptional
body.documents.proof_of_ultimate_beneficial_ownership.filesarrayOptional
body.documents.proof_of_ultimate_beneficial_ownership.files[]stringEach itemMaximum length: 500
body.documents.proof_of_ultimate_beneficial_ownership.signerobjectOptional
body.documents.proof_of_ultimate_beneficial_ownership.signer.personstringOptionalMaximum length: 5000
body.emailstringOptionalThe email address of the account holder. This is only to make the account easier to identify to you. If [controller.requirement_collection](/api/accounts/object#account_object-controller-requirement_collection) is `application`, which includes Custom accounts, Stripe doesn’t email the account without your consent.
body.expandarrayOptionalSpecifies which fields in the response should be expanded.
body.expand[]stringEach itemMaximum length: 5000
body.external_accountstringOptionalA card or bank account to attach to the account for receiving [payouts](/connect/bank-debit-card-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](/js), or a dictionary, as documented in the `external_account` parameter for [bank account](/api#account_create_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](/api#account_create_bank_account) or [card creation](/api#account_create_card) APIs. After you create an [Account Link](/api/account_links) or [Account Session](/api/account_sessions), this property can only be updated for accounts where [controller.requirement_collection](/api/accounts/object#account_object-controller-requirement_collection) is `application`, which includes Custom accounts.
Maximum length: 5000
body.groupsobjectOptionalA hash of account group type to tokens. These are account groups this account should be added to.
body.groups.payments_pricingJSONOptional
body.groups.payments_pricing (anyOf 1)stringAlternativeMaximum length: 5000
body.groups.payments_pricing (anyOf 2)stringAlternativeOne of:
body.individualModelOptionalExpand Create an account — request body — body individual
body.metadataJSONOptionalSet of [key-value pairs](https://docs.stripe.com/api/metadata) 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`.
body.metadata (anyOf 1)objectAlternativeAdditional keys: see wildcard field
body.metadata (anyOf 1).*stringAdditional keys
body.metadata (anyOf 2)stringAlternativeOne of:
body.settingsobjectOptionalOptions for customizing how the account functions within Stripe.
body.settings.bacs_debit_paymentsobjectOptional
body.settings.bacs_debit_payments.display_namestringOptional
body.settings.brandingobjectOptional
body.settings.branding.iconstringOptionalMaximum length: 5000
body.settings.branding.logostringOptionalMaximum length: 5000
body.settings.branding.primary_colorstringOptionalMaximum length: 5000
body.settings.branding.secondary_colorstringOptionalMaximum length: 5000
body.settings.card_issuingobjectOptional
body.settings.card_issuing.tos_acceptanceobjectOptional
body.settings.card_issuing.tos_acceptance.dateintegerOptionalFormat: unix-time
body.settings.card_issuing.tos_acceptance.ipstringOptional
body.settings.card_issuing.tos_acceptance.user_agentJSONOptional
body.settings.card_issuing.tos_acceptance.user_agent (anyOf 1)stringAlternativeMaximum length: 5000
body.settings.card_issuing.tos_acceptance.user_agent (anyOf 2)stringAlternativeOne of:
body.settings.card_paymentsobjectOptional
body.settings.card_payments.decline_onobjectOptional
body.settings.card_payments.decline_on.avs_failurebooleanOptional
body.settings.card_payments.decline_on.cvc_failurebooleanOptional
body.settings.card_payments.statement_descriptor_prefixstringOptionalMaximum length: 10
body.settings.card_payments.statement_descriptor_prefix_kanaJSONOptional
body.settings.card_payments.statement_descriptor_prefix_kana (anyOf 1)stringAlternativeMaximum length: 10
body.settings.card_payments.statement_descriptor_prefix_kana (anyOf 2)stringAlternativeOne of:
body.settings.card_payments.statement_descriptor_prefix_kanjiJSONOptional
body.settings.card_payments.statement_descriptor_prefix_kanji (anyOf 1)stringAlternativeMaximum length: 10
body.settings.card_payments.statement_descriptor_prefix_kanji (anyOf 2)stringAlternativeOne of:
body.settings.invoicesobjectOptional
body.settings.invoices.hosted_payment_method_savestringOptionalOne of: always, never, offer
body.settings.paymentsobjectOptional
body.settings.payments.statement_descriptorstringOptionalMaximum length: 22
body.settings.payments.statement_descriptor_kanastringOptionalMaximum length: 22
body.settings.payments.statement_descriptor_kanjistringOptionalMaximum length: 22
body.settings.payoutsModelOptionalExpand Create an account — request body — body settings payouts
body.settings.paypay_paymentsModelOptionalExpand Create an account — request body — body settings paypay payments
body.settings.sepa_debit_paymentsobjectOptional
body.settings.sepa_debit_payments.creditor_idstringOptional
body.settings.treasuryobjectOptional
body.settings.treasury.tos_acceptanceobjectOptional
body.settings.treasury.tos_acceptance.dateintegerOptionalFormat: unix-time
body.settings.treasury.tos_acceptance.ipstringOptional
body.settings.treasury.tos_acceptance.user_agentJSONOptional
body.settings.treasury.tos_acceptance.user_agent (anyOf 1)stringAlternativeMaximum length: 5000
body.settings.treasury.tos_acceptance.user_agent (anyOf 2)stringAlternativeOne of:
body.tos_acceptanceModelOptionalExpand Create an account — request body — body tos acceptance
body.typestringOptionalThe `type` parameter is deprecated. Use [`controller`](/api/accounts/create#create_account-controller) instead to configure dashboard access, fee payer, loss liability, and requirement collection.
One of: custom, express, standard

Referenced models: Create an account — request body — body / bank_account / account_holder_type: company, individual, account type: checking, futsu, savings, toza, object: bank account, Create an account — request body — body business profile, Create an account — request body — body capabilities, Create an account — request body — body company, Create an account — request body — body individual, Create an account — request body — body settings payouts, Create an account — request body — body settings paypay payments, Create an account — request body — body tos acceptance

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Create an account — response body

Referenced models: Create an account — response body

715 more schemas are linked from the tables above, on the schema pages.

Create an account — response body
FieldTypePresenceDescription and constraints
$objectRootFor new integrations, we recommend using the [Accounts v2 API](/api/v2/core/accounts), in place of /v1/accounts and /v1/customers to represent a user.

This is an object representing a Stripe account. You can retrieve it to see
properties on the account like its current requirements or if the account is
enabled to make live charges or receive payouts.

For accounts where [controller.requirement_collection](/api/accounts/object#account_object-controller-requirement_collection)
is `application`, which includes Custom accounts, the properties below are always
returned.

For accounts where [controller.requirement_collection](/api/accounts/object#account_object-controller-requirement_collection)
is `stripe`, which includes Standard and Express accounts, some properties are only returned
until you create an [Account Link](/api/account_links) or [Account Session](/api/account_sessions)
to start Connect Onboarding. Learn about the [differences between accounts](/connect/accounts).
business_profileJSONOptional
business_profile (anyOf 1)JSONAlternativeBusiness information about the account.
business_profile (anyOf 1) (anyOf 1)ModelAlternativeExpand Create an account — response body — business profile Business information about the account annual revenue, estimated worker count, mcc, minority owned business designation, monthly estimated revenue, name, product description, specified commercial transactions act url, support address, support email, support phone, support url, url
business_profile (anyOf 2)nullAlternative
business_typeJSONOptional
business_type (anyOf 1)stringAlternativeThe business type.
Known values: company, government_entity, individual, non_profit
business_type (anyOf 2)nullAlternative
capabilitiesModelOptionalExpand Create an account — response body — capabilities
charges_enabledbooleanOptionalWhether the account can process charges.
companyModelOptionalExpand Create an account — response body — company
controllerModelOptionalExpand Create an account — response body — controller
countrystringOptionalThe account's country.
Maximum length: 5000
createdJSONOptional
created (anyOf 1)integerAlternativeTime at which the account was connected. Measured in seconds since the Unix epoch.
Format: unix-time
created (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
default_currencystringOptionalThree-letter ISO currency code representing the default currency for the account. This must be a currency that [Stripe supports in the account's country](https://stripe.com/docs/payouts).
Maximum length: 5000
details_submittedbooleanOptionalWhether 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](/connect/onboarding) to finish submitting account details.
emailJSONOptional
email (anyOf 1)stringAlternativeAn 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.
Maximum length: 5000
email (anyOf 2)nullAlternative
external_accountsobjectOptionalExternal accounts (bank accounts and debit cards) currently attached to this account. External accounts are only returned for requests where `controller[is_controller]` is true.
external_accounts.dataarrayRequired within parentThe list contains all external accounts that have been attached to the Stripe account. These may be bank accounts or cards.
external_accounts.data[]JSONEach item
external_accounts.data[] (anyOf 1)ModelAlternativeExpand Retrieve a bank account — response body
external_accounts.data[] (anyOf 2)ModelAlternativeExpand Retrieve a card — customers get Customers Customer Cards Id — response body
external_accounts.has_morebooleanRequired within parentTrue if this list has another page of items after this one that can be fetched.
external_accounts.objectstringRequired within parentString representing the object's type. Objects of the same type share the same value. Always has the value `list`.
Known values: list
external_accounts.urlstringRequired within parentThe URL where this list can be accessed.
Maximum length: 5000
future_requirementsModelOptionalExpand Create an account — response body — future requirements
groupsJSONOptional
groups (anyOf 1)JSONAlternativeThe groups associated with the account.
groups (anyOf 1) (anyOf 1)ModelAlternativeExpand Create an account — response body — groups The groups associated with the account payments pricing
groups (anyOf 2)nullAlternative
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
individualModelOptionalExpand Create a person — accounts post Accounts Account People — response body
metadataobjectOptionalSet of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
Additional keys: see wildcard field
metadata.*stringAdditional keysMaximum length: 500
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: account
payouts_enabledbooleanOptionalWhether the funds in this account can be paid out.
requirementsModelOptionalExpand Create an account — response body — requirements
settingsJSONOptional
settings (anyOf 1)JSONAlternativeOptions for customizing how the account functions within Stripe.
settings (anyOf 1) (anyOf 1)ModelAlternativeExpand Create an account — response body — settings value bacs debit payments, branding, card issuing, card payments, dashboard, invoices, payments, payouts, paypay payments, sepa debit payments, treasury
settings (anyOf 2)nullAlternative
tos_acceptanceModelOptionalExpand Create an account — response body — tos acceptance
typestringOptionalThe Stripe account type. Can be `standard`, `express`, `custom`, or `none`.
Known values: custom, express, none, standard

Referenced models: Create an account — response body — business profile Business information about the account annual revenue, estimated worker count, mcc, minority owned business designation, monthly estimated revenue, name, product description, specified commercial transactions act url, support address, support email, support phone, support url, url, Create an account — response body — capabilities, Create an account — response body — future requirements, Create an account — response body — groups The groups associated with the account payments pricing, Create an account — response body — requirements, Create an account — response body — settings value bacs debit payments, branding, card issuing, card payments, dashboard, invoices, payments, payouts, paypay payments, sepa debit payments, treasury, Create an account — response body — tos acceptance, Create an account — response body — controller, Retrieve a bank account — response body, Retrieve a card — customers get Customers Customer Cards Id — response body, Create an account — response body — company, Create a person — accounts post Accounts Account People — response body

Create an account — request body — body / bank_account / account_holder_type: company, individual, account type: checking, futsu, savings, toza, object: bank account
FieldTypePresenceDescription and constraints
$objectRoot
account_holder_namestringOptionalMaximum length: 5000
account_holder_typestringOptionalOne of: company, individual
Maximum length: 5000
account_numberstringRequired within parentMaximum length: 5000
account_typestringOptionalOne of: checking, futsu, savings, toza
Maximum length: 5000
countrystringRequired within parentMaximum length: 5000
currencystringOptionalFormat: currency
documentsobjectOptional
documents.bank_account_ownership_verificationobjectOptional
documents.bank_account_ownership_verification.filesarrayOptional
documents.bank_account_ownership_verification.files[]stringEach itemMaximum length: 500
objectstringOptionalOne of: bank_account
Maximum length: 5000
routing_numberstringOptionalMaximum length: 5000
Create an account — response body — settings value bacs debit payments, branding, card issuing, card payments, dashboard, invoices, payments, payouts, paypay payments, sepa debit payments, treasury sepa debit payments
FieldTypePresenceDescription and constraints
$objectRoot
creditor_idstringOptionalSEPA creditor identifier that identifies the company making the payment.
Maximum length: 5000

SDK function policy ID: stripe.postaccounts. Catalog operation: PostAccounts. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Pinned headers: {"Stripe-Version": "2026-09-30.endive"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.