Skip to content

For developers and platforms

A provable ledger for credits, plans and bookings.

atm replays Stripe events into double-entry books, signs Ed25519 receipts and seals months. Its source is public on GitHub, with a free CLI, open receipt and seal formats, and test vectors.

  • Deterministic: the same events in give the same books and the same signatures out.
  • Export to Parquet and hledger; verify receipts and seals with the CLI or your own code.
  • Hosted service, a hash chain per event and the witness are on the roadmap.Next
atm · verify
$ atm keys new --out keys --id juniper-2026-10
$ atm receipt --root . --school sch_juniper --key keys/juniper-2026-10.private.pem --key-id juniper-2026-10 --event 01M41M0YW0JH3ARC874HFM8291 > receipt.json
$ atm verify receipt receipt.json --keys keys/keys.json
{"ok":true}
$ sed -i '' 's/80000/120000/' receipt.json && atm verify receipt receipt.json --keys keys/keys.json
{"ok":false,"reason":"bad_signature"}

What’s in the repository

  • The engine (atm): Stripe events in, double-entry books out, deterministic and replayable. Its source is public on GitHub; the license is being finalised.
  • Signed receipts and sealed months: Ed25519 over a fixed canonical form (JSON with sorted keys). Receipts carry a sha256 of the event they came from; seals chain month to month.
  • Open formats: JSON schemas for receipts and seals, golden test vectors, hledger journals and Parquet exports.
  • A free CLI: make keys, print signed receipts, seal a month, verify receipts and seal chains, reconcile against Stripe.

The verifier on this site is a line-for-line port of the engine’s check to the browser, tested against the engine on the same samples.

On the roadmap

The hosted service, a hash chain per event and Trifold as an independent witness are marked Next. The CLI’s planned name is tfd; today the binary is atm.

Read the source. Run the check.

Books ✓Receipt ✓Stripe ✓

The engine's source is public on GitHub; the license is being finalised.