Plate 06 · Ledger

Written once.
Never rewritten.

Every movement of money on this platform appends one permanent row: what moved, why it moved, and the balance that followed it. Nothing is edited and nothing is deleted, which is the only reason the history can be trusted at all.

Rows
Append-only, never edited
Each row carries
The balance after it
Re-proved
Nightly, platform-wide
Money moves
Row lock
Idempotency key
Append row
Balance after
Nightly re-add
FIG 06 — one movement, one immutable row

What changes

A balance you can explain, line by line.

Most sellers can tell you what is in the account. Very few can tell you how it got there. The difference between those two is a business you can borrow against and one you cannot.

Without it

  • A number in an app, with no story behind it
  • A notebook that disagrees with the bank
  • Corrections made by overwriting the old figure
  • “Where did that ₦12,000 go?” is unanswerable

With Traxease

  • A number with a row behind every kobo of it
  • One record, re-proved against itself every night
  • A correction is a new row, so the mistake stays visible
  • “Where did that go?” is a line you can point at

Try to break it

Go on — edit a row.

This is a ledger tape behaving exactly like the real one. Try to change a figure or remove an entry. It will not let you, and it will show you what it does instead.

wallet_transactions

4 rows · append-only

  • #0001Sale12 Mar · 09:14

    Order TRX-1042

    +₦45,000

    balance ₦45,000

  • #0002Sale12 Mar · 16:40

    Order TRX-1043

    +₦28,500

    balance ₦73,500

  • #0003Withdrawal14 Mar · 11:02

    To 0123456789

    ₦30,000

    balance ₦43,500

  • #0004Commission14 Mar · 11:02

    1% on withdrawal

    ₦300

    balance ₦43,200

Every night this tape is re-added from row #0001 and compared to the stored balance. One kobo of disagreement fails the run.

The refusal is the product. In the real ledger a correction is a new row, never an overwrite.

How it works

Why the arithmetic cannot drift.

Four properties, each enforced by the code rather than by a habit. Hover a step to follow the thread.

01

The balance and its reason are one write

A wallet balance never changes on its own. The change and the row explaining it are written inside a single database transaction with the wallet row locked, so a crash halfway through leaves neither.

02

Every row carries its own proof

Each entry stores the balance that existed immediately after it. You never have to trust a running total computed later — the row itself says where the wallet stood at that moment.

03

Retries cannot double-count

Movements carry an idempotency key. Payment providers retry confirmations as a matter of course; the second delivery of the same event finds its key already recorded and writes nothing.

04

The whole platform is re-added nightly

A scheduled job walks every wallet, re-adds every row from the beginning, and compares the result to the stored balance. A single kobo of disagreement fails the run loudly rather than rounding it away.

Specification

Properties of the record.

Structural facts about how the money history is stored.

SpecificationPlate 06
Write model
Append-onlyNo update path, no hard delete
Row contents
Amount, reason, reference, balance after
Amounts
Integer koboNever a float, anywhere in the path
Atomicity
One transaction, wallet row locked
Duplicate protection
Idempotency key per movement
Corrections
A new, opposing rowThe original entry remains readable
Reconciliation
Nightly, every walletExits non-zero on any drift
Visibility
Full history in your dashboardFilterable and exportable
Webhook events
Verified and deduplicatedHMAC-SHA512, stored by event id

Read your own history.

Every store gets the full ledger, on every plan. It starts writing itself with your first sale.

Free to start · No card required