A SaaS company can run for two years on books that look completely fine and are wrong in four specific places. Nothing crashes. The monthly close completes, the P&L balances, and the error surfaces the first time an investor or a buyer's accountant reads the file closely.
The four are deferred revenue, the gap between bookings and recognised revenue, sales commissions, and what actually sits in cost of revenue. Each one is a setup decision rather than a hard problem, and each is far cheaper to get right early than to unwind later.
Deferred revenue, the one that compounds
A customer pays $24,000 in January for twelve months of access. The cash arrives in January. The revenue does not. You have delivered one month of service, so $2,000 is revenue and $22,000 is a liability you owe in service.
Booking the full amount in January is the single most common SaaS bookkeeping error, and it is worse than it first appears. It does not just overstate January. It overstates that month's revenue, growth rate, and margin, understates every subsequent month, and makes the annual trend meaningless. Because each error is individually small, nothing looks obviously wrong until someone adds up a year.
In accounting language the balance is a contract liability. Deferred revenue is the everyday word for the same thing, and the schedule behind it has to be maintained per contract, not estimated in aggregate.
Bookings, cash and revenue are three different numbers
This is where board decks most often lose credibility. The three are used interchangeably in conversation and mean genuinely different things.
| Number | What it measures | When it happens |
|---|---|---|
| Bookings | Total value of contracts signed | At signature |
| Cash collected | Money actually received | When the customer pays |
| Recognised revenue | Service actually delivered | Over the term, as delivered |
| ARR | Annualised run rate of recurring revenue | A forward-looking snapshot, not GAAP |
All four are legitimate and you should track all four. What causes trouble is presenting one and labelling it another, most often quoting bookings as revenue in a deck while the accounts say something different. Once an investor finds one of these, they check everything else.
Commissions do not belong in the month you pay them
The instinctive treatment is to expense a sales commission when it is paid. The correct treatment is usually to capitalise it as a cost of obtaining the contract and amortise it over the period you benefit from that contract, which frequently runs longer than the contract term itself.
The test turns on whether renewal commissions are commensurate with the initial one, judged on economics rather than effort. The common structure of paying a full rate on new business and a much lower rate on renewals fails that test, which pushes the amortisation period out to the initial term plus expected renewals. That in turn requires a defensible estimate of customer life from your own cohort data, which is why this is a finance decision rather than a bookkeeping one.
What actually belongs in cost of revenue
SaaS gross margin is only comparable if the inputs are consistent, and this is where companies quietly flatter themselves.
- In cost of revenue: hosting and infrastructure, customer support, customer success where it is service delivery rather than expansion selling, third-party software embedded in the product, and payment processing.
- Not in cost of revenue: sales and marketing, general engineering building new features, and general and administrative costs.
- The genuinely debatable ones are customer success and the engineering time spent maintaining rather than building. Pick a treatment, write it down, and apply it consistently.
Consistency matters more than being theoretically perfect. A margin that moves because you changed the definition is worse than a margin that is slightly conservative and stable.
The deferred revenue rollforward
One schedule catches most of what goes wrong above, and it is the first thing a diligence process asks for. A deferred revenue rollforward reconciles the opening balance to the closing balance through the movements in the period, and if it does not tie to the general ledger, something in your revenue is wrong.
| Movement | Amount | What it is |
|---|---|---|
| Opening deferred revenue | $840,000 | Balance carried in from last month |
| Add: new billings | $310,000 | Invoiced in the month, service not yet delivered |
| Less: revenue recognised | ($268,000) | Released to the P&L as service was delivered |
| Add: contract modifications | $14,000 | Mid-term upgrades adding undelivered value |
| Less: refunds and cancellations | ($9,000) | Reversed out |
| Closing deferred revenue | $887,000 | Must equal the balance sheet |
Two checks make this powerful rather than decorative. The closing balance must agree to the balance sheet account to the dollar. And the revenue recognised line must agree to subscription revenue in the P&L. When either fails, you have found a real error, and you have found it in the month it happened rather than a year later.
Run it monthly and keep the history. A reviewer who can see twelve consecutive rollforwards that tie will move through your revenue quickly. One who is handed a closing balance and asked to trust it will not.
Where modern pricing complicates this
The four problems above assume a clean annual subscription. Most SaaS pricing has moved on, and three common structures need a decision rather than a default.
- Usage-based billing. Revenue follows consumption, so it is recognised as usage occurs rather than rateably. If you invoice monthly in arrears for usage, there is little deferred revenue and the accrual question inverts: at month-end you have delivered service you have not yet invoiced, which is unbilled revenue rather than deferred.
- Committed spend with drawdown. A customer commits to $120,000 for the year and draws against it. The commitment is not revenue on signature, and unused commitment at period end is a judgement call that depends on whether it expires or rolls. Decide the treatment when you write the first such contract, not when you have thirty.
- Credits and platform fees. Prepaid credits that expire, minimum platform fees plus variable usage, and overage tiers all split a single invoice into components with different recognition patterns. The invoice total is one number; the revenue is several.
The common thread is that the invoice is no longer a reliable proxy for the revenue. Under a clean annual subscription you can often get to a defensible answer from billing data alone. Under any of the three above you cannot, and the deferred revenue schedule has to be driven from contract terms and delivery data rather than from what you invoiced.
This is also where the four numbers in the earlier table diverge most sharply. A usage-heavy business can have bookings, ARR, cash and recognised revenue that all move in different directions in the same quarter, each correctly. Being able to explain why is the difference between a confident diligence conversation and a defensive one.
How to set it up properly
- Run accrual from the start. Converting from cash-basis later, usually mid-raise, is the worst time to do it.
- Maintain a deferred revenue schedule per contract that reconciles to the general ledger every month.
- Write down your revenue recognition policy, including how you treat setup fees, discounts and mid-term changes, before you need to defend it.
- Split current and long-term deferred revenue, and recalculate the split when contracts are modified.
- Keep a contract file that a reviewer can trace from signed agreement to revenue schedule without asking you.
That last point is what audit readiness actually means in practice. Not perfection, but the ability to answer where a number came from without reconstructing it.
Where Zinance fits
Zinance handles SaaS books as a policy question rather than a data-entry one: accrual from the start, deferred revenue maintained per contract, and a close that runs daily so the numbers are current when a board or an investor asks. For the strategic layer on top, see fractional CFO for SaaS startups, and for our work with software companies, our SaaS practice.
This article is educational and general, not accounting or tax advice, and it creates no client relationship. Revenue recognition and contract cost treatment depend on your specific contracts, and several areas described here involve genuine judgment. Confirm your positions with your own accountants.
