If you work in SaaS finance, deferred revenue is not optional —it is the core of your balance sheet. Every annual contract billed upfront, every quarterly invoice sent before the service period begins, creates a liability that you need to track, amortize, and reconcile every single month.
Most SaaS controllers track this in Excel. And for the first 20 or 30 contracts, it works fine. But the schedule has to be built correctly from day one, or you end up with reconciliation gaps that consume hours of close time every month.
This post walks through exactly how to build a deferred revenue waterfall schedule in Excel —the structure, the formulas, the journal entries, and the reconciliation logic. If you have been stitching this together from scratch every time you start a new company, this will save you significant time.
What Is Deferred Revenue (and Why SaaS Companies Always Have It)
Deferred revenue is cash you have collected from a customer for services you have not yet delivered. Under accrual accounting, you cannot recognize that cash as revenue until you fulfill the performance obligation.
In SaaS, the performance obligation is typically “provide access to the software for the subscription period.” If a customer pays $120,000 upfront for a 12-month annual contract, you record $120,000 as a liability (deferred revenue) on day one. Each month, as you deliver the service, you recognize $10,000 of revenue and reduce the liability by the same amount.
This is not a technicality. Deferred revenue is usually the largest current liability on a SaaS company’s balance sheet. Auditors scrutinize it. Investors use it to calculate billings metrics. Getting it wrong means restating financials.
The Accounting: ASC 606 and Recognition Timing
Under ASC 606, revenue is recognized when (or as) you satisfy a performance obligation. For a standard SaaS subscription with no significant implementation services, revenue is recognized ratably over the service period —straight-line, month by month.
The key timing distinction:
- Billing date: when you invoice the customer and record the receivable (or collect cash)
- Recognition date(s): each month of the service period when you recognize a portion of the total contract value
Three common billing patterns in SaaS:
| Pattern | Billing | Recognition |
|---|---|---|
| Annual upfront | Full year billed at contract start | 1/12 per month over 12 months |
| Quarterly | Quarter billed at start of each quarter | 1/3 per month over 3 months |
| Monthly | Billed each month | Recognized immediately (no deferral) |
Monthly billing creates no deferred revenue —you bill and recognize in the same period. Annual and quarterly billing are where the waterfall schedule matters.
For a deeper look at how ASC 606 applies to commissions tied to these contracts, see How to Capitalize Sales Commissions Under ASC 606.
Building a Deferred Revenue Waterfall in Excel
The waterfall schedule is the workhorse. It tracks every contract and shows exactly how much revenue is recognized in each period.
Structure
- Rows = individual contracts (one row per contract or billing event)
- Columns = months (your reporting periods)
- Each cell = revenue recognized that month for that contract
- Summary rows at the bottom: total recognized revenue per month, total deferred balance remaining
- Summary columns on the right: total contract value, cumulative recognized, remaining deferred balance
Step 1: Set Up the Contract Input Area
Create a table with contract-level details. This is your source data.
| Column | Field | Example |
|---|---|---|
| A | Contract ID | C-001 |
| B | Customer Name | Acme Corp |
| C | Billing Date | 2026-01-15 |
| D | Service Start | 2026-02-01 |
| E | Service End | 2027-01-31 |
| F | Total Contract Value (TCV) | $120,000 |
| G | Billing Frequency | Annual |
| H | Service Months | 12 |
The Service Months column can be calculated:
=DATEDIF(D2, E2, "M")
Or, if you prefer to avoid DATEDIF quirks:
=(YEAR(E2)-YEAR(D2))*12 + MONTH(E2) - MONTH(D2) + 1
Step 2: Build the Monthly Recognition Columns
Starting in column J (or wherever your first month column is), each column header is a month-end date: 2026-01-31, 2026-02-28, 2026-03-31, etc.
For each cell in the waterfall grid, the formula checks: is this month within the service period for this contract? If yes, recognize the monthly portion. If no, zero.
=IF(AND(J$1 >= $D2, J$1 <= $E2), $F2 / $H2, 0)
Breaking this down:
J$1is the column month-end date (absolute row reference so it stays on row 1)$D2is the service start date (absolute column reference so it stays on column D)$E2is the service end date$F2 / $H2is the monthly recognition amount (TCV divided by service months)
This single formula copies across the entire grid. Every cell either shows the monthly recognition amount or zero.
Step 3: Add Summary Columns
After the last month column, add three summary columns:
Total Contract Value (already in column F, but repeat it here for readability):
=$F2
Cumulative Recognized to Date —sum of all monthly recognition columns for this contract:
=SUM(J2:AJ2)
Remaining Deferred Balance:
=$F2 - SUM(J2:AJ2)
Step 4: Add Summary Rows
At the bottom of the contract rows, add:
Total Recognized Revenue per Month —sum down each month column:
=SUM(J2:J50)
Cumulative Recognized Revenue:
=SUM($J$51:J51)
Where row 51 is your total recognized row. Use a running sum that accumulates left to right.
Total Deferred Revenue Balance (end of each month):
=SUM($F$2:$F$50) - SUM($J$51:J51)
This is total billings minus cumulative recognized revenue. It should match your balance sheet deferred revenue balance.
Worked Example: Five Contracts
Here are five contracts with different billing terms:
| Contract | Customer | Billing Date | Service Start | Service End | TCV | Frequency | Monthly Rev |
|---|---|---|---|---|---|---|---|
| C-001 | Acme Corp | 2026-01-15 | 2026-02-01 | 2027-01-31 | $120,000 | Annual | $10,000 |
| C-002 | Beta Inc | 2026-01-01 | 2026-01-01 | 2026-12-31 | $60,000 | Annual | $5,000 |
| C-003 | Gamma LLC | 2026-03-01 | 2026-03-01 | 2026-05-31 | $9,000 | Quarterly | $3,000 |
| C-004 | Delta Co | 2026-02-01 | 2026-02-01 | 2027-01-31 | $36,000 | Quarterly | $3,000 |
| C-005 | Epsilon Ltd | 2026-01-01 | 2026-01-01 | 2026-06-30 | $18,000 | Semi-Annual | $3,000 |
Waterfall Output (Jan - Jun 2026)
| Contract | Jan | Feb | Mar | Apr | May | Jun | Cum. Recognized | Remaining |
|---|---|---|---|---|---|---|---|---|
| C-001 | — | $10,000 | $10,000 | $10,000 | $10,000 | $10,000 | $50,000 | $70,000 |
| C-002 | $5,000 | $5,000 | $5,000 | $5,000 | $5,000 | $5,000 | $30,000 | $30,000 |
| C-003 | — | — | $3,000 | $3,000 | $3,000 | — | $9,000 | $0 |
| C-004 | — | $3,000 | $3,000 | $3,000 | $3,000 | $3,000 | $15,000 | $21,000 |
| C-005 | $3,000 | $3,000 | $3,000 | $3,000 | $3,000 | $3,000 | $18,000 | $0 |
| Total | $8,000 | $21,000 | $24,000 | $24,000 | $24,000 | $21,000 | $122,000 | $121,000 |
Notice how C-001 starts recognizing in February (service starts Feb 1), and C-003 is fully recognized by May. The remaining deferred balance column tells you exactly what sits on the balance sheet for each contract at the end of June.
Journal Entries
At Billing (Annual Upfront —Contract C-001)
When you invoice $120,000 for an annual contract:
| Account | Debit | Credit |
|---|---|---|
| Accounts Receivable | $120,000 | |
| Deferred Revenue (Current Liability) | $120,000 |
No revenue hits the P&L at billing. The full amount sits in deferred revenue.
Monthly Recognition (Contract C-001, February 2026)
Each month during the service period:
| Account | Debit | Credit |
|---|---|---|
| Deferred Revenue | $10,000 | |
| Revenue - SaaS Subscription | $10,000 |
This entry repeats every month for 12 months until the deferred balance for this contract reaches zero.
Quarterly Billing (Contract C-004)
For quarterly billing, you record a smaller deferral each quarter. When the first quarter is billed ($9,000 for Q1):
| Account | Debit | Credit |
|---|---|---|
| Accounts Receivable | $9,000 | |
| Deferred Revenue | $9,000 |
Then each month within that quarter:
| Account | Debit | Credit |
|---|---|---|
| Deferred Revenue | $3,000 | |
| Revenue - SaaS Subscription | $3,000 |
The key point: the journal entry structure is identical regardless of billing frequency. Only the amounts and timing change. Your waterfall schedule drives the recognition amounts, and the JE Generator pulls directly from it.
Reconciliation: The Deferred Revenue Rollforward
The waterfall tells you how much to recognize each month. But you also need a rollforward schedule that ties directly to the balance sheet. This is what auditors ask for first.
The rollforward has four lines:
| Line | Formula |
|---|---|
| Opening Deferred Revenue | Prior month’s closing balance |
| (+) New Billings | Sum of all contracts billed this month |
| (-) Revenue Recognized | Sum from waterfall total row |
| (=) Closing Deferred Revenue | Opening + Billings - Recognized |
Rollforward for Jan - Jun 2026
| Jan | Feb | Mar | Apr | May | Jun | |
|---|---|---|---|---|---|---|
| Opening Balance | $0 | $190,000 | $205,000 | $181,000 | $157,000 | $133,000 |
| + New Billings | $198,000 | $36,000 | $9,000 | $0 | $0 | $0 |
| - Recognized | ($8,000) | ($21,000) | ($24,000) | ($24,000) | ($24,000) | ($21,000) |
| Closing Balance | $190,000 | $205,000 | $190,000 | $157,000 | $133,000 | $112,000 |
The closing balance must match the sum of all remaining deferred balances across individual contracts. If it does not, you have a reconciliation break that needs to be investigated before close.
In Excel, add a variance check row:
=ClosingBalance - SUMPRODUCT((ContractTCV) - (CumulativeRecognized))
If this is anything other than zero, something is wrong. Highlight it in red with conditional formatting so it is impossible to miss.
This reconciliation discipline is similar to what we cover in the Month-End Close Checklist for Controllers —deferred revenue is one of the most common close items that trips up SaaS finance teams.
The Excel Maintenance Problem at Scale
The waterfall approach described above works well for 10 to 30 contracts. You can build it in an afternoon, and monthly maintenance takes 15 to 20 minutes.
At 50+ active contracts, things start to break down:
- Row management: Adding new contracts means inserting rows and making sure every SUM range, every SUMPRODUCT, and every named range expands correctly. One missed range reference and your totals are wrong silently.
- Mid-term changes: A customer upgrades mid-contract, downgrades, or churns early. You need to handle the remaining deferred balance —accelerate recognition, write off, or reallocate. Each scenario requires manual adjustment rows.
- Multi-element arrangements: Some contracts bundle implementation, training, and subscription. ASC 606 requires you to allocate the transaction price across performance obligations. Your simple one-row-per-contract waterfall cannot handle this without significant rework.
- Audit trail: When the auditors ask “why did deferred revenue change by $47,000 this month,” you need to trace that back to specific contracts. In a 200-row waterfall, that means manual filtering and cross-referencing.
- Period-end cutoff: Contracts that start or end mid-month require proration logic. The simple
TCV / monthsformula does not handle partial months without additional date math.
None of these problems are unsolvable in Excel. But solving all of them in a single workbook —with proper protection, input validation, and reconciliation checks —takes substantial upfront design work.
A Better Starting Point
We are building a Deferred Revenue Waterfall Workbook that handles all of this out of the box: contract input table with validation, automatic waterfall generation, journal entry output, rollforward reconciliation, and period selection for monthly, quarterly, or annual reporting.
If you want early access, email hello@kdeskaccounting.com.
In the meantime, if you are dealing with related SaaS accounting workflows, these templates are available now:
- ASC 606 Commission Capitalization Workbook ($79) —automates commission amortization schedules under ASC 340-40, with journal entries and rollforward reconciliation
- ASC 842 Lease Accounting Workbook ($97) —lease liability amortization, ROU asset schedules, and journal entries under ASC 842
- Startup Runway Calculator ($49) —cash runway modeling with two-rate revenue growth and scenario analysis
Each one is built for the same audience —SaaS finance teams managing technical accounting in Excel who need audit-ready output without enterprise software.
Key Takeaways
- Deferred revenue is a liability, not a memo. Track it with the same rigor you apply to debt schedules.
- The waterfall structure (rows = contracts, columns = months) is the standard approach and scales reasonably well to about 50 contracts.
- Every cell in the waterfall uses one formula: if the month falls within the service period, recognize TCV / service months. Otherwise, zero.
- The rollforward (opening + billings - recognized = closing) is your reconciliation anchor. If it does not tie, do not close the books.
- Journal entries follow directly from the waterfall totals. Automate the JE output so your monthly close is a formula, not a manual exercise.
- At scale, the manual waterfall becomes a liability of its own. Purpose-built workbooks with validation, protection, and reconciliation checks save hours every month.
KDesk Accounting builds audit-ready Excel tools for finance teams. Browse all templates →