openapi: 3.0.0 info: title: Stripe Accounts Account Create API description: 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. contact: email: dev-platform@stripe.com name: Stripe Dev Platform Team url: https://stripe.com termsOfService: https://stripe.com/us/terms/ version: '2023-10-16' x-stripeSpecFilename: spec3 servers: - url: https://api.stripe.com/ security: - basicAuth: [] - bearerAuth: [] tags: - name: Create paths: /v1/account_links: post: description:
Creates an AccountLink object that includes a single-use Stripe URL that the platform can redirect their user to in order to take them through the Connect Onboarding flow.
operationId: PostAccountLinks requestBody: content: application/x-www-form-urlencoded: encoding: expand: explode: true style: deepObject schema: additionalProperties: false $ref: '#/components/schemas/PostAccountLinksRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/account_link' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create Account Link tags: - Create x-api-evangelist-processing: ChooseTags: true /v1/account_sessions: post: description:Creates a AccountSession object that includes a single-use token that the platform can use on their front-end to grant client-side API access.
operationId: PostAccountSessions requestBody: content: application/x-www-form-urlencoded: encoding: components: explode: true style: deepObject expand: explode: true style: deepObject schema: additionalProperties: false $ref: '#/components/schemas/PostAccountSessionsRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/account_session' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create Account Session tags: - Create x-api-evangelist-processing: ChooseTags: true /v1/accounts: post: description: 'With Connect, you can create Stripe accounts for your users. To do this, youll first need to register your platform.
If youve already collected information for your connected accounts, you can prefill that information when creating the account. Connect Onboarding wont ask for the prefilled information during account onboarding. You can prefill any information on the account.
' operationId: PostAccounts requestBody: content: application/x-www-form-urlencoded: encoding: bank_account: explode: true style: deepObject business_profile: explode: true style: deepObject capabilities: explode: true style: deepObject company: explode: true style: deepObject documents: explode: true style: deepObject expand: explode: true style: deepObject individual: explode: true style: deepObject metadata: explode: true style: deepObject settings: explode: true style: deepObject tos_acceptance: explode: true style: deepObject schema: additionalProperties: false $ref: '#/components/schemas/PostAccountsRequest' required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/account' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create Account tags: - Create x-api-evangelist-processing: ChooseTags: true /v1/accounts/{account}/bank_accounts: post: description:Create an external account for a given account.
operationId: PostAccountsAccountBankAccounts parameters: - in: path name: account required: true schema: maxLength: 5000 type: string style: simple requestBody: content: application/x-www-form-urlencoded: encoding: bank_account: explode: true style: deepObject expand: explode: true style: deepObject metadata: explode: true style: deepObject schema: additionalProperties: false $ref: '#/components/schemas/PostAccountsAccountBankAccountsRequest' required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/external_account' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create Bank Account tags: - Create x-api-evangelist-processing: ChooseTags: true /v1/accounts/{account}/external_accounts: post: description:Create an external account for a given account.
operationId: PostAccountsAccountExternalAccounts parameters: - in: path name: account required: true schema: maxLength: 5000 type: string style: simple requestBody: content: application/x-www-form-urlencoded: encoding: bank_account: explode: true style: deepObject expand: explode: true style: deepObject metadata: explode: true style: deepObject schema: additionalProperties: false $ref: '#/components/schemas/PostAccountsAccountExternalAccountsRequest' required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/external_account' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create External Account tags: - Create x-api-evangelist-processing: ChooseTags: true /v1/accounts/{account}/login_links: post: description: 'Creates a single-use login link for an Express account to access their Stripe dashboard.
You may only create login links for Express accounts connected to your platform.
' operationId: PostAccountsAccountLoginLinks parameters: - in: path name: account required: true schema: maxLength: 5000 type: string style: simple requestBody: content: application/x-www-form-urlencoded: encoding: expand: explode: true style: deepObject schema: additionalProperties: false $ref: '#/components/schemas/PostAccountsAccountLoginLinksRequest' required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/login_link' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create Login Link tags: - Create x-api-evangelist-processing: ChooseTags: true /v1/accounts/{account}/people: post: description:Creates a new person.
operationId: PostAccountsAccountPeople parameters: - in: path name: account required: true schema: maxLength: 5000 type: string style: simple requestBody: content: application/x-www-form-urlencoded: encoding: additional_tos_acceptances: explode: true style: deepObject address: explode: true style: deepObject address_kana: explode: true style: deepObject address_kanji: explode: true style: deepObject dob: explode: true style: deepObject documents: explode: true style: deepObject expand: explode: true style: deepObject full_name_aliases: explode: true style: deepObject metadata: explode: true style: deepObject registered_address: explode: true style: deepObject relationship: explode: true style: deepObject verification: explode: true style: deepObject schema: additionalProperties: false $ref: '#/components/schemas/PostAccountsAccountPeopleRequest' required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/person' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create Person tags: - Create x-api-evangelist-processing: ChooseTags: true /v1/accounts/{account}/persons: post: description:Creates a new person.
operationId: PostAccountsAccountPersons parameters: - in: path name: account required: true schema: maxLength: 5000 type: string style: simple requestBody: content: application/x-www-form-urlencoded: encoding: additional_tos_acceptances: explode: true style: deepObject address: explode: true style: deepObject address_kana: explode: true style: deepObject address_kanji: explode: true style: deepObject dob: explode: true style: deepObject documents: explode: true style: deepObject expand: explode: true style: deepObject full_name_aliases: explode: true style: deepObject metadata: explode: true style: deepObject registered_address: explode: true style: deepObject relationship: explode: true style: deepObject verification: explode: true style: deepObject schema: additionalProperties: false $ref: '#/components/schemas/PostAccountsAccountPersonsRequest' required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/person' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create Person tags: - Create x-api-evangelist-processing: ChooseTags: true /v1/apple_pay/domains: post: description:Create an apple pay domain.
operationId: PostApplePayDomains requestBody: content: application/x-www-form-urlencoded: encoding: expand: explode: true style: deepObject schema: additionalProperties: false properties: domain_name: type: string expand: description: Specifies which fields in the response should be expanded. items: maxLength: 5000 type: string type: array required: - domain_name type: object required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/apple_pay_domain' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create Apple Pay Domain tags: - Create x-api-evangelist-processing: ChooseTags: true /v1/application_fees/{id}/refunds: post: description: 'Refunds an application fee that has previously been collected but not yet refunded. Funds will be refunded to the Stripe account from which the fee was originally collected.
You can optionally refund only part of an application fee. You can do so multiple times, until the entire fee has been refunded.
Once entirely refunded, an application fee cant be refunded again. This method will raise an error when called on an already-refunded application fee, or when trying to refund more money than is left on an application fee.
' operationId: PostApplicationFeesIdRefunds parameters: - in: path name: id required: true schema: maxLength: 5000 type: string style: simple requestBody: content: application/x-www-form-urlencoded: encoding: expand: explode: true style: deepObject metadata: explode: true style: deepObject schema: additionalProperties: false properties: amount: description: A positive integer, in _cents (or local equivalent)_, representing how much of this fee to refund. Can refund only up to the remaining unrefunded amount of the fee. type: integer expand: description: Specifies which fields in the response should be expanded. items: maxLength: 5000 type: string type: array metadata: additionalProperties: type: string description: Set of [key-value pairs](https://stripe.com/docs/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`. type: object type: object required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/fee_refund' description: Successful response. default: content: application/json: schema: $ref: '#/components/schemas/error' description: Error response. summary: Stripe Create Application Fee Refund tags: - Create x-api-evangelist-processing: ChooseTags: true components: schemas: person: description: 'This is an object representing a person associated with a Stripe account. A platform cannot access a Standard or Express account''s persons after the account starts onboarding, such as after generating an account link for the account. See the [Standard onboarding](https://stripe.com/docs/connect/standard-accounts) or [Express onboarding documentation](https://stripe.com/docs/connect/express-accounts) for information about platform prefilling and account onboarding steps. Related guide: [Handling identity verification with the API](https://stripe.com/docs/connect/handling-api-verification#person-information)' properties: account: description: The account the person is associated with. maxLength: 5000 type: string additional_tos_acceptances: $ref: '#/components/schemas/person_additional_tos_acceptances' address: $ref: '#/components/schemas/address' address_kana: anyOf: - $ref: '#/components/schemas/legal_entity_japan_address' nullable: true address_kanji: anyOf: - $ref: '#/components/schemas/legal_entity_japan_address' nullable: true created: description: Time at which the object was created. Measured in seconds since the Unix epoch. format: unix-time type: integer dob: $ref: '#/components/schemas/legal_entity_dob' email: description: The person's email address. maxLength: 5000 nullable: true type: string first_name: description: The person's first name. maxLength: 5000 nullable: true type: string first_name_kana: description: The Kana variation of the person's first name (Japan only). maxLength: 5000 nullable: true type: string first_name_kanji: description: The Kanji variation of the person's first name (Japan only). maxLength: 5000 nullable: true type: string full_name_aliases: description: A list of alternate names or aliases that the person is known by. items: maxLength: 5000 type: string type: array future_requirements: anyOf: - $ref: '#/components/schemas/person_future_requirements' nullable: true gender: description: The person's gender (International regulations require either "male" or "female"). nullable: true type: string id: description: Unique identifier for the object. maxLength: 5000 type: string id_number_provided: description: Whether the person's `id_number` was provided. True if either the full ID number was provided or if only the required part of the ID number was provided (ex. last four of an individual's SSN for the US indicated by `ssn_last_4_provided`). type: boolean id_number_secondary_provided: description: Whether the person's `id_number_secondary` was provided. type: boolean last_name: description: The person's last name. maxLength: 5000 nullable: true type: string last_name_kana: description: The Kana variation of the person's last name (Japan only). maxLength: 5000 nullable: true type: string last_name_kanji: description: The Kanji variation of the person's last name (Japan only). maxLength: 5000 nullable: true type: string maiden_name: description: The person's maiden name. maxLength: 5000 nullable: true type: string metadata: additionalProperties: maxLength: 500 type: string description: Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. type: object nationality: description: The country where the person is a national. maxLength: 5000 nullable: true type: string object: description: String representing the object's type. Objects of the same type share the same value. enum: - person type: string phone: description: The person's phone number. maxLength: 5000 nullable: true type: string political_exposure: description: Indicates if the person or any of their representatives, family members, or other closely related persons, declares that they hold or have held an important public job or function, in any jurisdiction. enum: - existing - none type: string registered_address: $ref: '#/components/schemas/address' relationship: $ref: '#/components/schemas/person_relationship' requirements: anyOf: - $ref: '#/components/schemas/person_requirements' nullable: true ssn_last_4_provided: description: Whether the last four digits of the person's Social Security number have been provided (U.S. only). type: boolean verification: $ref: '#/components/schemas/legal_entity_person_verification' required: - account - created - id - object title: Person type: object x-expandableFields: - additional_tos_acceptances - address - address_kana - address_kanji - dob - future_requirements - registered_address - relationship - requirements - verification x-resourceId: person error: description: An error response from the Stripe API properties: error: $ref: '#/components/schemas/api_errors' required: - error type: object account_link: description: 'Account Links are the means by which a Connect platform grants a connected account permission to access Stripe-hosted applications, such as Connect Onboarding. Related guide: [Connect Onboarding](https://stripe.com/docs/connect/custom/hosted-onboarding)' properties: created: description: Time at which the object was created. Measured in seconds since the Unix epoch. format: unix-time type: integer expires_at: description: The timestamp at which this account link will expire. format: unix-time type: integer object: description: String representing the object's type. Objects of the same type share the same value. enum: - account_link type: string url: description: The URL for the account link. maxLength: 5000 type: string required: - created - expires_at - object - url title: AccountLink type: object x-expandableFields: [] x-resourceId: account_link external_account: anyOf: - $ref: '#/components/schemas/bank_account' - $ref: '#/components/schemas/card' title: Polymorphic x-resourceId: external_account x-stripeBypassValidation: true account_session: description: 'An AccountSession allows a Connect platform to grant access to a connected account in Connect embedded components. We recommend that you create an AccountSession each time you need to display an embedded component to your user. Do not save AccountSessions to your database as they expire relatively quickly, and cannot be used more than once. Related guide: [Connect embedded components](https://stripe.com/docs/connect/get-started-connect-embedded-components)' properties: account: description: The ID of the account the AccountSession was created for maxLength: 5000 type: string client_secret: description: 'The client secret of this AccountSession. Used on the client to set up secure access to the given `account`. The client secret can be used to provide access to `account` from your frontend. It should not be stored, logged, or exposed to anyone other than the connected account. Make sure that you have TLS enabled on any page that includes the client secret. Refer to our docs to [setup Connect embedded components](https://stripe.com/docs/connect/get-started-connect-embedded-components) and learn about how `client_secret` should be handled.' maxLength: 5000 type: string components: $ref: '#/components/schemas/connect_embedded_account_session_create_components' expires_at: description: The timestamp at which this AccountSession will expire. format: unix-time type: integer livemode: description: Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode. type: boolean object: description: String representing the object's type. Objects of the same type share the same value. enum: - account_session type: string required: - account - client_secret - components - expires_at - livemode - object title: ConnectEmbeddedMethodAccountSessionCreateMethodAccountSession type: object x-expandableFields: - components x-resourceId: account_session apple_pay_domain: description: '' properties: created: description: Time at which the object was created. Measured in seconds since the Unix epoch. format: unix-time type: integer domain_name: maxLength: 5000 type: string id: description: Unique identifier for the object. maxLength: 5000 type: string livemode: description: Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode. type: boolean object: description: String representing the object's type. Objects of the same type share the same value. enum: - apple_pay_domain type: string required: - created - domain_name - id - livemode - object title: ApplePayDomain type: object x-expandableFields: [] x-resourceId: apple_pay_domain application_fee: description: '' properties: account: anyOf: - maxLength: 5000 type: string - $ref: '#/components/schemas/account' description: ID of the Stripe account this fee was taken from. x-expansionResources: oneOf: - $ref: '#/components/schemas/account' amount: description: Amount earned, in cents (or local equivalent). type: integer amount_refunded: description: Amount in cents (or local equivalent) refunded (can be less than the amount attribute on the fee if a partial refund was issued) type: integer application: anyOf: - maxLength: 5000 type: string - $ref: '#/components/schemas/application' description: ID of the Connect application that earned the fee. x-expansionResources: oneOf: - $ref: '#/components/schemas/application' balance_transaction: anyOf: - maxLength: 5000 type: string - $ref: '#/components/schemas/balance_transaction' description: Balance transaction that describes the impact of this collected application fee on your account balance (not including refunds). nullable: true x-expansionResources: oneOf: - $ref: '#/components/schemas/balance_transaction' charge: anyOf: - maxLength: 5000 type: string - $ref: '#/components/schemas/charge' description: ID of the charge that the application fee was taken from. x-expansionResources: oneOf: - $ref: '#/components/schemas/charge' created: description: Time at which the object was created. Measured in seconds since the Unix epoch. format: unix-time type: integer currency: description: Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies). type: string id: description: Unique identifier for the object. maxLength: 5000 type: string livemode: description: Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode. type: boolean object: description: String representing the object's type. Objects of the same type share the same value. enum: - application_fee type: string originating_transaction: anyOf: - maxLength: 5000 type: string - $ref: '#/components/schemas/charge' description: ID of the corresponding charge on the platform account, if this fee was the result of a charge using the `destination` parameter. nullable: true x-expansionResources: oneOf: - $ref: '#/components/schemas/charge' refunded: description: Whether the fee has been fully refunded. If the fee is only partially refunded, this attribute will still be false. type: boolean refunds: description: A list of refunds that have been applied to the fee. properties: data: description: Details about each object. items: $ref: '#/components/schemas/fee_refund' type: array has_more: description: True if this list has another page of items after this one that can be fetched. type: boolean object: description: String representing the object's type. Objects of the same type share the same value. Always has the value `list`. enum: - list type: string url: description: The URL where this list can be accessed. maxLength: 5000 type: string required: - data - has_more - object - url title: FeeRefundList type: object x-expandableFields: - data required: - account - amount - amount_refunded - application - charge - created - currency - id - livemode - object - refunded - refunds title: PlatformFee type: object x-expandableFields: - account - application - balance_transaction - charge - originating_transaction - refunds x-resourceId: application_fee account: description: '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 Custom accounts, the properties below are always returned. For other accounts, some properties are returned until that account has started to go through Connect Onboarding. Once you create an [Account Link](https://stripe.com/docs/api/account_links) for a Standard or Express account, some parameters are no longer returned. These are marked as **Custom Only** or **Custom and Express** below. Learn about the differences [between accounts](https://stripe.com/docs/connect/accounts).' properties: business_profile: anyOf: - $ref: '#/components/schemas/account_business_profile' description: Business information about the account. nullable: true business_type: description: The business type. enum: - company - government_entity - individual - non_profit nullable: true type: string x-stripeBypassValidation: true capabilities: $ref: '#/components/schemas/account_capabilities' charges_enabled: description: Whether the account can create live charges. type: boolean company: $ref: '#/components/schemas/legal_entity_company' controller: $ref: '#/components/schemas/account_unification_account_controller' country: description: The account's country. maxLength: 5000 type: string created: description: Time at which the account was connected. Measured in seconds since the Unix epoch. format: unix-time type: integer default_currency: description: 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](https://stripe.com/docs/payouts). maxLength: 5000 type: string details_submitted: description: Whether account details have been submitted. Standard accounts cannot receive payouts before this is true. type: boolean email: description: 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. maxLength: 5000 nullable: true type: string external_accounts: description: External accounts (bank accounts and debit cards) currently attached to this account properties: data: description: The list contains all external accounts that have been attached to the Stripe account. These may be bank accounts or cards. items: anyOf: - $ref: '#/components/schemas/bank_account' - $ref: '#/components/schemas/card' title: Polymorphic x-stripeBypassValidation: true type: array has_more: description: True if this list has another page of items after this one that can be fetched. type: boolean object: description: String representing the object's type. Objects of the same type share the same value. Always has the value `list`. enum: - list type: string url: description: The URL where this list can be accessed. maxLength: 5000 type: string required: - data - has_more - object - url title: ExternalAccountList type: object x-expandableFields: - data future_requirements: $ref: '#/components/schemas/account_future_requirements' id: description: Unique identifier for the object. maxLength: 5000 type: string individual: $ref: '#/components/schemas/person' metadata: additionalProperties: maxLength: 500 type: string description: Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. type: object object: description: String representing the object's type. Objects of the same type share the same value. enum: - account type: string payouts_enabled: description: Whether Stripe can send payouts to this account. type: boolean requirements: $ref: '#/components/schemas/account_requirements' settings: anyOf: - $ref: '#/components/schemas/account_settings' description: Options for customizing how the account functions within Stripe. nullable: true tos_acceptance: $ref: '#/components/schemas/account_tos_acceptance' type: description: The Stripe account type. Can be `standard`, `express`, or `custom`. enum: - custom - express - standard type: string required: - id - object title: Account type: object x-expandableFields: - business_profile - capabilities - company - controller - external_accounts - future_requirements - individual - requirements - settings - tos_acceptance x-resourceId: account login_link: description: Login Links are single-use login link for an Express account to access their Stripe dashboard. properties: created: description: Time at which the object was created. Measured in seconds since the Unix epoch. format: unix-time type: integer object: description: String representing the object's type. Objects of the same type share the same value. enum: - login_link type: string url: description: The URL for the login link. maxLength: 5000 type: string required: - created - object - url title: LoginLink type: object x-expandableFields: [] x-resourceId: login_link fee_refund: description: '`Application Fee Refund` objects allow you to refund an application fee that has previously been created but not yet refunded. Funds will be refunded to the Stripe account from which the fee was originally collected. Related guide: [Refunding application fees](https://stripe.com/docs/connect/destination-charges#refunding-app-fee)' properties: amount: description: Amount, in cents (or local equivalent). type: integer balance_transaction: anyOf: - maxLength: 5000 type: string - $ref: '#/components/schemas/balance_transaction' description: Balance transaction that describes the impact on your account balance. nullable: true x-expansionResources: oneOf: - $ref: '#/components/schemas/balance_transaction' created: description: Time at which the object was created. Measured in seconds since the Unix epoch. format: unix-time type: integer currency: description: Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies). type: string fee: anyOf: - maxLength: 5000 type: string - $ref: '#/components/schemas/application_fee' description: ID of the application fee that was refunded. x-expansionResources: oneOf: - $ref: '#/components/schemas/application_fee' id: description: Unique identifier for the object. maxLength: 5000 type: string metadata: additionalProperties: maxLength: 500 type: string description: Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. nullable: true type: object object: description: String representing the object's type. Objects of the same type share the same value. enum: - fee_refund type: string required: - amount - created - currency - fee - id - object title: FeeRefund type: object x-expandableFields: - balance_transaction - fee x-resourceId: fee_refund