Get a transaction
Returns one transaction.
Authorizations
A workspace API key created in ThinkOut settings. One key reads one workspace.
Path Parameters
Query Parameters
Relations to return as full objects instead of ids. Comma-separated.
Without it every relation is an id. Naming one here replaces the id with the object it points at. Expansion goes one level deep; an unsupported name is rejected.
Supported here: account, category, counterparty, labels.
account, category, counterparty, labels Response
The transaction.
"transaction"Booking date. There is no time component.
"2026-09-03"
Decimal amount as a string. Signed on transactions, forecasts and report figures,
where negative means an outflow. The sign is authoritative: direction is derived
from it and the two can never disagree.
^-?[0-9]+(\.[0-9]+)?$"-1250.00"
ISO 4217 alphabetic currency code.
^[A-Z]{3}$"RON"
Whether money comes in or goes out.
On a transaction or a forecast it follows the sign of amount and can never
disagree with it. It is present so that responses can be grouped and read without
inspecting signs.
inflow, outflow pending transactions come from a bank and are not yet booked. A pending amount can
change when it books, and updated_at moves when it does, so upsert by id rather
than treating a pending row as final.
booked, pending How the transaction entered ThinkOut.
manual, import, bank "ORANGE ROMANIA SA"
Free text added by users in ThinkOut.
An account id, or the full account when named in expand.
null when the transaction has no category. That includes every transaction
split inside ThinkOut, where categorisation moved to the pieces and the pieces
are not exposed by this API.
A counterparty id, the full counterparty when named in expand, or null when unattributed.
Label ids, or the full labels when labels is named in expand.
Raw fields received from the bank. Present only on source: bank transactions.