Transactions

List transactions

Returns transactions you can access. Filters combine with AND. Each page contains up to 100 transactions.

get/transactions

Request

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

Query parameters

projectIdstring

Project ID or slug. Use none for unassigned transactions.

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

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

Example:manual

Transaction source. Separate multiple values with commas.

typestring

Transaction type. Separate multiple values with commas.

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

Current transaction status. Available statuses vary by source.

Example:posted

Filter by status. Separate multiple values with commas.

isReversalboolean

Set to true for refunds and other reversals.

contactIdstring

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

Example:txn_8f2a1c9e

Assigned contact ID.

budgetLineIdstring

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

Example:txn_8f2a1c9e

Budget line ID.

purchaseOrderIdstring

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

Example:txn_8f2a1c9e

Linked purchase order ID.

currencystring

Three-letter currency code. Required with amountMin or amountMax.

dateFromstring date-time

Earliest transaction time, inclusive. Must be on or before dateTo.

dateTostring date-time

Latest transaction time, inclusive.

amountMininteger

Minimum amount, inclusive, in minor currency units. Requires currency.

amountMaxinteger

Maximum amount, inclusive, in minor currency units. Requires currency.

isItemizedboolean

Set to true for itemized transactions or false for transactions without items.

merchantstring

Merchant name. Matching is case-insensitive and partial.

hasDocumentsboolean

Set to true for transactions with documents or false for transactions without documents.

qstring

Search transaction descriptions.

expandTransactionExpandKey[]

Comma list of related data to inline on transactions (depth ≤ 2). Unknown or too-deep key returns 400 expand_invalid.

[
  "items.account"
]
sort'timestamp' | 'amount' | 'status' | 'type' | 'description' | 'createdAt' | 'updatedAt'

Fields available for sorting. The default is timestamp in descending order.

Example:timestamp

Field to sort the transactions list by. A non-unique field appends ,id as the tiebreaker. Defaults to timestamp desc.

order'asc' | 'desc'

Sort direction.

limitinteger

Maximum number of items to return on a page. Capped at 100.

cursorstring

Cursor from the previous page's nextCursor. Use it with the same filters and sort.

withCountboolean

Include the total number of matching items. Defaults to false.

Response

A page of transactions.

nextCursorstring nullable

Cursor for the next page. Pass it as cursor with the same filters and sort. Null on the last page.

countinteger

Total number of matches. Included when withCount=true.

truncatedboolean

Whether the page contains fewer results than requested.

statusReachabilityStatusReachabilityMatrix

Transaction statuses available for each source.

Example response

{
  "data": [
    {
      "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"
      }
    }
  ],
  "nextCursor": "eyJpZCI6InR4bl84ZjJhMWM5ZSJ9",
  "statusReachability": {
    "manual": [
      "posted",
      "void",
      "projected"
    ],
    "plaid": [
      "pending",
      "posted",
      "void",
      "needs_review"
    ],
    "saturation_pay": [
      "unpaid",
      "pending",
      "posted",
      "void",
      "rejected"
    ],
    "saturation_credit": [
      "pending",
      "posted",
      "void",
      "needs_review",
      "rejected"
    ]
  }
}

Changes

Changes to this operation have not been checked yet.