Revenue Recognition
Your Revenue Schedule Is a Spreadsheet, and It Is the Riskiest File You Own
One tab per contract, a monthly recognition row, and a total that feeds the income statement through a journal entry somebody keys by hand. It works until a contract changes mid-term.
Why the Invoice Is the Wrong Unit
Most systems model the invoice, because the invoice is what gets sent and paid. But revenue is not recognised against invoices — it is recognised as performance obligations are satisfied, which is a different thing on a different timeline. A twelve-month contract invoiced annually in advance has one invoice and twelve months of revenue, and nothing about the invoice tells you that.
So the schedule moves to a spreadsheet, where it becomes something nobody can audit and everyone is afraid to touch.
Obligations, Not Invoices
Revenue recognition runs on contracts and performance obligations in the system, not on a spreadsheet somebody maintains beside it.
A contract is split into performance obligations with the transaction price allocated across them, which is what ASC 606 and IFRS 15 actually ask for.
A contract carries its performance obligations with the transaction price allocated across them, and recognition runs off those. Point-in-time, over-time, milestone-based and percentage-of-completion are all expressible, because real contracts contain more than one of them.
The Part Spreadsheets Cannot Do
A mid-term change to a contract is handled as a modification with its own effective date, not by editing the original and hoping the prior period still ties.
Remaining performance obligations are disclosed from the contracts themselves, so the number an investor asks for is derived rather than assembled.
A customer upgrades in month seven. In a spreadsheet you edit the row and the prior periods silently change, or you copy the tab and now there are two. Here it is a modification with an effective date: what was recognised stays recognised, and the remaining schedule is recomputed forward.
Remaining performance obligations then fall out of the contracts rather than being assembled for a board pack — which matters most in the week you are asked for it.
And It Posts
Every figure on every statement opens into the journal entries behind it, and from there into the invoice, bill or payment that caused them.
Recognition posts journal entries through the same checks everything else goes through, so the revenue line on the income statement opens into the contracts behind it. There is no reconciliation between the schedule and the ledger, because there is no separate schedule to reconcile.
What this does not do
It does not decide your revenue policy. Whether a given deliverable is a distinct performance obligation, and how the transaction price is allocated, are judgement calls your auditor will have a view on. What the system does is hold those decisions explicitly, apply them consistently, and show its working — rather than leaving them implicit in a formula.
Bring a real contract and see how it models.
If your books are also spread across entities, consolidation is the same argument one level up.
