Skip to main content
GET
Get a transaction

Authorizations

Authorization
string
header
required

A workspace API key created in ThinkOut settings. One key reads one workspace.

Path Parameters

id
string<uuid>
required

Query Parameters

expand
enum<string>[]

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.

Available options:
account,
category,
counterparty,
labels

Response

The transaction.

object
string
required
Allowed value: "transaction"
id
string<uuid>
required
date
string<date>
required

Booking date. There is no time component.

Example:

"2026-09-03"

amount
string
required

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.

Pattern: ^-?[0-9]+(\.[0-9]+)?$
Example:

"-1250.00"

currency
string
required

ISO 4217 alphabetic currency code.

Pattern: ^[A-Z]{3}$
Example:

"RON"

direction
enum<string>
required

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.

Available options:
inflow,
outflow
status
enum<string>
required

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.

Available options:
booked,
pending
source
enum<string>
required

How the transaction entered ThinkOut.

Available options:
manual,
import,
bank
description
string | null
required
Example:

"ORANGE ROMANIA SA"

comment
string | null
required

Free text added by users in ThinkOut.

account
required

An account id, or the full account when named in expand.

category
required

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.

counterparty
required

A counterparty id, the full counterparty when named in expand, or null when unattributed.

labels
(string<uuid> | object)[]
required

Label ids, or the full labels when labels is named in expand.

bank_details
object | null
required

Raw fields received from the bank. Present only on source: bank transactions.

created_at
string<date-time>
required
updated_at
string<date-time>
required