QuickBooks Bank Accounts API

The bankAccount entity lets you create and update bank account objects. Apps can store and use bank accounts as a payment method for payment processing via the charges entity. Note: This entity can only be used for US-based QuickBooks Online companies. Available operations:POST/Create GET/Read Delete

Operations 5

POST /quickbooks/v4/customers/{id}/bank-accounts Create a bank account #
GET /quickbooks/v4/customers/{id}/bank-accounts Get a list of bank accounts #
POST /quickbooks/v4/customers/{id}/bank-accounts/createFromToken Create a bank account from a token #
DELETE /quickbooks/v4/customers/{id}/bank-accounts/{bankaccount_id} Delete a bank account #
GET /quickbooks/v4/customers/{id}/bank-accounts/{bankaccount_id} Get details about a bank account #

Documentation

Specifications

Schemas & Data

Other Resources

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/quickbooks:quickbooks-bank-accounts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

quickbooks-bank-accounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: QuickBooks Payments Bank Accounts API
  version: '2026-11-05'
  description: 'QuickBooks Payments API (v4): bank accounts, cards, charges, eChecks, tokens and payment receipts for a QuickBooks Payments merchant. Generated from the JSON Intuit''s API Explorer renders; Intuit publishes no OpenAPI document.'
  termsOfService: https://developer.intuit.com/app/developer/qbo/docs/legal-agreements/intuit-terms-of-service-for-intuit-developer-services
  contact:
    name: Intuit Developer Support
    url: https://help.developer.intuit.com/s/
  x-generated-from: documentation
  x-generator: convert-intuit-api-explorer.py (deterministic conversion of the provider's API Explorer JSON; no model)
  x-source:
  - https://static.developer.intuit.com/JSONObjects/EntityJsonObject_v1.json
  - https://static.developer.intuit.com/JSONObjects/CodesModelsJsonObjects_v2.json
  - https://static.developer.intuit.com/JSONObjects/TocJsonObject_v1.json
  x-generated: '2026-11-05'
servers:
- url: https://api.intuit.com
  description: Production
- url: https://sandbox.api.intuit.com
  description: Sandbox
security:
- oauth2:
  - com.intuit.quickbooks.payment
tags:
- name: Bank Accounts
  description: 'The bankAccount entity lets you create and update bank account objects.


    Apps can store and use bank accounts as a payment method for payment processing via the charges entity.


    Note: This entity can only be used for US-based QuickBooks Online companies.


    Available operations:POST/Create

    GET/Read

    Delete'
paths:
  /quickbooks/v4/customers/{id}/bank-accounts:
    post:
      operationId: createBankAccounts
      summary: Create a bank account
      tags:
      - Bank Accounts
      x-source: https://developer.intuit.com/app/developer/qbpayments/docs/api/resources/all-entities/bankaccounts
      x-intuit-operation: POST /quickbooks/v4/customers/<id>/bank-accounts
      description: This POST operation lets you create and store new bank account objects with your app.
      x-intuit-parameters-note:
      - "Header Parameters: In your request, specify the request-Id as a header parameter. If the server receives another request with the same request-Id, instead of performing the operation again and potentially returning an error, it sends the same response intended for the original request.\n\n The request-Id must be unique across all requests, regardless of endpoint, for a given QuickBooks Online company.\n\n To avoid duplicates, your app should generate a unique request-Id for each request. We recommend you generate request-Id values with libraries like java.util.UUID or .NET System.GUID."
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Request-Id
        in: header
        schema:
          type: string
        description: "The request-Id that uniquely identifies the HTTP request sent by your app to the server. \n\nThis lets apps correlate requests and responses in case it needs to resend a request due to a dropped connection."
        required: true
      - name: Id
        in: query
        schema:
          type: string
        description: 'The ID of the customer your app is creating the bank account for.

          If you''re using the QuickBooks Online Accounting API, you can use a customer, vendor, or employee object to get their ID.

          If the entity is a QuickBooks Online company, the value is the realm ID.'
        required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bankaccountrequest'
        required: true
        description: 'To create a bank account object, include the following required attributes:name

          accountNumber

          accountType

          routingNumber

          phone

          You can also include optional attributes:bankCode

          country

          default

          inputType'
      responses:
        '200':
          description: The response returns a new bank account object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankaccount'
        '400':
          $ref: '#/components/responses/Fault'
        '401':
          $ref: '#/components/responses/Fault'
        '429':
          $ref: '#/components/responses/Throttled'
      security:
      - oauth2:
        - com.intuit.quickbooks.payment
    get:
      operationId: getListOfBankAccounts
      summary: Get a list of bank accounts
      tags:
      - Bank Accounts
      x-source: https://developer.intuit.com/app/developer/qbpayments/docs/api/resources/all-entities/bankaccounts
      x-intuit-operation: GET /quickbooks/v4/customers/<id>/bank-accounts
      description: This GET operation gives you a list of up to 10 bank accounts for a user or QuickBooks Online company.
      x-intuit-parameters-note:
      - "Header Parameters: In your request, specify the request-Id as a header parameter. If the server receives another request with the same request-Id, instead of performing the operation again and potentially returning an error, it sends the same response intended for the original request.\n\n The request-Id must be unique across all requests, regardless of endpoint, for a given QuickBooks Online company.\n\n To avoid duplicates, your app should generate a unique request-Id for each request. We recommend you generate request-Id values with libraries like java.util.UUID or .NET System.GUID."
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Request-Id
        in: header
        schema:
          type: string
        description: "The request-Id that uniquely identifies the HTTP request sent by your app to the server. \n\nThis lets apps correlate requests and responses in case it needs to resend a request due to a dropped connection."
        required: true
      - name: Id
        in: query
        schema:
          type: string
        description: 'The ID of the user or QuickBooks Company you''re getting info for.

          If you''re using the QuickBooks Online Accounting API, you can use a customer, vendor, or employee object to get their ID.

          If the entity is a QuickBooks Online company, the value is the realm ID.'
        required: true
      responses:
        '200':
          description: Returns a list of bank account objects for the specified QuickBooks Online company. The list is in descending order starting with the most recently created accounts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankaccount'
        '400':
          $ref: '#/components/responses/Fault'
        '401':
          $ref: '#/components/responses/Fault'
        '429':
          $ref: '#/components/responses/Throttled'
      security:
      - oauth2:
        - com.intuit.quickbooks.payment
  /quickbooks/v4/customers/{id}/bank-accounts/createFromToken:
    post:
      operationId: createBankAccountFromToken
      summary: Create a bank account from a token
      tags:
      - Bank Accounts
      x-source: https://developer.intuit.com/app/developer/qbpayments/docs/api/resources/all-entities/bankaccounts
      x-intuit-operation: POST /quickbooks/v4/customers/<id>/bank-accounts/createFromToken
      description: This POST operation lets you use a token object to create a new bank account object, rather than creating one from scratch.
      x-intuit-parameters-note:
      - "Header Parameters: In your request, specify the request-Id as a header parameter. If the server receives another request with the same request-Id, instead of performing the operation again and potentially returning an error, it sends the same response intended for the original request.\n\n The request-Id must be unique across all requests, regardless of endpoint, for a given QuickBooks Online company.\n\n To avoid duplicates, your app should generate a unique request-Id for each request. We recommend you generate request-Id values with libraries like java.util.UUID or .NET System.GUID."
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Request-Id
        in: header
        schema:
          type: string
        description: "The request-Id that uniquely identifies the HTTP request sent by your app to the server. \n\nThis lets apps correlate requests and responses in case it needs to resend a request due to a dropped connection."
        required: true
      - name: Id
        in: query
        schema:
          type: string
        description: 'The ID of the customer your app is creating the bank account for.

          If you''re using the QuickBooks Online Accounting API, you can use a customer, vendor, or employee object to get their ID.

          If the entity is a QuickBooks Online company, the value is the realm ID.'
        required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/token'
        required: true
      responses:
        '200':
          description: The response returns a new bank account object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankaccount'
        '400':
          $ref: '#/components/responses/Fault'
        '401':
          $ref: '#/components/responses/Fault'
        '429':
          $ref: '#/components/responses/Throttled'
      security:
      - oauth2:
        - com.intuit.quickbooks.payment
  /quickbooks/v4/customers/{id}/bank-accounts/{bankaccount_id}:
    delete:
      operationId: deleteBankAccounts
      summary: Delete a bank account
      tags:
      - Bank Accounts
      x-source: https://developer.intuit.com/app/developer/qbpayments/docs/api/resources/all-entities/bankaccounts
      x-intuit-operation: DELETE /quickbooks/v4/customers/<id>/bank-accounts/<bankaccount_id>
      description: This DELETE operation lets you delete a bank account.
      x-intuit-parameters-note:
      - "Header Parameters: In your request, specify the request-Id as a header parameter. If the server receives another request with the same request-Id, instead of performing the operation again and potentially returning an error, it sends the same response intended for the original request.\n\n The request-Id must be unique across all requests, regardless of endpoint, for a given QuickBooks Online company.\n\n To avoid duplicates, your app should generate a unique request-Id for each request. We recommend you generate request-Id values with libraries like java.util.UUID or .NET System.GUID."
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: bankaccount_id
        in: path
        required: true
        schema:
          type: string
      - name: Request-Id
        in: header
        schema:
          type: string
        description: "The request-Id that uniquely identifies the HTTP request sent by your app to the server. \n\nThis lets apps correlate requests and responses in case it needs to resend a request due to a dropped connection."
        required: true
      - name: bankaccount_id
        in: query
        schema:
          type: string
        description: The bank account to be deleted.
        required: true
      - name: Id
        in: query
        schema:
          type: string
        description: The customer id to which a bank account should be deleted. If you are using QuickBooks Online, this can be obtained using the Customer resource in the Quickbooks Accounting API.  Otherwise, it can be the customer's ID stored in your app.
        required: true
      responses:
        '200':
          description: The response confirms the delete.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankaccount'
        '400':
          $ref: '#/components/responses/Fault'
        '401':
          $ref: '#/components/responses/Fault'
        '429':
          $ref: '#/components/responses/Throttled'
      security:
      - oauth2:
        - com.intuit.quickbooks.payment
    get:
      operationId: readBankAccounts
      summary: Get details about a bank account
      tags:
      - Bank Accounts
      x-source: https://developer.intuit.com/app/developer/qbpayments/docs/api/resources/all-entities/bankaccounts
      x-intuit-operation: GET /quickbooks/v4/customers/<id>/bank-accounts/<bankaccount_id>
      description: 'This GET operation gets info for a specific bank account object.


        Use the id attribute to identify the customer the bank account is associated with.'
      x-intuit-parameters-note:
      - "Header Parameters: In your request, specify the request-Id as a header parameter. If the server receives another request with the same request-Id, instead of performing the operation again and potentially returning an error, it sends the same response intended for the original request.\n\n The request-Id must be unique across all requests, regardless of endpoint, for a given QuickBooks Online company.\n\n To avoid duplicates, your app should generate a unique request-Id for each request. We recommend you generate request-Id values with libraries like java.util.UUID or .NET System.GUID."
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: bankaccount_id
        in: path
        required: true
        schema:
          type: string
      - name: Request-Id
        in: header
        schema:
          type: string
        description: "The request-Id that uniquely identifies the HTTP request sent by your app to the server. \n\nThis lets apps correlate requests and responses in case it needs to resend a request due to a dropped connection."
        required: true
      - name: bankaccount_id
        in: query
        schema:
          type: string
        description: The bank account you're calling.
        required: true
      - name: Id
        in: query
        schema:
          type: string
        description: 'The ID of the user or QuickBooks Company you''re getting info for.

          If you''re using the QuickBooks Online Accounting API, you can use a customer, vendor, or employee object to get their ID.

          If the entity is a QuickBooks Online company, the value is the realm ID.'
        required: true
      responses:
        '200':
          description: Returns info for the requested bank account object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankaccount'
        '400':
          $ref: '#/components/responses/Fault'
        '401':
          $ref: '#/components/responses/Fault'
        '429':
          $ref: '#/components/responses/Throttled'
      security:
      - oauth2:
        - com.intuit.quickbooks.payment
components:
  schemas:
    bankaccount:
      type: object
      title: bankaccount
      properties:
        Updated:
          type: string
          description: The time the object was last updated. In ISO 8601 date-time format. It appears as YYYY-MM-DDTHH:MM:SSZ.
          x-intuit-required: Conditionally required
        entityType:
          type: string
          description: 'The entity or user type the bank account is associated with. Example values: Customer, Employee, Vendor or Company'
          x-intuit-required: Optional
        Name:
          type: string
          description: The name of the bank account owner.
          x-intuit-required: Required
        AccountNumber:
          type: string
          description: "The number of the bank account.\n\n For privacy and security,\nAccount numbers that are 6 digits or less: all but the last 2 digits are masked\nAccount numbers that are 7 digits or longer: all but the last 4 digits are masked\n Account Number masking changes are available in Sandbox companies currently and will be available from July 11th, 2022 for Production companies."
          x-intuit-required: Required
        Default:
          type: boolean
          description: "Indicates if the bank account is the default. When users set a default, the account flag is true.\n\n This is the bank account QuickBooks uses when another isn't specified.\n\n The flag defaults to false. When a bank account flag is true, all other stored bank accounts are automatically set to false."
          x-intuit-required: Optional
        Country:
          type: string
          description: The ISO-standard country code. Refer to the ISO Country Code List.
          x-intuit-required: Optional
        Created:
          type: string
          description: The time the object was originally created. In ISO 8601 date-time format. It appears as YYYY-MM-DDTHH:MM:SSZ.
        InputType:
          type: string
          description: "Specifies the input type. \n\nValid values:KEYED: Indicates a manually-entered key.\nSCANNED"
          x-intuit-required: Optional
        Phone:
          type: string
          description: The phone number associated with the bank account.
          x-intuit-required: Required
        AccountType:
          type: string
          description: "The type of bank account. \n\nValid values:PERSONAL_CHECKING: Use for personal checking accounts.\n PERSONAL_SAVINGS: Use for personal savings accounts.\nBUSINESS_CHECKING: Use for business checking accounts.\nBUSINESS_SAVINGS: Use for business savings accounts."
          x-intuit-required: Required
        BankCode:
          type: string
          description: 'For US: This should also be the routing number for the bank associated with the account.'
          x-intuit-required: Optional
        entityId:
          type: string
          description: The ID of the entity the bank account is associated with.
          x-intuit-required: Optional
        RoutingNumber:
          type: string
          description: "The routing number for the bank associated with the account.\n\n For privacy and security, we only display the last four digits of the routing number."
          x-intuit-required: Required
        Id:
          type: string
          description: "The unique identifier of a bank account object.\n\n The id is required for update or delete operations."
          x-intuit-required: Conditionally required
      required:
      - AccountNumber
      - AccountType
      - Name
      - Phone
      - RoutingNumber
    bankaccountrequest:
      type: object
      title: bankaccountrequest
      properties:
        Name:
          type: string
          description: The name of the bank account holder.
          x-intuit-required: Required
        AccountNumber:
          type: string
          description: The bank account number to be used. For security purposes, only the last four digits are displayed.
          x-intuit-required: Required
        Default:
          type: boolean
          description: A flag to indicate whether the account is the default, which will be used when one is not explicitly specified. The flag defaults to   false  ; when one account is flagged as true, all other stored accounts in the collection will automatically be set to false.
          x-intuit-required: Optional
        Country:
          type: string
          description: ISO-standard country code. Refer to Country Code List for a list of codes.
          x-intuit-required: Optional
        Phone:
          type: string
          description: A phone number to be associated with the account.
          x-intuit-required: Required
        AccountType:
          type: string
          description: "The type of account to be used. Valid values include:  PERSONAL_CHECKING  the account is a personal checking account.\n  PERSONAL_SAVINGS  the account is a personal savings account.\n  BUSINESS_CHECKING  the account is a business checking account.\n  BUSINESS_SAVINGS  the account is a business savings account."
          x-intuit-required: Required
        BankCode:
          type: string
          description: A code assigned by a central bank, a bank supervisory body or a Bankers Association in a country to all its licensed member banks or financial institutions. Varies depending on country.
          x-intuit-required: Optional
        RoutingNumber:
          type: string
          description: The bank routing number. For security purposes, only the last four digits are displayed.
          x-intuit-required: Required
        InputType:
          type: string
          description: 'Specifies the input type. Valid values include:  KEYED A manually-entered account key.'
          x-intuit-required: Optional
      required:
      - AccountNumber
      - AccountType
      - Name
      - Phone
      - RoutingNumber
    IntuitFault:
      type: object
      properties:
        Fault:
          type: object
          properties:
            type:
              type: string
              enum:
              - ValidationFault
              - SystemFault
              - AuthenticationFault
              - AuthorizationFault
            Error:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  element:
                    type: string
                  Message:
                    type: string
                  Detail:
                    type: string
        time:
          type: string
          format: date-time
    token:
      type: object
      title: token
      properties:
        Value:
          type: string
          description: The ID of the system generated token. Learn more about the token entity.
          x-intuit-required: Required
      required:
      - Value
  responses:
    Fault:
      description: Error. The body carries a Fault element (type ValidationFault, SystemFault, AuthenticationFault or AuthorizationFault) with one or more Error entries (code, element, Message, Detail).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/IntuitFault'
    Throttled:
      description: 'HTTP 429: the request was throttled. Wait 60 seconds before retrying.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/IntuitFault'
  securitySchemes:
    oauth2:
      type: oauth2
      description: 'Intuit OAuth 2.0 (authorization code). Discovery: https://developer.api.intuit.com/.well-known/openid_configuration'
      flows:
        authorizationCode:
          authorizationUrl: https://appcenter.intuit.com/connect/oauth2
          tokenUrl: https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer
          refreshUrl: https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer
          scopes:
            com.intuit.quickbooks.accounting: Grants access to the QuickBooks Online Accounting API, which focuses on accounting data.
            com.intuit.quickbooks.payment: Grants access to the QuickBooks Payments API, which focuses on payments processing.
            openid: Grants access to OpenID Connect features.
            profile: User's given and family names info
            email: User's email address
            phone: User's phone number
            address: User's physical address
x-generated-from: documentation
x-provenance:
  method: generated
  generated: '2026-11-05'
  source: https://developer.intuit.com/app/developer/qbpayments/docs/api/resources/all-entities/charges
  note: Converted from the JSON the developer.intuit.com API Explorer loads (static.developer.intuit.com/JSONObjects). Intuit publishes no OpenAPI document; this is a faithful machine transformation of its own reference data, graded as generated.