One correct set
of books.
Every bot plugs in.
The multi-tenant double-entry engine behind the fleet. Ingest every payment once, keep a balanced ledger per client, and expose it over an API so any bot in the fleet can track, chase and file, without ever touching accounting logic.

Connect the bank. Post itself.
Pull transactions straight from the bank over an API. Every line is categorised, matched, and posted as a balanced entry, automatically. Nothing is entered twice.
- Open-banking pull (UAE via Lean)
- Idempotent: a transaction posts once, ever
- Unsure lines wait in Suspense, never guessed

A bookkeeper that never sleeps.
Claude reads each transaction and maps it to the right account with a confidence score. Above the line it posts; below it, a human decides. The AI proposes. The ledger disposes.
- Confidence-gated, never auto-posts a guess
- Learns your chart of accounts
- No LLM anywhere in the money math

Books that can’t go out of balance.
Every event is a balanced journal entry, enforced by the database itself, not hopeful application code. One tenant, one book, isolated at the row level. Corrections are reversals, never edits.
- Balance enforced by a DB constraint
- Row-level isolation per client
- Immutable, append-only ledger

Every function is an endpoint.
POST/api/v1/eventsIngest a balanced event (idempotent)POST/api/v1/bank/syncPull the bank feed → categorise → postPOST/api/v1/categorizeAI account suggestion + confidenceGET/api/v1/reports/pnlProfit & loss for the tenantGET/api/v1/reports/balance_sheetBalance sheetAuthenticate with a per-tenant X-Api-Key. SDKs (Python + TypeScript) mirror Zanii Connect.
Give your fleet one ledger.
Sign in to your books, or wire a bot to the API in minutes.
Open the dashboard