Skip to main content

The transaction object

  • amount is the transaction total. Negative = money out, positive = money in.
  • Single-category transactions have category_id/category_name set and splits: null. Split transactions have splits and a null top-level category.
  • ready_to_assign: true marks income that flows straight to Ready to Assign instead of a category.
  • status is pending, cleared, or reconciled. review_status is reviewed or needs_review.
  • Transfers come in pairs: each side is a type: "transfer" transaction whose transfer_account_id points at the other account.

List transactions

Results are ordered newest-first. The response includes next_cursor; pass it back as cursor to fetch the next page, and stop when it is null.
Pages can contain fewer than limit items even when more results remain — always follow next_cursor rather than counting rows.

Get a transaction

Deleted transactions are returned with "deleted": true.

Create transactions

Send a single object under transaction, or up to 100 under transactions. The batch is atomic — if any row is invalid, nothing is created.
Auto-categorization. If you omit category_id (and don’t set ready_to_assign or splits) on a transaction that has a merchant, Kualia categorizes it automatically — the same way imported and AI-chat transactions are handled: your active rules, then your past categorizations for that merchant, learned merchant→category mappings, reviewed history, and finally an AI prediction for merchants it hasn’t seen before. Anything it can’t confidently categorize is left uncategorized. Auto-categorized rows still default to needs_review so you can confirm them in the app. Pass an explicit category_id to skip this entirely.

Transfers

Set "type": "transfer" to move money between two accounts. Both sides of the pair are created and returned.
amount must be positive for transfers. An optional category_id categorizes the outflow side (useful for credit-card payments).

Update a transaction

Send only the fields you want to change: date, amount, category_id, ready_to_assign, splits, merchant_id (or merchant_name), notes (string or null), account_id, status, review_status.
  • Changing amount on a single-category transaction keeps its current category; changing category_id keeps the amount.
  • To edit a split transaction’s amounts or categories, send the full splits array.
  • review_status never changes unless you send it explicitly.

Delete & restore

Deletes are soft: balances and category activity are rolled back, but the transaction can be restored. Deleting one side of a transfer deletes both sides.