The transaction object
amountis the transaction total. Negative = money out, positive = money in.- Single-category transactions have
category_id/category_nameset andsplits: null. Split transactions havesplitsand anulltop-level category. ready_to_assign: truemarks income that flows straight to Ready to Assign instead of a category.statusispending,cleared, orreconciled.review_statusisreviewedorneeds_review.- Transfers come in pairs: each side is a
type: "transfer"transaction whosetransfer_account_idpoints 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": true.
Create transactions
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
date, amount, category_id, ready_to_assign, splits, merchant_id (or merchant_name), notes (string or null), account_id, status, review_status.
- Changing
amounton a single-category transaction keeps its current category; changingcategory_idkeeps the amount. - To edit a split transaction’s amounts or categories, send the full
splitsarray. review_statusnever changes unless you send it explicitly.