Playbook — Revenue recognition

ASC 606, moved
out of the spreadsheet
and into the system.

ASC 606 is the US accounting rule for when you are allowed to count revenue. It has five steps. Every one of them is a decision, and right now a spreadsheet is quietly making those decisions for you. Here is how we build the system underneath. How to split a bundled deal into the things you actually promised. How to prove what each of those things is worth on its own. How to handle a contract change. And how to trace a revenue line all the way back to the order that created it.

01 — Why it breaks

The close is a spreadsheet

The spreadsheets usually work. That is what makes them so hard to argue with. They are built and extended, quarter after quarter, by people who know the rule extremely well. They produce numbers the company has every reason to believe. But the logic lives in formulas, not in a system. The reasoning lives in two or three heads. And none of it survives the first person who asks you to produce the same answer twice and show your working.

02 — How we do it

04 movements
01

The five steps, turned into rules

ASC 606 gives you five steps. Automating it means turning each step from a monthly judgement call into a rule the system applies on its own. Step one: find the contract. Decide when two contracts count as one. They usually do if they were signed at about the same time, with the same customer, negotiated as a package, or if the price of one depends on how you perform on the other. Step two: list what you promised. Each promise is separate if the customer can get value from it on its own, and if it is genuinely a distinct thing within that contract. In a software deal, that means deciding — and defending — whether the implementation work is separate from the platform, whether training is separate from implementation, and whether a hosted licence and its support are one promise or two.

Step three: work out the total price. Include the parts that move up and down. Include any interest-like element if the customer is paying much later than they receive. Step four: split that price across the promises. You split it in proportion to what each item would sell for on its own. Step five: count the revenue as you deliver each promise. Some promises are delivered over time. Some at a single moment. If it is over time, you need one stated way of measuring progress that you apply the same way every time, rather than picking a method contract by contract. Each of these decisions becomes a written policy an auditor can read. Then it is built into the system, so that the setup and the policy say the same thing. When they stop agreeing, that is a problem — and it is far easier to spot when both exist.

02

What each item is worth on its own, and where the discount lands

Deciding what each item would sell for on its own is where the judgement piles up. It is also the thing auditors push on hardest, because everything downstream moves when it moves. If you do sell an item on its own often enough, the price you charge is the answer. But that answer is a spread of prices, not a single number. So the method has to say which deals you looked at. How you grouped them — by customer segment, by country, by contract length, by volume, by sales channel. Which number you take from the spread, usually the middle one, or a range with a written rule for deals inside it and outside it. And how often you check the whole thing again. A range set two years ago and never revisited is not evidence. It is a habit.

Often you never sell the item on its own at all. Implementation work bundled into a platform deal is the normal example. Then you have to estimate the price. You can look at what the market would bear, or take your cost and add a margin. You can also take the total price and subtract the value of everything else, but only where the rule allows it — and it only allows it when the price of that item really does swing wildly. Reaching for that shortcut because it is convenient is the most common weakness we find.

Once you have those numbers, the split follows mechanically. And that is where the discount surfaces. A discount on the whole deal gets spread across every promise, in proportion to what each one is worth on its own. The only exception is when there is clear evidence the discount belongs to one item alone. Which means a discount the sales team thinks they gave on the licence turns up, in the accounts, as revenue sitting against support and not yet earned. That split is worked out once and stored against the contract. It gets recalculated only when the contract changes. It does not get rebuilt from scratch every period by a formula nobody has re-read.

03

Fees that move, and contract changes decided once

Fees that move up and down are more common than companies admit. Usage charges. Rebates that kick in at a volume. Discounts applied backwards once a threshold is hit. Credits when you miss a service level. Penalties. Rights of return. And any price you routinely knock off in practice, whether or not the contract mentions it. You estimate them two ways. Either take the average of the possible outcomes, or take the single most likely one, depending on which fits. Then you hold some back. You only count the amount you are confident you will not have to reverse later. The estimate gets reviewed every reporting period. That review is recorded in the system, with a name against it and a reason. It is not a conversation that happened.

Contract changes are the work nobody budgets for and everybody needs. The rule gives you three ways to treat one, and the whole difficulty is applying them consistently. If the customer buys extra things, and pays roughly what those things sell for on their own, it is a new contract. It sits alongside the old one and leaves it alone. If the change alters what is still to be delivered, and the price is not what those things sell for on their own, you look forward. You end the old contract, add the money not yet counted to the new money, and split that total across whatever is left to deliver. If the change affects something you are part-way through delivering and cannot separate out, you correct the past. You adjust the revenue you have already counted, in the period the change happens. Mid-term upgrades, contracts lined up to end on the same date, ramp-ups and early renewals all land in one of those three. We build the decision tree once, put it into the system, and let the system apply it. The same change, presented twice, produces the same accounting twice. Judgement still lives at the edges. It is now made once and written down, rather than re-argued every quarter under close pressure.

04

The schedule, and a trail that goes all the way back

The system generates the revenue schedules, the schedule of revenue you have billed but not yet earned, the split between what customers owe you and what you owe them, and the movement report the auditor asks for on the first morning. Generated from the contract records, not assembled from them by a person. That schedule of unearned revenue is the honest test of the whole build. It has to agree with the ledger. It has to agree with the billing. And it has to explain its own movements — opening balance, new amounts added, amounts released to revenue, contract changes, exchange rate effects, closing balance — with no fudge line to make it balance.

Underneath it sits the thing that matters most, and it is not a report. It is the trail. A revenue line traces back to the promise it belongs to. The promise traces to the split that sized it. The split traces to the pricing evidence behind it. That traces to the contract, and to any change made to the contract. And the contract traces to the order line that started it all. The trail runs the other way too. Give the system an order line, and it will show you every revenue line, every unearned balance and every future schedule that order line will produce. Being able to walk it in both directions is what turns a due-diligence question from a research project into a search. Everything else on this page is bookkeeping.

03 — Why spreadsheets fail at this
A spreadsheet can work out your revenue. It cannot prove it worked out the same revenue last quarter.

The problem with the spreadsheet is not that it is wrong. Very often it is right, and the people who maintain it are better accountants than the system that would replace them. The problem is that it cannot prove itself. ASC 606 is not just a sum. It is a set of judgements that you have to show were applied the same way every time. And showing that is exactly what a spreadsheet has no way to do.

  • Nothing enforces the order of work. A cell can be overwritten at any point, and nothing records that it was, or by whom, or why.
  • Judgements have no version history. Last period's pricing evidence and this period's sit in the same cells. The history is a filename.
  • Nothing genuinely links the records. The revenue line and the order line are joined by a lookup formula, not by a relationship the system can stand behind.
  • Contract changes get handled by editing history rather than adding to it. So the original position disappears at exactly the moment somebody asks for it.
  • The only control is review. And review means a person checking their own work against a deadline they set themselves.
  • Restating an old period means rebuilding it. So the restated version is a new spreadsheet rather than the old one plus a correction.
  • Two people cannot close in parallel, because the model is one file and the file has one author.

None of this says the system is cleverer than the accountant. It says the system can be run again, and the accountant cannot.

04 — What you end up owning

After we leave
01

The policy

A written revenue recognition policy, and a separate written method for pricing evidence. How you decide what counts as a separate promise. How you work out what each item is worth on its own, and on what evidence. How you estimate fees that move, and how much you hold back. How you treat each kind of contract change. And how you measure progress on anything delivered over time. Written to be handed to an auditor without a covering explanation.

02

The configuration

The rules for identifying promises, splitting the price, allocating discounts, and handling contract changes — all held in the system rather than in one person's head. With a test case for every scenario, including the awkward ones. The mid-term upgrade. The contract pulled forward to end on a shared date. The ramp-up. The partial cancellation. The backdated rebate. A future change can then be tested rather than argued about.

03

The reporting and the close

Revenue schedules, the schedule of revenue not yet earned, the split between what customers owe you and what you owe them, and the movement report. Generated, agreeing with the ledger, and repeatable. Plus a close runbook. What gets run, in what order, what gets checked, by whom, and what to do when a check fails. The close stops depending on one person being available.

04

The trail, and the team that can use it

A trail you can walk in both directions, between a revenue line and the order line behind it. A pack of evidence supporting every judgement in the policy. And a written procedure for restating a period, produced before anyone needs it. Plus a finance team that has run the engine through a full close with us beside them, rather than watched a demonstration of it.

What the finance team really gets from this is not speed, though speed follows. It is the ability to answer a question about a number without first working out how the number was produced. And the ability to give the same answer in six months, to somebody who was not in the room the first time.

05 — The other playbooks

All playbooks →

If your revenue recognition depends on a spreadsheet and on the person who wrote it, start with an assessment. You get a written diagnosis, and it is yours whether or not you hire us to act on it.

Request an assessment