Stripe Create API

The Create API from Stripe — 10 operation(s) for create.

OpenAPI Specification

stripe-create-api-openapi.yml Raw ↑
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: <p>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.</p>
      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: <p>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.</p>
      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: '<p>With <a href="/docs/connect">Connect</a>, you can create Stripe accounts for your users.

        To do this, youll first need to <a href="https://dashboard.stripe.com/account/applications/settings">register your platform</a>.</p>


        <p>If youve already collected information for your connected accounts, you <a href="/docs/connect/best-practices#onboarding">can prefill that information</a> when

        creating the account. Connect Onboarding wont ask for the prefilled information during account onboarding.

        You can prefill any information on the account.</p>'
      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: <p>Create an external account for a given account.</p>
      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: <p>Create an external account for a given account.</p>
      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: '<p>Creates a single-use login link for an Express account to access their Stripe dashboard.</p>


        <p><strong>You may only create login links for <a href="/docs/connect/express-accounts">Express accounts</a> connected to your platform</strong>.</p>'
      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: <p>Creates a new person.</p>
      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: <p>Creates a new person.</p>
      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: <p>Create an apple pay domain.</p>
      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: '<p>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.</p>


        <p>You can optionally refund only part of an application fee.

        You can do so multiple times, until the entire fee has been refunded.</p>


        <p>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.</p>'
      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

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stripe/refs/heads/main/openapi/stripe-create-api-openapi.yml