Beancount.io LogoBeancount.io

Bookings, Billings, and Revenue: The SaaS Reconciliation Triangle

14 min readMike ThriftMike Thrift
Bookings, Billings, and Revenue: The SaaS Reconciliation Triangle

A SaaS founder closes a $360,000 three-year deal in March. Sales celebrates a $360,000 booking. Finance invoices $120,000 for year one and collects it in April. Accounting recognizes $10,000 of revenue in the March income statement. By the end of the year, the CEO is staring at three numbers — $360,000, $120,000, and $100,000 — and wondering why none of them agree, which one belongs in the investor deck, and whether any of them is wrong.

None of them is wrong. They are three different measurements of the same contract at three different points in its lifecycle. The job of the finance team is not to pick a favorite. It is to keep all three in lockstep, prove they reconcile, and unwind the deferred revenue balance so that the income statement, balance sheet, and ARR schedule tell the same story month after month.

This is the operational core of subscription accounting under ASC 606 — and it is where most SaaS finance functions either earn their stripes or quietly accumulate the kind of errors that surface during fundraising diligence eighteen months later.

The Three Numbers and Why They Differ

Every subscription deal generates three economic events, separated in time:

  • Booking — the moment the customer signs. This is the total contract value (TCV) of what they have committed to pay over the life of the agreement. A booking lives on the sales scoreboard, not on the income statement.
  • Billing — the moment an invoice is issued. A multi-year contract might generate one annual invoice each year, twelve monthly invoices, or one giant up-front invoice for the whole TCV. Billings drive cash collection and accounts receivable.
  • Recognized revenue — the GAAP measurement of services actually delivered during the period. Under ASC 606, this is recognized ratably (or as performance obligations are satisfied) regardless of when the contract was signed or when cash arrived.

These three numbers will almost never equal each other in a given month. That is not a bug — it is the design of accrual accounting. What you need is a reliable way to show how money moves from one bucket to the next, and a reconciliation that proves nothing has fallen between the cracks.

A Quick Worked Example

Consider that $360,000 three-year deal again. Pricing is $10,000 per month, billed annually in advance.

  • Bookings: $360,000 recorded in March (the month the contract was signed).
  • Billings: $120,000 invoiced in April for the first twelve months, $120,000 invoiced the following April, and $120,000 in the third year.
  • Recognized revenue: $10,000 per month, every month, for thirty-six months, starting on the contract's service start date.

By month thirteen, you have booked $360,000, billed $120,000, recognized $130,000 of revenue, and are holding zero deferred revenue (the first annual prepayment has been fully earned). Just before the second invoice goes out, you flip into contract asset territory — you have recognized revenue you have not yet billed. The second invoice converts that contract asset back into accounts receivable, and the cycle repeats.

This is exactly the kind of nuance that gets lost when a startup tries to run a SaaS business out of a cash-basis ledger.

The Five-Step Model in One Page

ASC 606 (which superseded the patchwork of old industry-specific rules years ago) reduces revenue recognition to five steps you apply to every contract:

  1. Identify the contract. It can be written, oral, or implied — but both parties must have approved it, the rights and payment terms must be clear, the contract must have commercial substance, and collection must be probable.
  2. Identify the performance obligations. A "performance obligation" is a distinct promise. For a vanilla SaaS subscription, the obligation is typically a single one: providing continuous access to the platform over the subscription term.
  3. Determine the transaction price. This is the consideration you expect to receive — fixed fees, plus an estimate of variable items like usage overages, rebates, or volume discounts (with a constraint so you do not overestimate).
  4. Allocate the transaction price. If the contract has multiple performance obligations (subscription + implementation + premium support), you allocate the total price across them based on their stand-alone selling prices.
  5. Recognize revenue. As each obligation is satisfied. For ongoing subscription services, that is ratably over time. For point-in-time deliverables (onboarding, certain professional services), it is at the moment of delivery.

The standard sounds simple. The complexity lives in the judgment calls inside each step — especially step two (what is "distinct"?) and step three (how much variable consideration is too speculative to recognize?). Document those judgments now, while the deal is fresh. Six months later, no one will remember why the implementation fee was treated as a separate obligation, and your auditor will ask.

The Deferred Revenue Waterfall

The deferred revenue waterfall is the operational engine of SaaS accounting. It is a schedule that, contract by contract, lays out exactly when each dollar of billed-but-not-yet-earned revenue will roll off into recognized revenue. Done right, it produces three artifacts simultaneously: the deferred revenue balance for the balance sheet, the recognized revenue figure for the income statement, and a forward-looking forecast of revenue you can already see because it is contractually committed.

Mechanics of the Roll-Forward

At its simplest, the waterfall obeys a single identity each month:

Opening Deferred Revenue + New Deferred Revenue Created − Revenue Recognized = Closing Deferred Revenue

Walk through an example. A SaaS company starts April with $500,000 of deferred revenue on the balance sheet. During April, it bills $180,000 of new annual subscriptions and renewals. It recognizes $90,000 of revenue during April from previously billed contracts (and from the portion of April's new billings that pertains to April service). The closing balance:

$500,000 + $180,000 − $90,000 = $590,000

If your subledger does not produce a closing balance that ties to the general ledger to the dollar, something has fallen out — usually a contract modification, a refund that bypassed the waterfall, or a credit memo applied directly to revenue without unwinding the underlying deferred balance.

Current vs. Long-Term Split

Under GAAP, deferred revenue is a liability, and liabilities are classified as current (settling within twelve months) or long-term (settling later). On a one-year subscription billed annually, the whole deferred balance is current. On a three-year deal billed annually, each invoice generates a fully current deferred balance because that prepayment will be recognized within twelve months. But on a three-year contract billed up front for $360,000, you split: $120,000 current (months 1–12 of service), $240,000 long-term (months 13–36).

Investors and lenders pay attention to that split. Long-term deferred revenue is, in effect, a snapshot of contractually committed forward revenue beyond the next year — a useful read on the durability of the business that current deferred alone does not give them.

What the Waterfall Forecasts

A complete waterfall produces a contract-by-contract month-by-month grid of when each booked dollar will be recognized. Sum the rows, and you have a forecast that shows: of the revenue we expect to recognize in Q4, how much is already contractually committed (and therefore very high confidence), and how much depends on new bookings we have not yet won? For a subscription business this is the single most useful planning tool finance produces. New bookings drive the future; the waterfall tells you exactly how much of the near future is already locked in.

The Bookings → Billings → Revenue → Cash Bridge

Once the waterfall is running, you can chain it together with the rest of the order-to-cash flow:

New Bookings (TCV signed)

Invoiced (Billings) ──→ Accounts Receivable
    ↓                          ↓
Deferred Revenue ←─────── Cash Collected

Recognized Revenue (Income Statement)

Every period, each of those arrows produces a number. New bookings appear in the sales report. Billings appear in the AR aging. Cash collections appear on the cash flow statement. Deferred revenue appears as a liability roll-forward. Recognized revenue appears on the income statement. If those five numbers do not articulate — if you cannot walk a stakeholder from "we signed Xthisquarter"to"werecognizedX this quarter" to "we recognized Y this quarter" through the intermediate balance sheet movements — your story has a hole in it, and you need to find it before someone else does.

A good finance close ends with a one-page bridge schedule that lays out the period's bookings, billings, recognized revenue, opening and closing deferred revenue, opening and closing AR, and cash collected, with the arithmetic ties between them visible to the reader. If you cannot produce that page, you do not really have a SaaS close — you have a cash report wearing a costume.

The ARR Bridge and Why It Must Agree with the Waterfall

ARR (annual recurring revenue) is a managerial metric, not a GAAP metric. It approximates the run-rate value of your subscription book — at a moment in time, what would the next twelve months of subscription revenue look like if no contract changed?

ARR moves through four channels each period:

  • New ARR: from net-new customers.
  • Expansion ARR: from upgrades, add-on seats, or usage tier bumps within existing customers.
  • Contraction ARR: from downgrades or partial cancellations.
  • Churned ARR: from full cancellations.

Opening ARR + New + Expansion − Contraction − Churn = Closing ARR

Here is the cross-check that separates a tight finance organization from a loose one: the direction and magnitude of ARR movement must be consistent with what the deferred revenue waterfall is doing. If ARR jumped 20% but new deferred revenue creation was flat, either the new contracts are being billed in arrears (in which case you should also see accounts receivable swelling) or someone in sales reported a deal that the billing system does not know about. The bridge between the ARR schedule and the deferred revenue waterfall is the closest thing SaaS finance has to a bank reconciliation. Treat it that way.

Five Edge Cases That Break Most Models

Out-of-the-box SaaS subledgers handle the easy case — a clean annual subscription paid in advance with no modifications. The hard cases are where most errors live. Build for them from day one.

1. Mid-Period Service Starts

A contract signed on April 18 with a service start of April 22 should recognize 9/30 of one month's MRR in April, not a full month. If your subledger truncates to whole months, you will be off by a few hundred dollars per contract — small until you have thousands of contracts and the cumulative error is six figures.

2. Contract Modifications

A customer adds 20 more seats halfway through year two of a three-year deal. ASC 606 gives you specific rules: if the modification adds distinct goods or services at a price that reflects their stand-alone selling price, it is treated as a separate contract. Otherwise, you may have to reallocate the remaining transaction price across the remaining performance obligations. Most subledgers handle the simple "separate contract" path well and quietly break under the second one. Test yours.

3. Multi-Element Contracts

A $30,000 annual platform subscription bundled with a one-time $6,000 implementation fee is two performance obligations if the implementation is distinct. Allocate the $36,000 transaction price across the two based on stand-alone selling price (which may differ from the line-item price on the invoice if anything was discounted), then recognize the implementation portion at the point in time delivery happens and the subscription portion ratably. If you stuff both into one bucket and recognize evenly, you have understated Q1 revenue and overstated revenue for the rest of the year.

4. Variable Consideration

Usage-based pricing, performance bonuses, refund rights, and tiered discounts are all variable consideration. ASC 606 requires you to estimate the variable amount and include it in the transaction price — subject to a constraint that says you should only include amounts where it is highly probable that a significant reversal will not occur. The estimate is yours to defend; document the methodology, and re-estimate each period.

5. Cancellations and Refunds

A customer cancels in month seven of an annual prepaid contract. If your terms are non-refundable, you continue to recognize the remaining five months — the cash you collected is yours and the service is no longer being delivered, but the performance obligation has already been transferred to the customer (this is a judgment call worth documenting). If you offer a pro-rata refund, you reverse the remaining deferred revenue and pay the customer back. The waterfall has to know the difference. If your subledger treats every cancellation as a refund, your revenue will be chronically understated.

Practical Setup Recommendations

A few non-negotiables for any SaaS finance function trying to keep these three numbers in lockstep:

  • One subledger, one source of truth. Pick one system (your billing platform, your dedicated rev-rec tool, or — for the smallest companies — a well-disciplined spreadsheet) and treat its output as authoritative. Reconcile back to the general ledger every month, to the dollar.
  • Service start date is sacred. The waterfall starts when service starts, not when the contract was signed and not when the customer paid. Capture the service start date at contract creation and protect it from accidental edits.
  • Tag everything to a contract ID. Every invoice, every payment, every deferred revenue entry, every revenue entry should carry the contract identifier. When the bridge breaks, you need to be able to filter to a single contract and walk through its life cycle.
  • Store the waterfall as data, not as a snapshot. A waterfall regenerated on demand from contract terms is a tool. A waterfall pasted into a spreadsheet and edited in place is a future restatement waiting to happen.
  • Reconcile to the GL monthly. The subledger sum of deferred revenue across all open contracts must equal the deferred revenue balance in the general ledger. Any variance is investigated and resolved before the month closes. This is the discipline that pays off enormously when the audit arrives.

Accurate bookkeeping from day one is what makes all of this possible. If your transactions, invoices, and contract terms are captured cleanly as they happen, the close becomes mechanical. If they are not, every close turns into an archaeological dig.

Why This Matters Beyond the Audit

Founders sometimes ask whether all of this complexity is really necessary at $1M ARR. The honest answer: technically, you can defer it. Practically, you should not. Three reasons:

  1. Diligence at the next round will reach back. A Series B investor will ask for ASC 606–compliant financials for the prior two to three years. If you switch from cash-basis to accrual the day before the term sheet, you will spend the diligence period recreating two years of waterfalls under time pressure. That is exactly when mistakes get baked in.
  2. You will start running the business on the wrong numbers. A founder making pricing, hiring, and burn decisions based on cash receipts in a subscription business is flying blind. The waterfall is what tells you whether last month was a true growth month or a billing-cycle artifact.
  3. The discipline is the moat. Subscription businesses that report ARR, deferred revenue, and recognized revenue cleanly look very different in a data room from businesses that cannot. Buyers and investors pay measurable premiums for legibility.

The five-step model, the deferred revenue waterfall, and the bookings-billings-revenue reconciliation are not bureaucratic overhead. They are the instruments that let you see your own business. Set them up early, run them every month, and let them compound.

Keep Your Subscription Books Audit-Ready From Day One

A SaaS or subscription business lives or dies by the trustworthiness of its revenue numbers. Investors, auditors, and lenders all want the same thing — a clean line from contract signature to recognized revenue, with the deferred balance reconciling at every step. Beancount.io offers plain-text, version-controlled accounting that gives founders and finance teams complete transparency over every transaction and every contract — no black box, no vendor lock-in, and a full audit trail you can grep. Get started for free and build the kind of revenue records that turn diligence from a fire drill into a formality.