Transactions

Update a transaction

Updates a transaction. Financial fields can be changed only on manual transactions.

patch/transactions/{transactionId}

Request

  • Base URL: https://next-api.saturation.io/v1
  • URL: https://next-api.saturation.io/v1/transactions/{transactionId}
  • Auth: HTTP bearer

Path parameters

transactionIdstring required

A stable resource ID, such as prj_…, txn_…, or doc_….

Example:txn_8f2a1c9e

Transaction ID.

Request body

projectIdstring

A stable resource ID, such as prj_…, txn_…, or doc_….

contactIdstring

A stable resource ID, such as prj_…, txn_…, or doc_….

budgetLineIdstring

A stable resource ID, such as prj_…, txn_…, or doc_….

fringeIdstring

A stable resource ID, such as prj_…, txn_…, or doc_….

notesstring nullable
numberstring nullable
refstring nullable
timestampstring date-time

Transaction time. A date without a time is recorded at midnight UTC.

type'SaturationPCard' | 'ACH' | 'Cash' | 'Check' | 'CreditCard' | 'Deposit' | 'ETransfer' | 'Invoice' | 'Projection' | 'TimeCard' | 'Wire' | 'Withdrawal'

Transaction type. The API may return values not listed below.

status'unpaid' | 'pending' | 'posted' | 'void' | 'needs_review' | 'projected' | 'rejected'

Current transaction status. Available statuses vary by source.

descriptionstring nullable
merchantstring nullable
sourceLast4string nullable
sourceNamestring nullable
actualizedboolean

Whether the transaction is included in budget actuals.

Example request

{
  "projectId": "txn_8f2a1c9e",
  "contactId": "txn_8f2a1c9e",
  "budgetLineId": "txn_8f2a1c9e",
  "fringeId": "txn_8f2a1c9e",
  "amount": {
    "amount": 152900,
    "currency": "USD"
  },
  "type": "CreditCard",
  "status": "posted"
}

Response

The updated transaction.

idstring required

A stable resource ID, such as prj_…, txn_…, or doc_….

source'manual' | 'plaid' | 'saturation_pay' | 'saturation_credit' required

How the transaction entered Saturation. Financial fields are editable only for manual transactions.

sourceIdstring nullable

Reference supplied by the transaction source.

type'SaturationPCard' | 'ACH' | 'Cash' | 'Check' | 'CreditCard' | 'Deposit' | 'ETransfer' | 'Invoice' | 'Projection' | 'TimeCard' | 'Wire' | 'Withdrawal' required

Transaction type. The API may return values not listed below.

status'unpaid' | 'pending' | 'posted' | 'void' | 'needs_review' | 'projected' | 'rejected' required

Current transaction status. Available statuses vary by source.

isReversalboolean required

Whether the transaction is a refund or another reversal.

exchangeRatenumber nullable

Exchange rate to the workspace currency.

exchangeRateSource'bank' | 'api' | 'user'

Source of the exchange rate. The API may return values not listed below.

timestampstring date-time required

Time the transaction occurred.

descriptionstring nullable
merchantstring nullable

Merchant name supplied by the transaction source.

logoUrlstring uri nullable

Merchant logo URL.

categorystring nullable

Category supplied by the transaction source.

sourceLast4string nullable

Last four characters of the source account or card.

sourceNamestring nullable

Name of the source account or card.

numberstring nullable

Document, check, or invoice number.

refstring nullable

External reference.

payIdstring nullable

Related Saturation Pay payment ID.

notesstring nullable

Notes about the transaction.

contactIdstring

A stable resource ID, such as prj_…, txn_…, or doc_….

projectIdstring required

A stable resource ID, such as prj_…, txn_…, or doc_….

budgetLineIdstring

A stable resource ID, such as prj_…, txn_…, or doc_….

fringeIdstring

A stable resource ID, such as prj_…, txn_…, or doc_….

isItemizedboolean required

Whether the transaction has items.

actualizedboolean required

Whether the transaction is included in budget actuals.

purchaseOrderIdstring

A stable resource ID, such as prj_…, txn_…, or doc_….

createdAtstring date-time required
updatedAtstring date-time required

Example response

{
  "id": "txn_8f2a1c9e",
  "source": "manual",
  "type": "CreditCard",
  "status": "posted",
  "amount": {
    "amount": 152900,
    "currency": "USD"
  },
  "exchangeRateSource": "bank",
  "timestamp": "2026-05-20T14:03:00.000Z",
  "contactId": "txn_8f2a1c9e",
  "projectId": "txn_8f2a1c9e",
  "budgetLineId": "txn_8f2a1c9e",
  "fringeId": "txn_8f2a1c9e",
  "purchaseOrderId": "txn_8f2a1c9e",
  "contact": {
    "id": "txn_8f2a1c9e"
  },
  "documents": [
    {
      "id": "txn_8f2a1c9e"
    }
  ],
  "items": [
    {
      "id": "txn_8f2a1c9e",
      "lineNumber": "1",
      "budgetLineId": "txn_8f2a1c9e",
      "fringeId": "txn_8f2a1c9e",
      "contactId": "txn_8f2a1c9e",
      "qty": "3",
      "unit": "Day",
      "customUnitId": "txn_8f2a1c9e",
      "amount": {
        "amount": 152900,
        "currency": "USD"
      },
      "account": {
        "id": "txn_8f2a1c9e",
        "name": "Camera",
        "code": "1200"
      },
      "tagIds": [
        "txn_8f2a1c9e"
      ],
      "tags": [
        {
          "id": "txn_8f2a1c9e"
        }
      ]
    }
  ],
  "account": {
    "id": "txn_8f2a1c9e",
    "name": "Camera",
    "code": "1200"
  },
  "purchaseOrder": {
    "id": "txn_8f2a1c9e"
  }
}

Changes

Changes to this operation have not been checked yet.