For SaaS and digital products

# Seats, plans and usage credits, in books that balance.

Every Stripe invoice, prorated seat changes included, becomes balanced books, a signed receipt and tracked credits. Replay the events and get the same books.

[Get early access](https://tfd-ledger.pages.dev/early-access?role=saas) [For developers](https://tfd-ledger.pages.dev/for/developers)

-   ✓ Seat changes, upgrades and proration posted from the invoices Stripe sent.
-   ✓ Usage credits granted, used and expired, tracked as balances.
-   ✓ Signed receipts and sealed months; replay to the same books.

Simulated · invented names · synthetic data

## A SaaS product, simulated.

Lumen Notes is invented. A seeded scenario runs its year through the engine, hledger and DuckDB, and all three give the same KPI hash. Run it yourself with the command on the card. See [every preset](https://tfd-ledger.pages.dev/proof#simulations) and [where the simulations simplify](https://tfd-ledger.pages.dev/proof#simplify).

### SaaS and digital products

Simulated

Lumen Notes, a simulated SaaS product.

In their words: seats · plans · proration · usage credits

What's modelled

-   –Solo, team (3, 5 or 10 seats) and business (10, 25 or 50 seats), priced per seat
-   –About a third prepay annually
-   –Seats added mid-month, billed at once with proration; dropped at renewal
-   –Upgrades from solo to team to business
-   –API usage as credit blocks of 1,000 calls
-   –Boost packs and support add-ons

saas-seats · seed 401 · 2026-01..2026-12

A year of seat plans, seats added and dropped, upgrades and API credits.

Gross collected gross\_collected

$69,521

New paying members new\_paying\_members

89

Paying members last month paying\_members\_last\_month

49

$ scenarios describe saas-seats

saas-annual · seed 402 · 2026-01..2027-12

Everyone prepays a year, over 24 months so the renewals show.

Gross collected gross\_collected

$52,993

New paying members new\_paying\_members

20

Paying members last month paying\_members\_last\_month

0

Paying members last month is 0: every plan is yearly, so nobody pays in a given month.

$ scenarios describe saas-annual

KPIs each preset produces

Gross collected · Net income · Refunds · Disputes · Stripe fees · Payouts · Payments · New paying members · Paying members last month · Credits granted, consumed and expired

[How the orgs are simulated ↗](https://github.com/justbry/atm/blob/dev/packages/atm/docs/scenario-orgs.md)

## Three things that make SaaS books hard

### 1\. Seat changes and proration that are hard to reconcile

Teams add seats mid-month and drop them at renewal. Upgrades bill at once, with a credit for the old plan and a charge for the new one.

**How Trifold answers it** (chapters 01 and 02, Money in and Books): every invoice Stripe sends, prorated seat changes and upgrades included, lands as an event and posts as balanced books. Reconcile against Stripe’s records on request.

### 2\. Usage credits that drift from what was billed

**How Trifold answers it** (chapter 02, Books): credits are balances built from the same events as the money. Credits granted, used and expired are counted from the invoices and the usage, so the two can’t drift apart unseen.

### 3\. Investors or auditors asking where revenue came from

**How Trifold answers it** (chapter 03, Proof): every number traces to the Stripe payment behind it, each payment has a signed receipt, and sealed months show any later change. Replay the events and you get the same books.

What it doesn’t do: Trifold doesn’t recognise revenue or make ASC 606 claims, and there’s no MRR KPI yet. It keeps the books of what Stripe charged, collected and refunded.

## Questions

**Is there a recurring-revenue number?**

Not yet: there's no MRR KPI yet. The simulations report gross collected, net income, refunds, disputes, Stripe fees, payouts, payments, paying members and credits.

**Does Trifold do revenue recognition?**

No. It keeps balanced books of what Stripe charged, collected and refunded, every number traced to its payment. Recognising revenue over a contract (ASC 606) is not something we claim.

**How is API usage counted?**

As credits. In the Lumen Notes simulation one credit is a block of 1,000 calls, granted with the plan and used each month.

## Seats and credits that show their work.

Books **✓**·Receipt **✓**·Stripe **✓**

[Get early access](https://tfd-ledger.pages.dev/early-access?role=saas) [Verify a sample receipt](https://tfd-ledger.pages.dev/verify)

Design partners: founder onboarding, free during the pilot.
