Stripe Link API

You can use the Payment Links API to create a payment link that you can share with your customers. Stripe redirects customers who open this link to a Stripe-hosted payment page.

OpenAPI Specification

stripe-link-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Stripe Link API
  description: >-
    You can use the Payment Links API to create a payment link that you can
    share with your customers. Stripe redirects customers who open this link to
    a Stripe-hosted payment page.
  contact:
    email: [email protected]
    name: Stripe Dev Platform Team
    url: https://stripe.com
  termsOfService: https://stripe.com/us/terms/
  version: '2023-10-16'
  x-stripeSpecFilename: spec3
security:
  - basicAuth: []
  - bearerAuth: []
servers:
  - url: https://api.stripe.com/
paths:
  /v1/link_account_sessions:
    post:
      description: >-
        <p>To launch the Financial Connections authorization flow, create a
        <code>Session</code>. The session’s <code>client_secret</code> can be
        used to launch the flow using Stripe.js.</p>
      operationId: postLinkAccountSessions
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              account_holder:
                explode: true
                style: deepObject
              expand:
                explode: true
                style: deepObject
              filters:
                explode: true
                style: deepObject
              permissions:
                explode: true
                style: deepObject
              prefetch:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostLinkAccountSessionsRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/financial_connections.session'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      summary: Stripe Post   Link Account Sessions
      x-api-evangelist-processing:
        GenerateOperationSummariesFromPath: true
        PascalCaseOperationSummaries: true
        CaselCaseOperationIds: true
        ChooseTags: true
      tags:
        - Account
        - Link
        - Post
        - Sessions
  /v1/link_account_sessions/{session}:
    get:
      description: >-
        <p>Retrieves the details of a Financial Connections
        <code>Session</code></p>
      operationId: getLinkAccountSessionsSession
      parameters:
        - description: Specifies which fields in the response should be expanded.
          explode: true
          in: query
          name: expand
          required: false
          schema:
            items:
              maxLength: 5000
              type: string
            type: array
          style: deepObject
        - in: path
          name: session
          required: true
          schema:
            maxLength: 5000
            type: string
          style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetLinkAccountSessionsSessionRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/financial_connections.session'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      summary: Stripe Get   Link Account Sessions Session
      x-api-evangelist-processing:
        GenerateOperationSummariesFromPath: true
        PascalCaseOperationSummaries: true
        CaselCaseOperationIds: true
        ChooseTags: true
      tags:
        - Account
        - Get
        - Link
        - Sessions
  /v1/linked_accounts:
    get:
      description: >-
        <p>Returns a list of Financial Connections <code>Account</code>
        objects.</p>
      operationId: getLinkedAccounts
      parameters:
        - description: >-
            If present, only return accounts that belong to the specified
            account holder. `account_holder[customer]` and
            `account_holder[account]` are mutually exclusive.
          explode: true
          in: query
          name: account_holder
          required: false
          schema:
            properties:
              account:
                maxLength: 5000
                type: string
              customer:
                maxLength: 5000
                type: string
            title: accountholder_params
            type: object
          style: deepObject
        - description: >-
            A cursor for use in pagination. `ending_before` is an object ID that
            defines your place in the list. For instance, if you make a list
            request and receive 100 objects, starting with `obj_bar`, your
            subsequent call can include `ending_before=obj_bar` in order to
            fetch the previous page of the list.
          in: query
          name: ending_before
          required: false
          schema:
            maxLength: 5000
            type: string
          style: form
        - description: Specifies which fields in the response should be expanded.
          explode: true
          in: query
          name: expand
          required: false
          schema:
            items:
              maxLength: 5000
              type: string
            type: array
          style: deepObject
        - description: >-
            A limit on the number of objects to be returned. Limit can range
            between 1 and 100, and the default is 10.
          in: query
          name: limit
          required: false
          schema:
            type: integer
          style: form
        - description: >-
            If present, only return accounts that were collected as part of the
            given session.
          in: query
          name: session
          required: false
          schema:
            maxLength: 5000
            type: string
          style: form
        - description: >-
            A cursor for use in pagination. `starting_after` is an object ID
            that defines your place in the list. For instance, if you make a
            list request and receive 100 objects, ending with `obj_foo`, your
            subsequent call can include `starting_after=obj_foo` in order to
            fetch the next page of the list.
          in: query
          name: starting_after
          required: false
          schema:
            maxLength: 5000
            type: string
          style: form
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetLinkedAccountsRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                description: ''
                x-expandableFields:
                  - data
                $ref: '#/components/schemas/BankConnectionsResourceLinkedAccountList'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      summary: Stripe Get   Linked Accounts
      x-api-evangelist-processing:
        GenerateOperationSummariesFromPath: true
        PascalCaseOperationSummaries: true
        CaselCaseOperationIds: true
        ChooseTags: true
      tags:
        - Accounts
        - Get
        - Linked
  /v1/linked_accounts/{account}:
    get:
      description: >-
        <p>Retrieves the details of an Financial Connections
        <code>Account</code>.</p>
      operationId: getLinkedAccountsAccount
      parameters:
        - in: path
          name: account
          required: true
          schema:
            maxLength: 5000
            type: string
          style: simple
        - description: Specifies which fields in the response should be expanded.
          explode: true
          in: query
          name: expand
          required: false
          schema:
            items:
              maxLength: 5000
              type: string
            type: array
          style: deepObject
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetLinkedAccountsAccountRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/financial_connections.account'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      summary: Stripe Get   Linked Accounts
      x-api-evangelist-processing:
        GenerateOperationSummariesFromPath: true
        PascalCaseOperationSummaries: true
        CaselCaseOperationIds: true
        ChooseTags: true
      tags:
        - Accounts
        - Get
        - Linked
  /v1/linked_accounts/{account}/disconnect:
    post:
      description: >-
        <p>Disables your access to a Financial Connections <code>Account</code>.
        You will no longer be able to access data associated with the account
        (e.g. balances, transactions).</p>
      operationId: postLinkedAccountsAccountDisconnect
      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/PostLinkedAccountsAccountDisconnectRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/financial_connections.account'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      summary: Stripe Post   Linked Accounts Disconnect
      x-api-evangelist-processing:
        GenerateOperationSummariesFromPath: true
        PascalCaseOperationSummaries: true
        CaselCaseOperationIds: true
        ChooseTags: true
      tags:
        - Accounts
        - Disconnect
        - Linked
        - Post
  /v1/linked_accounts/{account}/owners:
    get:
      description: <p>Lists all owners for a given <code>Account</code></p>
      operationId: getLinkedAccountsAccountOwners
      parameters:
        - in: path
          name: account
          required: true
          schema:
            maxLength: 5000
            type: string
          style: simple
        - description: >-
            A cursor for use in pagination. `ending_before` is an object ID that
            defines your place in the list. For instance, if you make a list
            request and receive 100 objects, starting with `obj_bar`, your
            subsequent call can include `ending_before=obj_bar` in order to
            fetch the previous page of the list.
          in: query
          name: ending_before
          required: false
          schema:
            maxLength: 5000
            type: string
          style: form
        - description: Specifies which fields in the response should be expanded.
          explode: true
          in: query
          name: expand
          required: false
          schema:
            items:
              maxLength: 5000
              type: string
            type: array
          style: deepObject
        - description: >-
            A limit on the number of objects to be returned. Limit can range
            between 1 and 100, and the default is 10.
          in: query
          name: limit
          required: false
          schema:
            type: integer
          style: form
        - description: The ID of the ownership object to fetch owners from.
          in: query
          name: ownership
          required: true
          schema:
            maxLength: 5000
            type: string
          style: form
        - description: >-
            A cursor for use in pagination. `starting_after` is an object ID
            that defines your place in the list. For instance, if you make a
            list request and receive 100 objects, ending with `obj_foo`, your
            subsequent call can include `starting_after=obj_foo` in order to
            fetch the next page of the list.
          in: query
          name: starting_after
          required: false
          schema:
            maxLength: 5000
            type: string
          style: form
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetLinkedAccountsAccountOwnersRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                description: ''
                x-expandableFields:
                  - data
                $ref: '#/components/schemas/BankConnectionsResourceOwnerList'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      summary: Stripe Get   Linked Accounts Owners
      x-api-evangelist-processing:
        GenerateOperationSummariesFromPath: true
        PascalCaseOperationSummaries: true
        CaselCaseOperationIds: true
        ChooseTags: true
      tags:
        - Accounts
        - Get
        - Linked
        - Owners
  /v1/linked_accounts/{account}/refresh:
    post:
      description: >-
        <p>Refreshes the data associated with a Financial Connections
        <code>Account</code>.</p>
      operationId: postLinkedAccountsAccountRefresh
      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
              features:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostLinkedAccountsAccountRefreshRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/financial_connections.account'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      summary: Stripe Post   Linked Accounts Refresh
      x-api-evangelist-processing:
        GenerateOperationSummariesFromPath: true
        PascalCaseOperationSummaries: true
        CaselCaseOperationIds: true
        ChooseTags: true
      tags:
        - Accounts
        - Linked
        - Post
        - Refresh
components:
  schemas:
    financial_connections.session:
      description: >-
        A Financial Connections Session is the secure way to programmatically
        launch the client-side Stripe.js modal that lets your users link their
        accounts.
      properties:
        account_holder:
          anyOf:
            - $ref: '#/components/schemas/bank_connections_resource_accountholder'
          description: The account holder for whom accounts are collected in this session.
          nullable: true
        accounts:
          description: The accounts that were collected as part of this Session.
          properties:
            data:
              description: Details about each object.
              items:
                $ref: '#/components/schemas/financial_connections.account'
              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
              pattern: ^/v1/financial_connections/accounts
              type: string
          required:
            - data
            - has_more
            - object
            - url
          title: BankConnectionsResourceLinkedAccountList
          type: object
          x-expandableFields:
            - data
        client_secret:
          description: >-
            A value that will be passed to the client to launch the
            authentication flow.
          maxLength: 5000
          type: string
        filters:
          $ref: >-
            #/components/schemas/bank_connections_resource_link_account_session_filters
        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:
            - financial_connections.session
          type: string
        permissions:
          description: Permissions requested for accounts collected during this session.
          items:
            enum:
              - balances
              - ownership
              - payment_method
              - transactions
            type: string
            x-stripeBypassValidation: true
          type: array
        prefetch:
          description: Data features requested to be retrieved upon account creation.
          items:
            enum:
              - balances
              - ownership
              - transactions
            type: string
            x-stripeBypassValidation: true
          nullable: true
          type: array
        return_url:
          description: >-
            For webview integrations only. Upon completing OAuth login in the
            native browser, the user will be redirected to this URL to return to
            your app.
          maxLength: 5000
          type: string
      required:
        - accounts
        - client_secret
        - id
        - livemode
        - object
        - permissions
      title: BankConnectionsResourceLinkAccountSession
      type: object
      x-expandableFields:
        - account_holder
        - accounts
        - filters
      x-resourceId: financial_connections.session
    error:
      description: An error response from the Stripe API
      properties:
        error:
          $ref: '#/components/schemas/api_errors'
      required:
        - error
      type: object
    financial_connections.account:
      description: >-
        A Financial Connections Account represents an account that exists
        outside of Stripe, to which you have been granted some degree of access.
      properties:
        account_holder:
          anyOf:
            - $ref: '#/components/schemas/bank_connections_resource_accountholder'
          description: The account holder that this account belongs to.
          nullable: true
        balance:
          anyOf:
            - $ref: '#/components/schemas/bank_connections_resource_balance'
          description: The most recent information about the account's balance.
          nullable: true
        balance_refresh:
          anyOf:
            - $ref: '#/components/schemas/bank_connections_resource_balance_refresh'
          description: The state of the most recent attempt to refresh the account balance.
          nullable: true
        category:
          description: >-
            The type of the account. Account category is further divided in
            `subcategory`.
          enum:
            - cash
            - credit
            - investment
            - other
          type: string
        created:
          description: >-
            Time at which the object was created. Measured in seconds since the
            Unix epoch.
          format: unix-time
          type: integer
        display_name:
          description: >-
            A human-readable name that has been assigned to this account, either
            by the account holder or by the institution.
          maxLength: 5000
          nullable: true
          type: string
        id:
          description: Unique identifier for the object.
          maxLength: 5000
          type: string
        institution_name:
          description: The name of the institution that holds this account.
          maxLength: 5000
          type: string
        last4:
          description: >-
            The last 4 digits of the account number. If present, this will be 4
            numeric characters.
          maxLength: 5000
          nullable: true
          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:
            - financial_connections.account
          type: string
        ownership:
          anyOf:
            - maxLength: 5000
              type: string
            - $ref: '#/components/schemas/financial_connections.account_ownership'
          description: The most recent information about the account's owners.
          nullable: true
          x-expansionResources:
            oneOf:
              - $ref: '#/components/schemas/financial_connections.account_ownership'
        ownership_refresh:
          anyOf:
            - $ref: '#/components/schemas/bank_connections_resource_ownership_refresh'
          description: The state of the most recent attempt to refresh the account owners.
          nullable: true
        permissions:
          description: The list of permissions granted by this account.
          items:
            enum:
              - balances
              - ownership
              - payment_method
              - transactions
            type: string
          nullable: true
          type: array
        status:
          description: The status of the link to the account.
          enum:
            - active
            - disconnected
            - inactive
          type: string
        subcategory:
          description: |-
            If `category` is `cash`, one of:

             - `checking`
             - `savings`
             - `other`

            If `category` is `credit`, one of:

             - `mortgage`
             - `line_of_credit`
             - `credit_card`
             - `other`

            If `category` is `investment` or `other`, this will be `other`.
          enum:
            - checking
            - credit_card
            - line_of_credit
            - mortgage
            - other
            - savings
          type: string
        subscriptions:
          description: The list of data refresh subscriptions requested on this account.
          items:
            enum:
              - transactions
            type: string
            x-stripeBypassValidation: true
          nullable: true
          type: array
        supported_payment_method_types:
          description: >-
            The [PaymentMethod
            type](https://stripe.com/docs/api/payment_methods/object#payment_method_object-type)(s)
            that can be created from this account.
          items:
            enum:
              - link
              - us_bank_account
            type: string
          type: array
        transaction_refresh:
          anyOf:
            - $ref: >-
                #/components/schemas/bank_connections_resource_transaction_refresh
          description: >-
            The state of the most recent attempt to refresh the account
            transactions.
          nullable: true
      required:
        - category
        - created
        - id
        - institution_name
        - livemode
        - object
        - status
        - subcategory
        - supported_payment_method_types
      title: BankConnectionsResourceLinkedAccount
      type: object
      x-expandableFields:
        - account_holder
        - balance
        - balance_refresh
        - ownership
        - ownership_refresh
        - transaction_refresh
      x-resourceId: financial_connections.account
    PostLinkAccountSessionsRequest:
      type: object
      required:
        - account_holder
        - permissions
      properties:
        account_holder:
          description: The account holder to link accounts for.
          properties:
            account:
              maxLength: 5000
              type: string
            customer:
              maxLength: 5000
              type: string
            type:
              enum:
                - account
                - customer
              type: string
          required:
            - type
          title: accountholder_params
          type: object
        expand:
          description: Specifies which fields in the response should be expanded.
          items:
            maxLength: 5000
            type: string
          type: array
        filters:
          description: Filters to restrict the kinds of accounts to collect.
          properties:
            countries:
              items:
                maxLength: 5000
                type: string
              type: array
          required:
            - countries
          title: filters_params
          type: object
        permissions:
          description: >-
            List of data features that you would like to request access to.


            Possible values are `balances`, `transactions`, `ownership`, and
            `payment_method`.
          items:
            enum:
              - balances
              - ownership
              - payment_method
              - transactions
            maxLength: 5000
            type: string
            x-stripeBypassValidation: true
          type: array
        prefetch:
          description: >-
            List of data features that you would like to retrieve upon account
            creation.
          items:
            enum:
              - balances
              - ownership
              - transactions
            type: string
            x-stripeBypassValidation: true
          type: array
        return_url:
          description: >-
            For webview integrations only. Upon completing OAuth login in the
            native browser, the user will be redirected to this URL to return to
            your app.
          maxLength: 5000
          type: string
    GetLinkAccountSessionsSessionRequest:
      type: object
      properties: {}
    GetLinkedAccountsRequest:
      type: object
      properties: {}
    BankConnectionsResourceLinkedAccountList:
      type: object
      required:
        - data
        - has_more
        - object
        - url
      properties:
        data:
          description: Details about each object.
          items:
            $ref: '#/components/schemas/financial_connections.account'
          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
          pattern: ^/v1/financial_connections/accounts
          type: string
    GetLinkedAccountsAccountRequest:
      type: object
      properties: {}
    PostLinkedAccountsAccountDisconnectRequest:
      type: object
      properties:
        expand:
          description: Specifies which fields in the response should be expanded.
          items:
            maxLength: 5000
            type: string
          type: array
    GetLinkedAccountsAccountOwnersRequest:
      type: object
      properties: {}
    BankConnectionsResourceOwnerList:
      type: object
      required:
        - data
        - has_more
        - object
        - url
      properties:
        data:
          description: Details about each object.
          items:
            $ref: '#/components/schemas/financial_connections.account_owner'
          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
    PostLinkedAccountsAccountRefreshRequest:
      type: object
      required:
        - features
      properties:
        expand:
          description: Specifies which fields in the response should be expanded.
          items:
            maxLength: 5000
            type: string
          type: array
        features:
          description: The list of account features that you would like to refresh.
          items:
            enum:
              - balance
              - ownership
              - transactions
            type: string
            x-stripeBypassValidation: true
          type: array
  securitySchemes:
    basicAuth:
      description: >-
        Basic HTTP authentication. Allowed headers-- Authorization: Basic
        <api_key> | Authorization: Basic <base64 hash of `api_key:`>
      scheme: basic
      type: http
    bearerAuth:
      bearerFormat: auth-scheme
      description: >-
        Bearer HTTP authentication. Allowed headers-- Authorization: Bearer
        <api_key>
      scheme: bearer
      type: http
tags:
  - name: Account
  - name: Accounts
  - name: Disconnect
  - name: Get
  - name: Link
  - name: Linked
  - name: Owners
  - name: Post
  - name: Refresh
  - name: Sessions