A programmable ledger for money
A double-entry ledger built for engineers — atomic, immutable, and reconciled by construction.
send [USD/2 100] {
source = @world
destination = @users:42
}Model any movement, splits, fees, holds, in a purpose-built DSL.
Atomic and balanced: every posting nets to zero.
Multi-asset balances update instantly, queryable at any time.
An append-only, tamper-evident log, history is never rewritten.
Fungible by default. Colored on demand.
Pool client money as one fungible balance, or color each unit by its funding source to trace provenance down to the account — same ledger, same accounts, one toggle.
Money as code
Model any movement with Numscript.
Describe complex money movements — splits, fees, holds — in a purpose-built DSL. Every transaction is atomic: it either commits in full or not at all.
Balanced by construction
Every posting nets to zero.
Debits always equal credits. The ledger enforces double-entry accounting natively, so your books can never silently drift — no end-of-day surprises.
Multi-asset, multi-account
Transactions in, balances out.
Open unlimited accounts and hold any number of assets in parallel. Every transaction updates balances instantly — query any account, in any currency, at any point in time.
| account | amount |
|---|---|
USERS:1234 | EUR/2 123,000 |
USERS:5678 | EUR/2 23,000 |
| USD/2 32,000 | |
USERS:2342 | JPY/0 123,000 |
| BTC/8 .000020 |
An immutable, queryable log
Every entry, forever.
The ledger is an append-only log. Query balances and history at any point in time, with a complete and tamper-evident audit trail behind every number.
TXN | world → sellers:acme EUR 85.00 |
TXN | world → platform:fees EUR 15.00 |
TXN | treasury → payouts:eu EUR 1,240.00 |
TXN | orders:1042 → world EUR 59.00 |
TXN | payments:in → treasury EUR 320.00 |
TXN | world → sellers:globex EUR 142.50 |
TXN | treasury → fees:vat EUR 38.10 |
Batch operations, commit in a single call.
The _bulk endpoint accepts a stream of ledger actions and processes them atomically, sequentially, or in parallel. Stage thousands of postings — idempotent by key — and let the ledger commit them in one round-trip.
Bulk processing APIBuffering 9/16
Every segment is an axis.
One address space, three questions. Sum everything under a prefix, slice one state across every user, or drill into a single user's subtree — the structure you put in the address is the query language, computed where the postings live.
Aggregated balancesGroup ledgers into buckets. Scale sideways.
Each bucket isolates throughput and storage, so you can run thousands of independent ledgers — per product, per region, per tenant — without coupling them operationally. Add ledgers inside a bucket, add buckets as you grow.
Architecture overviewQuestions, answered
01 / DOUBLE-ENTRY
Debits always equal credits. The ledger enforces double-entry natively, so balances can never silently drift.
02 / IMMUTABILITY
Postings are append-only. History is never rewritten; you query balances and entries as of any point in time.
03 / ATOMICITY
Each Numscript transaction commits in full or not at all — splits, fees and holds either all apply or none do.
04 / MULTI-ASSET
Hold any number of assets across unlimited accounts in parallel. Balances update instantly, per asset and per account.
05 / PERFORMANCE
The ledger sustains high transaction throughput while keeping the audit trail complete and queryable.
Build on a ledger that never drifts
Atomic, immutable, double-entry by construction — modeled in Numscript.