> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tight.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Save bank accounts

> Save new (or update existing) bank accounts



## OpenAPI

````yaml https://dev.tight.com/v3/api-docs post /v6/banks/accounts
openapi: 3.0.1
info:
  title: Tight API
  contact:
    name: Hurdlr, Inc. (dba Tight)
    url: https://www.tight.com
    email: api@tight.com
  version: 6.0.0
servers:
  - url: https://sandbox.tight.com
    description: Staging Environment
  - url: https://prod.tight.com
    description: Production Environment
security:
  - EmbedToken: []
paths:
  /v6/banks/accounts:
    post:
      tags:
        - Bank Accounts
      summary: Save bank accounts
      description: Save new (or update existing) bank accounts
      operationId: postBankAccounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultiParamBankAccountPostDto'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ResponseListMultiResponseBankAccountGetDto
        '207':
          description: >-
            Some bank accounts failed to save. See response body for error
            details.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ResponseListMultiResponseBankAccountGetDto
        '400':
          description: All bank accounts failed to save.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ResponseListMultiResponseBankAccountGetDto
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                result: FAILURE
                error:
                  - type: INVALID_TOKEN
                    message: Invalid access token
        '403':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                result: FAILURE
                error:
                  - type: FORBIDDEN
                    message: Expired access token
        '404':
          description: Endpoint not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                result: FAILURE
                error:
                  - type: BAD_REQUEST
                    message: Resource not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                result: FAILURE
                error:
                  - type: UNKNOWN_ERROR
                    message: Something went wrong. Please try again later.
      security:
        - EmbedToken: []
components:
  schemas:
    MultiParamBankAccountPostDto:
      required:
        - data
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BankAccountPostDto'
    ResponseListMultiResponseBankAccountGetDto:
      type: object
      properties:
        result:
          type: string
          description: The result of the action performed.
          enum:
            - SUCCESS
            - FAILURE
        data:
          type: array
          description: The data generated by the action performed.
          items:
            $ref: '#/components/schemas/MultiResponseBankAccountGetDto'
        error:
          type: array
          items:
            $ref: '#/components/schemas/ErrorItem'
    ErrorResponse:
      type: object
      properties:
        result:
          type: string
          description: The result of the action performed.
          enum:
            - SUCCESS
            - FAILURE
        data:
          type: object
          description: The data generated by the action performed.
          nullable: true
        error:
          type: array
          items:
            $ref: '#/components/schemas/ErrorItem'
    BankAccountPostDto:
      type: object
      properties:
        id:
          type: string
          description: >-
            Id of the bank account, required when updating an existing bank
            account
          example: bka_28868401
        name:
          type: string
          description: Display name for the bank account
          nullable: false
          example: Chase Checking
        status:
          type: string
          description: Status of the account
          nullable: false
          example: ACTIVE
          enum:
            - ACTIVE
            - INACTIVE
            - REMOVED
        apiName:
          type: string
          description: Name of the API from which this account originated
          nullable: false
          example: PLAID
          enum:
            - PLAID
            - UNIT
            - STRIPE
            - SHOPIFY
            - SQUARE
            - RUTTER
            - UBER
            - MOOV
            - QUALPAY
            - MANUAL_ENTRY
            - CSV_IMPORT
            - PARTNER_IMPLEMENTATION
            - QBO
            - XERO
            - BENCH
            - WAVE
        iconUrl:
          type: string
          description: Icon URL for the bank account
          nullable: false
          example: https://cdn.sandbox.tight.com/icons/banks/56.png
        mask:
          type: string
          description: >-
            Mask of the user's bank account, often the last 4 digits of the
            account number
          nullable: false
          example: '1234'
        type:
          type: string
          description: Type of the user's bank account
          nullable: false
          example: DEPOSITORY
          enum:
            - DEPOSITORY
            - CREDIT
            - EQUITY
            - LOAN
            - INVESTMENT
            - OTHER
        syncTransactions:
          type: boolean
          description: Whether to sync transactions for this account
          nullable: false
          example: true
        tranStartDate:
          type: string
          description: Earliest day for which to pull transactions
          format: date
          nullable: false
          example: '2025-01-01'
        glAccountId:
          type: string
          description: GL account id, referencing an account in the chart of accounts
          nullable: false
        beginningBalance:
          type: integer
          description: Beginning balance for the bank account (in cents)
          format: int64
          nullable: false
          example: 100000
        customData:
          $ref: '#/components/schemas/JsonNode'
    MultiResponseBankAccountGetDto:
      type: object
      properties:
        result:
          type: string
          description: The result of the action performed.
          enum:
            - SUCCESS
            - FAILURE
        statusCode:
          $ref: '#/components/schemas/HttpStatus'
        data:
          $ref: '#/components/schemas/BankAccountGetDto'
        error:
          type: array
          items:
            $ref: '#/components/schemas/ErrorItem'
      description: The data generated by the action performed.
    ErrorItem:
      type: object
      properties:
        type:
          type: string
          description: The type of the error. Safe for programmatic use.
          enum:
            - UNKNOWN_ERROR
            - INVALID_TOKEN
            - EXPIRED_TOKEN
            - FORBIDDEN
            - BAD_REQUEST
            - JSON_ERROR
            - DUPLICATE
            - REQUIRED
            - INVALID_VALUE
            - NOT_MODIFIABLE
            - INVALID_FORMAT
            - NOT_FOUND
        message:
          type: string
          description: >-
            A human-readable message providing more details about the error.
            Safe for displaying to a user.
        param:
          type: string
          description: >-
            If the error is parameter-specific, the parameter related to the
            error. This can be used to display a message near the correct form
            field.
      description: Errors associated with the action performed, if applicable.
    JsonNode:
      type: object
      properties:
        empty:
          type: boolean
        array:
          type: boolean
        'null':
          type: boolean
        object:
          type: boolean
        float:
          type: boolean
        string:
          type: boolean
        number:
          type: boolean
        missingNode:
          type: boolean
        valueNode:
          type: boolean
        nodeType:
          type: string
          enum:
            - ARRAY
            - BINARY
            - BOOLEAN
            - MISSING
            - 'NULL'
            - NUMBER
            - OBJECT
            - POJO
            - STRING
        pojo:
          type: boolean
        integralNumber:
          type: boolean
        floatingPointNumber:
          type: boolean
        short:
          type: boolean
        int:
          type: boolean
        long:
          type: boolean
        double:
          type: boolean
        bigDecimal:
          type: boolean
        bigInteger:
          type: boolean
        textual:
          type: boolean
          deprecated: true
        boolean:
          type: boolean
        binary:
          type: boolean
        container:
          type: boolean
        embeddedValue:
          type: boolean
      description: >-
        Custom JSON in which you can store any data with max length of 2000
        characters
      nullable: true
      example:
        internal_key: some_internal_key
        some_other_field: 23434
    HttpStatus:
      type: integer
      description: The HTTP status code for the action performed.
      format: int32
      enum:
        - 200
        - 400
        - 401
        - 403
        - 404
        - 500
    BankAccountGetDto:
      required:
        - accountBalance
        - apiName
        - beginningBalanceData
        - glAccountId
        - iconUrl
        - id
        - integration
        - isSupported
        - lastSyncedDate
        - latestTransactionDate
        - mask
        - name
        - status
        - subType
        - syncTransactions
        - tranMinStartDate
        - tranStartDate
        - type
      type: object
      properties:
        id:
          type: string
          description: Id of the account
          example: '123456'
        status:
          type: string
          description: Status of the account
          example: ACTIVE
          enum:
            - ACTIVE
            - INACTIVE
            - REMOVED
        apiName:
          type: string
          description: Name of the API from which this transaction originated
          example: PLAID
          enum:
            - PLAID
            - UNIT
            - STRIPE
            - SHOPIFY
            - SQUARE
            - RUTTER
            - UBER
            - MOOV
            - QUALPAY
            - MANUAL_ENTRY
            - CSV_IMPORT
            - PARTNER_IMPLEMENTATION
            - QBO
            - XERO
            - BENCH
            - WAVE
        iconUrl:
          type: string
          description: Icon URL for the bank account
          nullable: true
          example: https://cdn.sandbox.tight.com/icons/banks/56.png
        name:
          type: string
          description: Display name for the bank account
          example: Chase Checking
        mask:
          type: string
          description: >-
            Mask of the user's bank account, often the last 4 digits of the
            account number
          nullable: true
          example: '1234'
        integration:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/IntegrationExpanded'
        type:
          type: string
          description: Type of the user's bank account
          example: DEPOSITORY
          enum:
            - DEPOSITORY
            - CREDIT
            - EQUITY
            - LOAN
            - INVESTMENT
            - OTHER
        subType:
          type: string
          description: Sub-type of the user's bank account
          nullable: true
          example: CHECKING
        lastSyncedDate:
          type: string
          description: Date of the last attempt to sync the account
          format: date-time
          nullable: true
        syncTransactions:
          type: boolean
          description: Whether to sync transactions for this account
          example: true
        isSupported:
          type: boolean
          description: Whether the bank account type is supported
          example: true
        tranStartDate:
          type: string
          description: Earliest day for which to pull transactions
          format: date
          nullable: true
        tranMinStartDate:
          type: string
          description: Earliest day for which transactions can be made available
          format: date
          nullable: true
        latestTransactionDate:
          type: string
          description: Date of the most recent Tight transaction
          format: date
          nullable: true
          example: '2025-01-01'
        glAccountId:
          type: string
          description: GL account id, referencing an account in the chart of accounts
          nullable: true
        beginningBalanceData:
          $ref: '#/components/schemas/BeginningBalanceDto'
        accountBalance:
          type: integer
          description: >-
            Balance of the bank account (in cents). If the account is present in
            Plaid's Accounts API, this will be the balance of that bank account
            as tracked by Plaid. Otherwise, this will be the balance of the bank
            account as tracked by Tight. If neither balance is available, this
            field will be null
          format: int64
          nullable: true
          example: 100000
      description: The data generated by the action performed.
    IntegrationExpanded:
      type: object
      properties:
        id:
          type: string
          description: The id of the integration this account belongs to, if applicable
          nullable: true
        apiInstitutionId:
          type: string
          description: >-
            Id of the institution that the bank account or transaction
            originated from
          nullable: true
      description: Institution data for the bank account
      nullable: true
    BeginningBalanceDto:
      type: object
      properties:
        journalEntry:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/JournalEntryExpanded'
        amount:
          type: integer
          description: The beginning balance of this account
          format: int64
          nullable: true
      description: Beginning balance data for the bank account
    JournalEntryExpanded:
      required:
        - id
        - tranDate
      type: object
      properties:
        id:
          type: string
          description: Id of the Journal Entry
          nullable: true
        tranDate:
          type: string
          description: Date this journal entry was created
          format: date
          nullable: true
      description: The journal entry responsible for this beginning balance
      nullable: true
  securitySchemes:
    EmbedToken:
      type: http
      description: >-
        Bearer authentication header of the form `Bearer <token>`, see
        [Authentication for more
        detail](/api-reference/authentication#partner-level-authentication).
      scheme: bearer

````