List journal entries
Journal entries posted to the entity's general ledger, from every source (manual, imported, and those act books from synced records), with their lines. Amounts are integer atoms: divide by 100 for USD. Follow next_cursor until it is null; entries posted or removed while paging can shift later pages.
Query Parameters
- Type: stringnullableentity
External id of the entity to act for, from
GET /v1/entities. Required when signed in with OAuth (an organization can hold several entities; ask the user which one if more than one could apply). Optional with an API key, which is scoped to one entity already. - Type: stringFormat: datenullabledate
_from Inclusive lower bound on
entry_date. - Type: stringFormat: datenullabledate
_to Inclusive upper bound on
entry_date. - Type: array of string …100nullablegl
_account _ids external_ids from/v1/gl-accounts(repeat the key): only entries with a line posting to one of these accounts. - Type: array of JournalEntrySourceenumnullablesource
How the entries were created (repeat the key), e.g.
manual.- Type: enum
How the JE was created.
valuesmanualcorrectionclosing_entryleapfin_importquickbooksxeropuzzleintercompanyintercompany_elimination
- nullableamount
_min Inclusive lower bound on the entry's total (the sum of its debits), as a decimal in the entity's functional currency, not atoms:
10300or10300.50for USD. Pass the same value asamount_maxto find one amount.- Type: number
Inclusive lower bound on the entry's total (the sum of its debits), as a decimal in the entity's functional currency, not atoms:
10300or10300.50for USD. Pass the same value asamount_maxto find one amount.
- nullableamount
_max Inclusive upper bound on the entry's total, as a decimal in the entity's functional currency, not atoms.
- Type: number
Inclusive upper bound on the entry's total, as a decimal in the entity's functional currency, not atoms.
- Type: array of JournalEntryTypeenumnullabletype
What act booked the entry from (repeat the key), e.g.
invoiceorbill. Only entries act books from synced records have a type: manual entries and books imported from QuickBooks, Xero or Puzzle never match.- Type: enum
What act booked an entry from; the app's Journal Entries page offers the same list.
values- invoice
- customer
_payment - deposit
- credit
_note - refund
- bill
- bill
_payment - expense
- Type: stringsearchmin length:1max length:255nullable
Case-insensitive text matched against the entry's memo, number, GL accounts, counterparty names, and bill and invoice numbers, e.g. a vendor's name.
- Type: "entry_date" or "created_at"enumsort
Sort field.
- Type: "asc" or "desc"enumorder
Sort direction.
- Type: stringnullablecursor
Opaque cursor from the previous page's
next_cursor. Omit for the first page. - Type: integerlimitmin:1max:100
Entries per page (1-100). Keep it the same while following a cursor.
- Type: booleaninclude
_total Also return
total, the number of matching entries.
Responses
- application/json
- 400
A cursor that does not match the request (CAPI65), or an amount filter on an entity with no functional currency yet (CAPI64).
- 401
The credential was refused: none sent (CAPI11), an API key that is not valid (CAPI15), or an OAuth sign-in that has expired (CAPI16), was not issued for this API (CAPI17), names an organization T0 does not hold (CAPI18) or a membership that is no longer usable (CAPI19).
detailsays what to do. - 403
The key lacks customer_api:read, or the signed-in user cannot read journal entries in this entity (CAPI71).
- application/json
curl 'https://api.t0.ai/v1/journal-entries?sort=entry_date&order=desc&limit=50&include_total=false' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"id": "string",
"object": "journal_entry",
"created_at": "2026-11-11T18:10:37.340Z",
"updated_at": "2026-11-11T18:10:37.340Z",
"je_number": "string",
"entry_date": "2026-11-11",
"memo": "string",
"source": "string",
"currency": "string",
"transaction_currency": "string",
"atoms_per_unit": 1,
"transaction_atoms_per_unit": 1,
"total_debit_atoms": 1,
"total_credit_atoms": 1,
"total_transaction_debit_atoms": 1,
"total_transaction_credit_atoms": 1,
"status": "string",
"is_adjusting": false,
"counterparty_name": "string",
"lines": [
{
"id": "string",
"object": "journal_entry_line",
"created_at": "2026-11-11T18:10:37.340Z",
"updated_at": "2026-11-11T18:10:37.340Z",
"journal_entry_id": "string",
"account_id": "string",
"account_number": "string",
"account_name": "string",
"account_type": "bank",
"line_type": "debit",
"amount_atoms": 1,
"transaction_amount_atoms": 1,
"memo": "string",
"counterparty_type": "customer",
"counterparty_external_id": "string",
"counterparty_name": "string"
}
]
}
],
"next_cursor": "string",
"total": 1
}