string|IO
The canonical ledger · pre-GA

One ledger of truth.
Not a stack of reconciliations.

Every card, authorization, settlement, payout and dispute is one typed object on a single canonical ledger — the system of record that also runs the money. Deterministic, replayable, reconciled to zero drift.

The dual ledger · pre-GA

Post a payment.
Watch it reconcile.

In acquiring it's the merchant leg against the scheme leg; in issuing it's the authorization side against the settlement side. Same pattern: matched item-by-item, and it closes only when they reconcile to zero. Illustrative figures.

Merchant legposting
— —close gate
Scheme legposting
posting open items…
The anatomy of a posting

Four parts. One truth.

A database stores what happened. The canonical ledger holds the whole decision — so it can be audited, replayed, and acted on by your code or by an agent.

01Typed entity

The real money object — card, authorization, settlement, dispute, rail.

02Canonical entry

A double-entry posting on the one ledger — Dr and Cr, to the cent.

03Deterministic rule

The decision that fired it — issuer rules, routing, risk — expressed as data.

04Replayable proof

A signed, re-runnable record; replay any cycle to the same balance.

Truth, not reconciliation

One model. Every desk reads it.

Platform engineering

One typed model across issuing, acquiring and money movement — no adapters, no schema drift between systems.

Risk & fraud

Decisions act on the same live ledger, not a stale copy — authorization, dispute and settlement state are one truth.

Finance & the CFO

Trial balance balanced by construction. Reconciliation goes from a team to a query; the books are audit-ready continuously.

Product

Ship a new rail or program on one model — it inherits the ledger, controls and reporting for free.

Why it cannot drift

Net payable is derived. Never stored.

Open-item

Open → Matched → Reconciled → Closed. A settlement batch closes only when every open item reconciles — net payable is a sum, never a mutable scalar.

Late truth reconciles

A corrected later event drives Exception → Matched → Reconciled automatically — no manual touch, for the full chargeback tail.

Every delta is a posting

Tips, partial capture, DCC, surcharge, fee true-up — each a typed entry, never an in-place edit of a number.

Signed, replayable close

A cryptographically-signed daily attestation; replay any cycle and arrive at the same cent.

Built for agents, too

A model an agent can trust.

The same typed, replayable model that keeps the books straight is the context risk models and AI agents need to reason about money safely — one trustworthy ledger, not a warehouse of stale copies. StringIO's domain is mapped to the industry's shared vocabulary, FIBO and BIAN, so the ledger speaks a language other systems already understand. The typed core is implemented today; per-domain ontology docs are in progress.

An ATM keypad at night
ATM · API · the same line

Whether it's a keypad at 2am or an API at scale, every entry posts to one canonical ledger and reconciles before it leaves.

The moat

Stop reconciling systems.
Run one model of your money.

Once issuing, acquiring and money movement post to the same ledger, the reconciliation between them simply doesn't exist — there's one truth to audit, one to replay, one to build on.

A close you can sign.