Stripe Setup Intents API

The Setup Intents API from Stripe — 6 operation(s) for setup intents.

Operations 8

GET /v1/setup_intents #
POST /v1/setup_intents #
GET /v1/setup_intents/{intent} #
POST /v1/setup_intents/{intent} #
POST /v1/setup_intents/{intent}/cancel #
POST /v1/setup_intents/{intent}/confirm #
POST /v1/setup_intents/{intent}/verify_microdeposits #
GET /v1/setup_attempts List Setup Attempts #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/stripe-setup-intents-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

stripe-setup-intents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Stripe Accounts Account Setup Intents 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: Setup Intents
paths:
  /v1/setup_intents:
    get:
      description: <p>Returns a list of SetupIntents.</p>
      operationId: GetSetupIntents
      parameters:
      - description: 'If present, the SetupIntent''s payment method will be attached to the in-context Stripe Account.


          It can only be used for this Stripe Account’s own money movement flows like InboundTransfer and OutboundTransfers. It cannot be set to true when setting up a PaymentMethod for a Customer, and defaults to false when attaching a PaymentMethod to a Customer.'
        in: query
        name: attach_to_self
        required: false
        schema:
          type: boolean
        style: form
      - description: A filter on the list, based on the object `created` field. The value can be a string with an integer Unix timestamp, or it can be a dictionary with a number of different query options.
        explode: true
        in: query
        name: created
        required: false
        schema:
          anyOf:
          - properties:
              gt:
                type: integer
              gte:
                type: integer
              lt:
                type: integer
              lte:
                type: integer
            title: range_query_specs
            type: object
          - type: integer
        style: deepObject
      - description: Only return SetupIntents for the customer specified by this customer ID.
        in: query
        name: customer
        required: false
        schema:
          maxLength: 5000
          type: string
        style: form
      - 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: Only return SetupIntents that associate with the specified payment method.
        in: query
        name: payment_method
        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/GetSetupIntentsRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                description: ''
                x-expandableFields:
                - data
                $ref: '#/components/schemas/PaymentFlowsSetupIntentList'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Setup Intents
    post:
      description: '<p>Creates a SetupIntent object.</p>


        <p>After you create the SetupIntent, attach a payment method and <a href="/docs/api/setup_intents/confirm">confirm</a>

        it to collect any required permissions to charge the payment method later.</p>'
      operationId: PostSetupIntents
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              automatic_payment_methods:
                explode: true
                style: deepObject
              expand:
                explode: true
                style: deepObject
              flow_directions:
                explode: true
                style: deepObject
              mandate_data:
                explode: true
                style: deepObject
              metadata:
                explode: true
                style: deepObject
              payment_method_data:
                explode: true
                style: deepObject
              payment_method_options:
                explode: true
                style: deepObject
              payment_method_types:
                explode: true
                style: deepObject
              single_use:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostSetupIntentsRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/setup_intent'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Setup Intents
  /v1/setup_intents/{intent}:
    get:
      description: '<p>Retrieves the details of a SetupIntent that has previously been created. </p>


        <p>Client-side retrieval using a publishable key is allowed when the <code>client_secret</code> is provided in the query string. </p>


        <p>When retrieved with a publishable key, only a subset of properties will be returned. Please refer to the <a href="#setup_intent_object">SetupIntent</a> object reference for more details.</p>'
      operationId: GetSetupIntentsIntent
      parameters:
      - description: The client secret of the SetupIntent. We require this string if you use a publishable key to retrieve the SetupIntent.
        in: query
        name: client_secret
        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
      - in: path
        name: intent
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetSetupIntentsIntentRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/setup_intent'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Setup Intents
    post:
      description: <p>Updates a SetupIntent object.</p>
      operationId: PostSetupIntentsIntent
      parameters:
      - in: path
        name: intent
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              expand:
                explode: true
                style: deepObject
              flow_directions:
                explode: true
                style: deepObject
              metadata:
                explode: true
                style: deepObject
              payment_method_data:
                explode: true
                style: deepObject
              payment_method_options:
                explode: true
                style: deepObject
              payment_method_types:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostSetupIntentsIntentRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/setup_intent'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Setup Intents
  /v1/setup_intents/{intent}/cancel:
    post:
      description: '<p>You can cancel a SetupIntent object when it’s in one of these statuses: <code>requires_payment_method</code>, <code>requires_confirmation</code>, or <code>requires_action</code>. </p>


        <p>After you cancel it, setup is abandoned and any operations on the SetupIntent fail with an error.</p>'
      operationId: PostSetupIntentsIntentCancel
      parameters:
      - in: path
        name: intent
        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/PostSetupIntentsIntentCancelRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/setup_intent'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Setup Intents
  /v1/setup_intents/{intent}/confirm:
    post:
      description: '<p>Confirm that your customer intends to set up the current or

        provided payment method. For example, you would confirm a SetupIntent

        when a customer hits the “Save” button on a payment method management

        page on your website.</p>


        <p>If the selected payment method does not require any additional

        steps from the customer, the SetupIntent will transition to the

        <code>succeeded</code> status.</p>


        <p>Otherwise, it will transition to the <code>requires_action</code> status and

        suggest additional actions via <code>next_action</code>. If setup fails,

        the SetupIntent will transition to the

        <code>requires_payment_method</code> status or the <code>canceled</code> status if the

        confirmation limit is reached.</p>'
      operationId: PostSetupIntentsIntentConfirm
      parameters:
      - in: path
        name: intent
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              expand:
                explode: true
                style: deepObject
              mandate_data:
                explode: true
                style: deepObject
              payment_method_data:
                explode: true
                style: deepObject
              payment_method_options:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostSetupIntentsIntentConfirmRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/setup_intent'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Setup Intents
  /v1/setup_intents/{intent}/verify_microdeposits:
    post:
      description: <p>Verifies microdeposits on a SetupIntent object.</p>
      operationId: PostSetupIntentsIntentVerifyMicrodeposits
      parameters:
      - in: path
        name: intent
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              amounts:
                explode: true
                style: deepObject
              expand:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostSetupIntentsIntentVerifyMicrodepositsRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/setup_intent'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Setup Intents
  /v1/setup_attempts:
    get:
      summary: List Setup Attempts
      description: <p>Returns a list of SetupAttempts that associate with a provided SetupIntent.</p>
      operationId: GetSetupAttempts
      parameters:
      - name: setup_intent
        in: query
        required: true
        schema:
          type: string
          maxLength: 5000
      - name: ending_before
        in: query
        required: false
        schema:
          type: string
          maxLength: 5000
      - name: limit
        in: query
        required: false
        schema:
          type: integer
      - name: starting_after
        in: query
        required: false
        schema:
          type: string
          maxLength: 5000
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    enum:
                    - list
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/setup_attempt'
                  has_more:
                    type: boolean
                  url:
                    type: string
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_2'
      tags:
      - Setup Intents
components:
  schemas:
    error_2:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
            message:
              type: string
            code:
              type: string
            param:
              type: string
    PostSetupIntentsIntentVerifyMicrodepositsRequest:
      type: object
      properties:
        amounts:
          description: Two positive integers, in *cents*, equal to the values of the microdeposits sent to the bank account.
          items:
            type: integer
          type: array
        client_secret:
          description: The client secret of the SetupIntent.
          maxLength: 5000
          type: string
        descriptor_code:
          description: A six-character code starting with SM present in the microdeposit sent to the bank account.
          maxLength: 5000
          type: string
        expand:
          description: Specifies which fields in the response should be expanded.
          items:
            maxLength: 5000
            type: string
          type: array
    GetSetupIntentsIntentRequest:
      type: object
      properties: {}
    PostSetupIntentsIntentRequest:
      type: object
      properties:
        attach_to_self:
          description: 'If present, the SetupIntent''s payment method will be attached to the in-context Stripe Account.


            It can only be used for this Stripe Account’s own money movement flows like InboundTransfer and OutboundTransfers. It cannot be set to true when setting up a PaymentMethod for a Customer, and defaults to false when attaching a PaymentMethod to a Customer.'
          type: boolean
        customer:
          description: 'ID of the Customer this SetupIntent belongs to, if one exists.


            If present, the SetupIntent''s payment method will be attached to the Customer on successful setup. Payment methods attached to other Customers cannot be used with this SetupIntent.'
          maxLength: 5000
          type: string
        description:
          description: An arbitrary string attached to the object. Often useful for displaying to users.
          maxLength: 1000
          type: string
        expand:
          description: Specifies which fields in the response should be expanded.
          items:
            maxLength: 5000
            type: string
          type: array
        flow_directions:
          description: 'Indicates the directions of money movement for which this payment method is intended to be used.


            Include `inbound` if you intend to use the payment method as the origin to pull funds from. Include `outbound` if you intend to use the payment method as the destination to send funds to. You can include both if you intend to use the payment method for both purposes.'
          items:
            enum:
            - inbound
            - outbound
            type: string
          type: array
        metadata:
          anyOf:
          - additionalProperties:
              type: string
            type: object
          - enum:
            - ''
            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`.
        payment_method:
          description: ID of the payment method (a PaymentMethod, Card, or saved Source object) to attach to this SetupIntent.
          maxLength: 5000
          type: string
        payment_method_configuration:
          description: The ID of the payment method configuration to use with this SetupIntent.
          maxLength: 100
          type: string
        payment_method_data:
          description: 'When included, this hash creates a PaymentMethod that is set as the [`payment_method`](https://stripe.com/docs/api/setup_intents/object#setup_intent_object-payment_method)

            value in the SetupIntent.'
          properties:
            acss_debit:
              properties:
                account_number:
                  maxLength: 5000
                  type: string
                institution_number:
                  maxLength: 5000
                  type: string
                transit_number:
                  maxLength: 5000
                  type: string
              required:
              - account_number
              - institution_number
              - transit_number
              title: payment_method_param
              type: object
            affirm:
              properties: {}
              title: param
              type: object
            afterpay_clearpay:
              properties: {}
              title: param
              type: object
            alipay:
              properties: {}
              title: param
              type: object
            au_becs_debit:
              properties:
                account_number:
                  maxLength: 5000
                  type: string
                bsb_number:
                  maxLength: 5000
                  type: string
              required:
              - account_number
              - bsb_number
              title: param
              type: object
            bacs_debit:
              properties:
                account_number:
                  maxLength: 5000
                  type: string
                sort_code:
                  maxLength: 5000
                  type: string
              title: param
              type: object
            bancontact:
              properties: {}
              title: param
              type: object
            billing_details:
              properties:
                address:
                  anyOf:
                  - properties:
                      city:
                        maxLength: 5000
                        type: string
                      country:
                        maxLength: 5000
                        type: string
                      line1:
                        maxLength: 5000
                        type: string
                      line2:
                        maxLength: 5000
                        type: string
                      postal_code:
                        maxLength: 5000
                        type: string
                      state:
                        maxLength: 5000
                        type: string
                    title: billing_details_address
                    type: object
                  - enum:
                    - ''
                    type: string
                email:
                  anyOf:
                  - type: string
                  - enum:
                    - ''
                    type: string
                name:
                  anyOf:
                  - maxLength: 5000
                    type: string
                  - enum:
                    - ''
                    type: string
                phone:
                  anyOf:
                  - maxLength: 5000
                    type: string
                  - enum:
                    - ''
                    type: string
              title: billing_details_inner_params
              type: object
            blik:
              properties: {}
              title: param
              type: object
            boleto:
              properties:
                tax_id:
                  maxLength: 5000
                  type: string
              required:
              - tax_id
              title: param
              type: object
            cashapp:
              properties: {}
              title: param
              type: object
            customer_balance:
              properties: {}
              title: param
              type: object
            eps:
              properties:
                bank:
                  enum:
                  - arzte_und_apotheker_bank
                  - austrian_anadi_bank_ag
                  - bank_austria
                  - bankhaus_carl_spangler
                  - bankhaus_schelhammer_und_schattera_ag
                  - bawag_psk_ag
                  - bks_bank_ag
                  - brull_kallmus_bank_ag
                  - btv_vier_lander_bank
                  - capital_bank_grawe_gruppe_ag
                  - deutsche_bank_ag
                  - dolomitenbank
                  - easybank_ag
                  - erste_bank_und_sparkassen
                  - hypo_alpeadriabank_international_ag
                  - hypo_bank_burgenland_aktiengesellschaft
                  - hypo_noe_lb_fur_niederosterreich_u_wien
                  - hypo_oberosterreich_salzburg_steiermark
                  - hypo_tirol_bank_ag
                  - hypo_vorarlberg_bank_ag
                  - marchfelder_bank
                  - oberbank_ag
                  - raiffeisen_bankengruppe_osterreich
                  - schoellerbank_ag
                  - sparda_bank_wien
                  - volksbank_gruppe
                  - volkskreditbank_ag
                  - vr_bank_braunau
                  maxLength: 5000
                  type: string
              title: param
              type: object
            fpx:
              properties:
                bank:
                  enum:
                  - affin_bank
                  - agrobank
                  - alliance_bank
                  - ambank
                  - bank_islam
                  - bank_muamalat
                  - bank_of_china
                  - bank_rakyat
                  - bsn
                  - cimb
                  - deutsche_bank
                  - hong_leong_bank
                  - hsbc
                  - kfh
                  - maybank2e
                  - maybank2u
                  - ocbc
                  - pb_enterprise
                  - public_bank
                  - rhb
                  - standard_chartered
                  - uob
                  maxLength: 5000
                  type: string
                  x-stripeBypassValidation: true
              required:
              - bank
              title: param
              type: object
            giropay:
              properties: {}
              title: param
              type: object
            grabpay:
              properties: {}
              title: param
              type: object
            ideal:
              properties:
                bank:
                  enum:
                  - abn_amro
                  - asn_bank
                  - bunq
                  - handelsbanken
                  - ing
                  - knab
                  - moneyou
                  - n26
                  - rabobank
                  - regiobank
                  - revolut
                  - sns_bank
                  - triodos_bank
                  - van_lanschot
                  - yoursafe
                  maxLength: 5000
                  type: string
              title: param
              type: object
            interac_present:
              properties: {}
              title: param
              type: object
            klarna:
              properties:
                dob:
                  properties:
                    day:
                      type: integer
                    month:
                      type: integer
                    year:
                      type: integer
                  required:
                  - day
                  - month
                  - year
                  title: date_of_birth
                  type: object
              title: param
              type: object
            konbini:
              properties: {}
              title: param
              type: object
            link:
              properties: {}
              title: param
              type: object
            metadata:
              additionalProperties:
                type: string
              type: object
            oxxo:
              properties: {}
              title: param
              type: object
            p24:
              properties:
                bank:
                  enum:
                  - alior_bank
                  - bank_millennium
                  - bank_nowy_bfg_sa
                  - bank_pekao_sa
                  - banki_spbdzielcze
                  - blik
                  - bnp_paribas
                  - boz
                  - citi_handlowy
                  - credit_agricole
                  - envelobank
                  - etransfer_pocztowy24
                  - getin_bank
                  - ideabank
                  - ing
                  - inteligo
                  - mbank_mtransfer
                  - nest_przelew
                  - noble_pay
                  - pbac_z_ipko
                  - plus_bank
                  - santander_przelew24
                  - tmobile_usbugi_bankowe
                  - toyota_bank
                  - volkswagen_bank
                  type: string
                  x-stripeBypassValidation: true
              title: param
              type: object
            paynow:
              properties: {}
              title: param
              type: object
            paypal:
              properties: {}
              title: param
              type: object
            pix:
              properties: {}
              title: param
              type: object
            promptpay:
              properties: {}
              title: param
              type: object
            radar_options:
              properties:
                session:
                  maxLength: 5000
                  type: string
              title: radar_options
              type: object
            revolut_pay:
              properties: {}
              title: param
              type: object
            sepa_debit:
              properties:
                iban:
                  maxLength: 5000
                  type: string
              required:
              - iban
              title: param
              type: object
            sofort:
              properties:
                country:
                  enum:
                  - AT
                  - BE
                  - DE
                  - ES
                  - IT
                  - NL
                  type: string
              required:
              - country
              title: param
              type: object
            type:
              enum:
              - acss_debit
              - affirm
              - afterpay_clearpay
              - alipay
              - au_becs_debit
              - bacs_debit
              - bancontact
              - blik
              - boleto
              - cashapp
              - customer_balance
              - eps
              - fpx
              - giropay
              - grabpay
              - ideal
              - klarna
              - konbini
              - link
              - oxxo
              - p24
              - paynow
              - paypal
              - pix
              - promptpay
              - revolut_pay
              - sepa_debit
              - sofort
              - us_bank_account
              - wechat_pay
              - zip
              type: string
              x-stripeBypassValidation: true
            us_bank_account:
              properties:
                account_holder_type:
                  enum:
                  - company
                  - individual
                  type: string
                account_number:
                  maxLength: 5000
                  type: string
                account_type:
                  enum:
                  - checking
                  - savings
                  type: string
                financial_connections_account:
                  maxLength: 5000
                  type: string
                routing_number:
                  maxLength: 5000
                  type: string
              title: payment_method_param
              type: object
            wechat_pay:
              properties: {}
              title: param
              type: object
            zip:
              properties: {}
              title: param
              type: object
          required:
          - type
          title: 

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