---
title: "Save payments"
method: POST
path: "/v6/payments"
tags: ["Payments"]
---

# Save payments

`POST /v6/payments`

Save new (or update existing) payments

## Request body

- MultiParamPaymentPostDto
  - `data` PaymentPostDto[], required
    - `id` string — Id of the payment, required when updating an existing payment
    - `date` string, date, required — Date of the payment
    - `amount` integer, required — Total amount of the payment
    - `description` string, required — Payment description
    - `notes` string, nullable — Notes for the payment
    - `status` 'ACTIVE' | 'INACTIVE' | 'REMOVED' — Status of the payment
    - `reviewStatus` 'RECONCILIATION_DISCREPANCY' | 'USER_REVIEW_REQUIRED' | 'ACCOUNTANT_REVIEW_REQUIRED' | 'PARTNER_REVIEW_REQUIRED' | 'AWAITING_MATCH' | 'STAGED' | 'RECONCILED' — Review status of the payment
    - `apiSourceId` string, nullable — Id of the payment on associated API
    - `bankAccountId` string, nullable — Id of the bank account associated with this payment
    - `dimensionValueIds` string[], nullable
    - `customerId` string, nullable — Id of the customer assigned to this payment
    - `vendorId` string, nullable — Id of the vendor associated with this payment
    - `categoryId` string, nullable — Id of the category associated with this payment
    - `glAccountId` string — GL account id, referencing an account in the chart of accounts
    - `children` object[], nullable
      - `id` string — Id of the child payment, required when updating an existing child payment
      - `amount` integer, required — Total amount of the child payment (in cents)
      - `apiItemId` string, nullable — Id of the child payment item on associated API
      - `dimensionValueIds` string[], nullable
      - `customerId` string, nullable — Id of the customer assigned to this child payment
      - `vendorId` string, nullable — Id of the vendor associated with this child payment
      - `categoryId` string, nullable — Id of the category associated with this child payment
      - `glAccountId` string, required — GL account id, referencing an account in the chart of accounts
      - `invoiceId` string, nullable — Id of the invoice that this payment paid for
      - `billId` string, nullable — Id of the bill that this payment paid for
    - `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

- ResponseListMultiResponsePaymentGetDto
  - `result` 'SUCCESS' | 'FAILURE' — The result of the action performed.
  - `data` MultiResponsePaymentGetDto[] — 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` PaymentGetDto — The data generated by the action performed.
      - `id` string, required — Id of the payment
      - `type` 'EXPENSE' | 'REVENUE' | 'TRANSFER_IN' | 'TRANSFER_OUT' | 'TAX_EXPENSE' | 'INVOICE_REVENUE' | 'PAYMENT_IN' | 'PAYMENT_OUT' | 'PAYROLL_EXPENSE' | 'BILL_EXPENSE' | 'LOAN_EXPENSE', required — Type of the payment
      - `date` string, date, required — Date of the payment
      - `amount` integer, required — Total amount of the payment
      - `displayName` string, required — Payment display name, useful for displaying this payment to a user
      - `description` string, required — Payment description
      - `notes` string, nullable, required — Notes for the payment
      - `status` 'ACTIVE' | 'INACTIVE' | 'REMOVED', required — Status of the payment
      - `reviewStatus` 'RECONCILIATION_DISCREPANCY' | 'USER_REVIEW_REQUIRED' | 'ACCOUNTANT_REVIEW_REQUIRED' | 'PARTNER_REVIEW_REQUIRED' | 'AWAITING_MATCH' | 'STAGED' | 'RECONCILED', required — Review status of the payment
      - `apiName` 'BOX' | 'CLOVER' | 'STRIPE' | 'PLAID' | 'KNOX' | 'UBER' | 'FRESHBOOKS' | 'HARVEST' | 'KW' | 'FRESHBOOKS2' | 'CAPITAL_ONE' | 'SQUARE' | 'DOTLOOP' | 'REALOGY' | 'UPWORK' | 'SHOPIFY' | 'DEDUCTR' | 'ENTERPRISE' | 'MOXIWORKS' | 'APPDIRECT' | 'LONEWOLF' | 'LONEWOLF_TRANSACTIONDESK' | 'SAMPLE_BANK' | 'TAXBOT' | 'GUSTO' | 'XERO' | 'UNIT' | 'MOOV' | 'QBO' | 'QUALPAY' | 'BENCH' | 'PARTNER_IMPLEMENTATION' | 'CHECK' | 'RUTTER' | 'WAVE' | 'MANUAL_ENTRY' | 'CSV_IMPORT' | 'ADYEN' | 'PAYABLI', required — Name of the API from which this payment originated
      - `apiSourceId` string, nullable, required — Id of the payment on associated API
      - `bankAccount` BankAccountExpanded, required — Bank account of the matching bank transaction
        - `id` string, required — Id of the bank account
        - `name` string — Name of the bank account
        - `displayName` string — Display Name of the bank account
      - `dimensionValues` DimensionValueExpanded[], required
        - `id` string, required — Id of the dimension value
        - `dimension` DimensionExpanded — Dimension for this dimension value
          - `id` string, required — Id of the dimension
          - `name` string — Name of the dimension
          - `requiredness` 'REQUIRED' | 'NOT_REQUIRED' — Requiredness of the dimension
        - `name` string — Name of the dimension value
        - `child` ChildDimensionValue — Child dimension value, if applicable
          - `id` string, required — Id of the dimension value
          - `dimension` DimensionExpanded — Dimension for this dimension value
            - `id` string, required — Id of the dimension
            - `name` string — Name of the dimension
            - `requiredness` 'REQUIRED' | 'NOT_REQUIRED' — Requiredness of the dimension
          - `name` string — Name of the dimension value
          - `child` ChildDimensionValue — recursive
      - `customer` CustomerExpanded, nullable, required — Customer associated with this time entry
        - `id` string, required — Id of the customer
        - `name` string — Name of the customer
        - `email` string — Email of the customer
      - `vendor` VendorExpanded, nullable, required — Vendor associated with this child payment
        - `id` string, required — Id of the vendor
        - `name` string — Name of the vendor
      - `category` CategoryExpanded, nullable, required — Category associated with this child payment
        - `id` string, required — Id of the category
        - `name` string — Name of the category
        - `iconUrl` string — Icon URL of the category
      - `glAccount` GlAccountExpanded, required — GL account details
        - `id` string, required — Id of the GL account
        - `name` string — Name of the GL account
        - `accountNo` string — Number of the GL account
        - `type` 'ASSET' | 'LIABILITY' | 'EQUITY' | 'INCOME' | 'COGS' | 'EXPENSE' | 'OTHER_INCOME' | 'OTHER_EXPENSE' | 'SUSPENSE' — Type the GL account
        - `iconUrl` string — Icon URL of the GL account
        - `displayName` string — Display name of the GL account
      - `bankTransaction` MatchingBankTransactionExpanded, nullable, required — The bank transaction matched to this payroll line item
        - `id` string — Id of the matching bank transaction
        - `apiSourceId` string, nullable — Id from the source of matching bank transaction
        - `amount` integer — Amount of the matching bank transaction (in cents)
        - `date` string, date — Date of the matching bank transaction
        - `description` string — Description of the matching bank transaction
        - `apiName` 'BOX' | 'CLOVER' | 'STRIPE' | 'PLAID' | 'KNOX' | 'UBER' | 'FRESHBOOKS' | 'HARVEST' | 'KW' | 'FRESHBOOKS2' | 'CAPITAL_ONE' | 'SQUARE' | 'DOTLOOP' | 'REALOGY' | 'UPWORK' | 'SHOPIFY' | 'DEDUCTR' | 'ENTERPRISE' | 'MOXIWORKS' | 'APPDIRECT' | 'LONEWOLF' | 'LONEWOLF_TRANSACTIONDESK' | 'SAMPLE_BANK' | 'TAXBOT' | 'GUSTO' | 'XERO' | 'UNIT' | 'MOOV' | 'QBO' | 'QUALPAY' | 'BENCH' | 'PARTNER_IMPLEMENTATION' | 'CHECK' | 'RUTTER' | 'WAVE' | 'MANUAL_ENTRY' | 'CSV_IMPORT' | 'ADYEN' | 'PAYABLI' — Name of the API of the matching bank transaction
        - `apiInstitutionId` string, nullable — Id of the institution that the matching bank transaction originated from
        - `bankAccount` BankAccountExpanded — Bank account of the matching bank transaction
          - `id` string, required — Id of the bank account
          - `name` string — Name of the bank account
          - `displayName` string — Display Name of the bank account
      - `children` PaymentChildGetDto[], required
        - `id` string, required — Id of the child payment
        - `type` 'EXPENSE' | 'REVENUE' | 'TRANSFER_IN' | 'TRANSFER_OUT' | 'TAX_EXPENSE' | 'INVOICE_REVENUE' | 'PAYMENT_IN' | 'PAYMENT_OUT' | 'PAYROLL_EXPENSE' | 'BILL_EXPENSE' | 'LOAN_EXPENSE', required — Type of the child payment
        - `amount` integer, required — Total amount of the child payment (in cents)
        - `displayName` string, required — Child payment display name
        - `description` string, required — Child payment description
        - `apiItemId` string, nullable, required — Id of the child payment item on associated API
        - `dimensionValues` DimensionValueExpanded[], required
          - `id` string, required — Id of the dimension value
          - `dimension` DimensionExpanded — Dimension for this dimension value
            - `id` string, required — Id of the dimension
            - `name` string — Name of the dimension
            - `requiredness` 'REQUIRED' | 'NOT_REQUIRED' — Requiredness of the dimension
          - `name` string — Name of the dimension value
          - `child` ChildDimensionValue — Child dimension value, if applicable
            - `id` string, required — Id of the dimension value
            - `dimension` DimensionExpanded — Dimension for this dimension value
              - …
            - `name` string — Name of the dimension value
            - `child` ChildDimensionValue — recursive
        - `customer` CustomerExpanded, nullable, required — Customer associated with this time entry
          - `id` string, required — Id of the customer
          - `name` string — Name of the customer
          - `email` string — Email of the customer
        - `vendor` VendorExpanded, nullable, required — Vendor associated with this child payment
          - `id` string, required — Id of the vendor
          - `name` string — Name of the vendor
        - `category` CategoryExpanded, nullable, required — Category associated with this child payment
          - `id` string, required — Id of the category
          - `name` string — Name of the category
          - `iconUrl` string — Icon URL of the category
        - `glAccount` GlAccountExpanded, required — GL account details
          - `id` string, required — Id of the GL account
          - `name` string — Name of the GL account
          - `accountNo` string — Number of the GL account
          - `type` 'ASSET' | 'LIABILITY' | 'EQUITY' | 'INCOME' | 'COGS' | 'EXPENSE' | 'OTHER_INCOME' | 'OTHER_EXPENSE' | 'SUSPENSE' — Type the GL account
          - `iconUrl` string — Icon URL of the GL account
          - `displayName` string — Display name of the GL account
        - `invoice` InvoiceExpanded, nullable, required — Invoice associated with this time entry
          - `id` string, required — Id of the invoice
          - `name` string — Name of the invoice
          - `date` string, date — Date of the invoice
          - `lineItems` InvoiceLineItem[]
            - `id` string — Id of the invoice line item
            - `amount` integer — Total amount of the invoice line item (in cents)
        - `bill` BillExpanded, nullable, required — Bill associated with this child payment
          - `id` string, required — Id of the bill
          - `name` string — Name of the bill
          - `lineItems` BillLineItem[]
            - `id` string — Id of the bill line item
            - `amount` integer — Total amount of the bill line item (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
    - `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 payments failed to save. See response body for error details.
- `400` — All payments 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/revisions/e9f0790a89af/schema)
