Lumeo Docs
API Reference

Ledger

Account balances, journal entries, and reconciliation status.

The Ledger API exposes the double-entry ledger backed by TigerBeetle. Every balance and reconciliation record traces to an immutable journal entry. See The ledger model for the conceptual overview.

Endpoints

MethodPathDescription
GET/ledger/accounts/:accountId/balanceCurrent settled, pending, and reserved balance
GET/ledger/accounts/:accountId/entriesPaginated journal entries for an account
GET/ledger/reconciliation/:paymentIdReconciliation status for a payment
POST/ledger/reconciliation/:paymentId/resolveManually resolve an unmatched payment

GET /ledger/accounts/:accountId/balance

Returns the current balance for an account. Amounts are in INR paise (integer).

Authentication

ledger:read scope required.

Response — 200 OK

{
  "accountId": "acc_01j4abc",
  "type": "SETTLED",
  "settled": 18420050,
  "pending": 4150000,
  "reserved": 2000000,
  "currency": "INR",
  "asOf": "2026-07-01T09:14:22.000Z"
}

To convert paise to rupees: settled / 100 → ₹1,84,200.50.


GET /ledger/accounts/:accountId/entries

Returns a paginated list of journal entries. Each entry is linked to the originating payment, fee movement, or reconciliation event.

Query parameters

ParameterTypeDescription
fromISO 8601Filter entries from this date
toISO 8601Filter entries up to this date
pagenumberPage number (default: 1)
limitnumberEntries per page (default: 25, max: 100)

Response — 200 OK

{
  "entries": [
    {
      "id": "entry_01j4abc",
      "type": "CREDIT",
      "amount": 4175000,
      "currency": "INR",
      "description": "Settlement — invoice-2026-0001",
      "paymentId": "clx1a2b3c4d5e6f7g8h9",
      "firaId": "fira_01j4abc",
      "reconciledAt": "2026-07-01T09:14:28.000Z",
      "createdAt": "2026-07-01T09:14:22.000Z"
    }
  ],
  "total": 28,
  "page": 1,
  "limit": 25
}

GET /ledger/reconciliation/:paymentId

Returns the reconciliation status for a payment — whether it has been matched to a FIRA, an invoice reference, and a ledger entry.

Response — 200 OK — reconciled

{
  "paymentId": "clx1a2b3c4d5e6f7g8h9",
  "status": "RECONCILED",
  "invoiceRef": "invoice-2026-0001",
  "firaId": "fira_01j4abc",
  "ledgerEntryId": "entry_01j4abc",
  "reconciledAt": "2026-07-01T09:14:28.000Z"
}

Response — 200 OK — pending reconciliation

{
  "paymentId": "clx_unmatched_123",
  "status": "PENDING_RECONCILIATION",
  "invoiceRef": null,
  "firaId": "fira_01j4xyz",
  "ledgerEntryId": "entry_01j4xyz",
  "reason": "No matching invoice reference found",
  "createdAt": "2026-07-01T09:14:22.000Z"
}

POST /ledger/reconciliation/:paymentId/resolve

Manually resolves an unmatched payment by supplying the missing invoice reference or marking it as a known exception.

Request body

FieldTypeRequiredDescription
invoiceRefstringNoInvoice reference to link
notestringNoReason for manual resolution, max 512 characters
markAsExceptionbooleanNoFlag as a known reconciliation exception

Response — 200 OK

{
  "paymentId": "clx_unmatched_123",
  "status": "RECONCILED",
  "resolvedAt": "2026-07-01T09:30:00.000Z",
  "resolvedBy": "manual"
}

On this page