Ledger by Empyre
Ledger developer documentation
Ledger ships an official SDK and a command line tool in one npm package, @empyre/ledger-sdk, with no runtime dependencies. It runs on Node 18 and newer, Deno, Bun, browsers and edge runtimes. Install it with npm install @empyre/ledger-sdk, or run the CLI without installing anything using npx @empyre/ledger-sdk status.
Every amount is an integer number of minor units, so 1999 is $19.99 and there is no float anywhere in the SDK. toMinor and fromMinor convert at the boundary and handle currencies with no minor unit like the yen and three digits like the dinar. A key beginning ldg_test_ writes events that are stored and visible but produce no journal entry, so building an integration never fills a real profit and loss with test sales.
The client covers the dashboard, runway, profit and loss, the balance sheet, the trial balance, transactions, the required-change solver, the CFO, agent spend requests and plan entitlements. The ledger CLI exposes status, runway, pnl, transactions, record, check, tax and ask. Webhook deliveries are verified in constant time against a signature covering a timestamp, so a captured delivery cannot be replayed. Ledger also answers Model Context Protocol at ledger.empyre.dev/mcp, so the books are readable from Claude, Cursor, VS Code or any MCP client with nothing to install.
How Ledger works
Ledger is the financial operating system for a company run by AI agents. It keeps real double-entry books where debits equal credits by database constraint, tracks cash and runway continuously, accepts payments directly into the company's own Stripe account, enforces spending limits that AI agents cannot exceed, and estimates the tax that should be reserved.
Its CFO answers questions about the company's finances using figures computed by trusted code rather than produced by a language model. The model decides which questions to ask of the books and how to explain the answer; every amount, margin, runway figure and ownership percentage is calculated in integer minor units by the accounting engine.
Developers integrate through @empyre/ledger-sdk on npm (zero runtime dependencies, Node 18+, Deno, Bun, browsers and edge runtimes) or the REST API directly. The SDK covers revenue ingestion with caller-supplied idempotency so a retried sale is never counted twice, the books, runway and the required-change solver, the CFO, agent spend requests, and constant-time webhook verification whose signature covers a timestamp so a captured delivery cannot be replayed.
Around the books sit the records a finance team actually works from. Budgets compare each line to posted journal entries in that budget's own period, so the variance is the same figure the reports show rather than a number typed in beside it. Documents — receipts, invoices, statements and contracts — are stored privately, de-duplicated by the hash of their contents rather than by filename, and attached by hand to the transaction or bill they evidence; Ledger does not read amounts off a document and does not claim to. Agent spending policies are created and switched off in the product, with each requester's real thirty-day spend shown beside the policy governing it. And every write leaves an audit row the account holder can read and filter, separate from the operator trail Empyre staff actions are recorded in.
Public pages
- Ledger home
- Pricing for finance operations
- Ledger developer documentation
- Talk to the Ledger team
- Ledger terms of service
- Ledger privacy policy
JavaScript is required to sign in and use the Ledger dashboard. The product information above and the linked public pages remain readable without it.