---
title: "Save bank accounts"
method: POST
path: "/v6/banks/accounts"
tags: ["Bank Accounts"]
---

# Save bank accounts

`POST /v6/banks/accounts`

Save new (or update existing) bank accounts

## Request body

- MultiParamBankAccountPostDto
  - `data` BankAccountPostDto[], required
    - `id` string — Id of the bank account, required when updating an existing bank account
    - `name` string — Display name for the bank account
    - `status` 'ACTIVE' | 'INACTIVE' | 'REMOVED' — Status of the account
    - `apiName` 'PLAID' | 'UNIT' | 'STRIPE' | 'SHOPIFY' | 'SQUARE' | 'RUTTER' | 'UBER' | 'MOOV' | 'QUALPAY' | 'MANUAL_ENTRY' | 'CSV_IMPORT' | 'PARTNER_IMPLEMENTATION' | 'QBO' | 'XERO' | 'BENCH' | 'WAVE' — Name of the API from which this account originated
    - `iconUrl` string — Icon URL for the bank account
    - `mask` string — Mask of the user's bank account, often the last 4 digits of the account number
    - `type` 'DEPOSITORY' | 'CREDIT' | 'EQUITY' | 'LOAN' | 'INVESTMENT' | 'OTHER' — Type of the user's bank account
    - `syncTransactions` boolean — Whether to sync transactions for this account
    - `tranStartDate` string, date — Earliest day for which to pull transactions
    - `glAccountId` string — GL account id, referencing an account in the chart of accounts
    - `beginningBalance` integer — Beginning balance for the bank account (in cents)
    - `customData` JsonNode, nullable — Custom JSON in which you can store any data with max length of 2000 characters
      - `empty` boolean
      - `array` boolean
      - `null` boolean
      - `object` boolean
      - `float` boolean
      - `string` boolean
      - `number` boolean
      - `missingNode` boolean
      - `valueNode` boolean
      - `nodeType` 'ARRAY' | 'BINARY' | 'BOOLEAN' | 'MISSING' | 'NULL' | 'NUMBER' | 'OBJECT' | 'POJO' | 'STRING'
      - `pojo` boolean
      - `integralNumber` boolean
      - `floatingPointNumber` boolean
      - `short` boolean
      - `int` boolean
      - `long` boolean
      - `double` boolean
      - `bigDecimal` boolean
      - `bigInteger` boolean
      - `textual` boolean
      - `boolean` boolean
      - `binary` boolean
      - `container` boolean
      - `embeddedValue` boolean

## Response `200`

Success

- ResponseListMultiResponseBankAccountGetDto
  - `result` 'SUCCESS' | 'FAILURE' — The result of the action performed.
  - `data` MultiResponseBankAccountGetDto[] — The data generated by the action performed.
    - `result` 'SUCCESS' | 'FAILURE' — The result of the action performed.
    - `statusCode` 200 | 400 | 401 | 403 | 404 | 500 — The HTTP status code for the action performed.
    - `data` BankAccountGetDto — The data generated by the action performed.
      - `id` string, required — Id of the account
      - `status` 'ACTIVE' | 'INACTIVE' | 'REMOVED', required — Status of the account
      - `apiName` 'PLAID' | 'UNIT' | 'STRIPE' | 'SHOPIFY' | 'SQUARE' | 'RUTTER' | 'UBER' | 'MOOV' | 'QUALPAY' | 'MANUAL_ENTRY' | 'CSV_IMPORT' | 'PARTNER_IMPLEMENTATION' | 'QBO' | 'XERO' | 'BENCH' | 'WAVE', required — Name of the API from which this transaction originated
      - `iconUrl` string, nullable, required — Icon URL for the bank account
      - `name` string, required — Display name for the bank account
      - `mask` string, nullable, required — Mask of the user's bank account, often the last 4 digits of the account number
      - `integration` IntegrationExpanded, nullable, required — Institution data for the bank account
        - `id` string, nullable — The id of the integration this account belongs to, if applicable
        - `apiInstitutionId` string, nullable — Id of the institution that the bank account or transaction originated from
      - `type` 'DEPOSITORY' | 'CREDIT' | 'EQUITY' | 'LOAN' | 'INVESTMENT' | 'OTHER', required — Type of the user's bank account
      - `subType` string, nullable, required — Sub-type of the user's bank account
      - `lastSyncedDate` string, date-time, nullable, required — Date of the last attempt to sync the account
      - `syncTransactions` boolean, required — Whether to sync transactions for this account
      - `isSupported` boolean, required — Whether the bank account type is supported
      - `tranStartDate` string, date, nullable, required — Earliest day for which to pull transactions
      - `tranMinStartDate` string, date, nullable, required — Earliest day for which transactions can be made available
      - `latestTransactionDate` string, date, nullable, required — Date of the most recent Tight transaction
      - `glAccountId` string, nullable, required — GL account id, referencing an account in the chart of accounts
      - `beginningBalanceData` BeginningBalanceDto, required — Beginning balance data for the bank account
        - `journalEntry` JournalEntryExpanded, nullable — The journal entry responsible for this beginning balance
          - `id` string, nullable, required — Id of the Journal Entry
          - `tranDate` string, date, nullable, required — Date this journal entry was created
        - `amount` integer, nullable — The beginning balance of this account
      - `accountBalance` integer, nullable, required — 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
    - `error` ErrorItem[]
      - `type` 'UNKNOWN_ERROR' | 'INVALID_TOKEN' | 'EXPIRED_TOKEN' | 'FORBIDDEN' | 'BAD_REQUEST' | 'JSON_ERROR' | 'DUPLICATE' | 'REQUIRED' | 'INVALID_VALUE' | 'NOT_MODIFIABLE' | 'INVALID_FORMAT' | 'NOT_FOUND' — The type of the error. Safe for programmatic use.
      - `message` string — A human-readable message providing more details about the error. Safe for displaying to a user.
      - `param` string — 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.
  - `error` ErrorItem[]
    - `type` 'UNKNOWN_ERROR' | 'INVALID_TOKEN' | 'EXPIRED_TOKEN' | 'FORBIDDEN' | 'BAD_REQUEST' | 'JSON_ERROR' | 'DUPLICATE' | 'REQUIRED' | 'INVALID_VALUE' | 'NOT_MODIFIABLE' | 'INVALID_FORMAT' | 'NOT_FOUND' — The type of the error. Safe for programmatic use.
    - `message` string — A human-readable message providing more details about the error. Safe for displaying to a user.
    - `param` string — 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.

## Other responses

- `207` — Some bank accounts failed to save. See response body for error details.
- `400` — All bank accounts failed to save.
- `401` — Not authenticated
- `403` — Not authorized
- `404` — Endpoint not found
- `500` — Internal server error

---

[API](https://skmtc.net/tight/apis/tight-api.md) · [All operations](https://skmtc.net/tight/apis/tight-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tight/tight-api/versions/e9f0790a89af/schema)
