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

  • 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.

  • Inclusive lower bound on entry_date.

  • Inclusive upper bound on entry_date.

  • external_ids from /v1/gl-accounts (repeat the key): only entries with a line posting to one of these accounts.

  • How the entries were created (repeat the key), e.g. manual.

  • Inclusive lower bound on the entry's total (the sum of its debits), as a decimal in the entity's functional currency, not atoms: 10300 or 10300.50 for USD. Pass the same value as amount_max to find one amount.

  • Inclusive upper bound on the entry's total, as a decimal in the entity's functional currency, not atoms.

  • What act booked the entry from (repeat the key), e.g. invoice or bill. Only entries act books from synced records have a type: manual entries and books imported from QuickBooks, Xero or Puzzle never match.

  • 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.

  • Sort field.

  • Sort direction.

  • Opaque cursor from the previous page's next_cursor. Omit for the first page.

  • Entries per page (1-100). Keep it the same while following a cursor.

  • Also return total, the number of matching entries.

Responses

  • application/json
  • A cursor that does not match the request (CAPI65), or an amount filter on an entity with no functional currency yet (CAPI64).

  • 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). detail says what to do.

  • The key lacks customer_api:read, or the signed-in user cannot read journal entries in this entity (CAPI71).

  • application/json
Request Example for get/v1/journal-entries
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
}