There is no shortage of good technical writing on ASC 606. The five step model has been explained thoroughly by people more qualified than me to explain it.
What is written about far less is the operational problem, which in my experience is where almost all of the difficulty actually sits. Not "how does the standard work" but "how do you make sure finance sees a contract before revenue is recorded against it."
Because contracts are negotiated by people outside finance, signed without finance seeing them, and discovered during the audit.
The real failure mode
The technical mistakes I see are almost always downstream of a process mistake.
A discount gets treated as a pricing matter rather than as variable consideration, because nobody in finance read the term. A renewal clause creates a material right that goes unrecognized, because the contract was filed rather than reviewed. A standard template gets edited during negotiation and nobody flags it, so it is processed as standard.
None of those are failures to understand the standard. They are failures to get the document in front of someone who would have caught it.
If contract review happens at year end rather than at execution, you are not doing ASC 606 compliance. You are doing ASC 606 archaeology, and it is much more expensive.
Getting contracts to finance
The first and most valuable fix is structural: make contract intake a step in the sales process rather than a request from accounting.
That means the handoff happens as a condition of the deal being considered done, not as a favor. In practice the mechanisms that work are the ones attached to something the sales team already needs: the contract gets attached to the customer record before the order can be processed, or before commission is calculated, or before the invoice goes out.
Mechanisms that do not work are the ones that rely on remembering: a monthly email asking whether there were any new contracts, a shared folder people are supposed to drop things into. Those fail quietly and you find out eleven months later.
Managing contracts inside the ERP against the customer record has a second benefit beyond retrieval. The terms live next to the transactions they govern, so the person processing an invoice can see the terms that apply to it.
The review itself
A first pass looks for the things that most often change the answer, roughly in this order.
Performance obligations. What is genuinely distinct versus what is bundled for convenience. If the customer could benefit from one part without the other, and the parts are separately identifiable in the contract, they are probably distinct. This is the determination that most changes the shape of the accounting, so it goes first.
Variable consideration. Discounts, rebates, allowances, penalties, and anything contingent. The question is not just whether variable consideration exists, but how much of it to include, which brings in the constraint: include it only to the extent it is probable that a significant reversal will not occur. In practice that means having a view on likelihood, documented at the time, rather than after you find out.
Timing. Point in time or over time, and specifically what evidences transfer of control. Shipping terms matter here more than people expect, and they are frequently negotiated separately from everything else.
Term and renewal. Automatic renewals, termination rights, and anything that gives the customer an option to acquire something at a discount. That last one is a material right, and it is the most commonly missed item on this list because it does not look like a revenue term.
Non standard clauses. Acceptance provisions, consignment language, anything bespoke. The tell is language that does not appear in your template.
Standard terms and an exception list
The way to make this sustainable is to decide the treatment for your standard terms once, write it down, and then spend review effort only on what deviates.
That gives you a defined standard set with a pre-agreed conclusion, and an exception list of contracts that do not fit it. Review effort concentrates where judgment is actually required, which is usually a small minority of contracts carrying a large majority of the risk.
The maintenance obligation is real: when the standard template changes, the pre-agreed treatment has to be revisited. A standard set that has not been reviewed in three years is a set of assumptions, not a control.
Documenting the conclusion
For every non standard contract, write a short memo at the time of review. Terms reviewed, conclusion reached, reasoning.
Short means short. A paragraph or two. The purpose is not to produce a technical treatise, it is to record what you looked at and why you concluded what you concluded, while you still remember.
The cost of writing this at review time is perhaps fifteen minutes. The cost of reconstructing it eleven months later, for an auditor, from a contract you last read in March, is substantially more than fifteen minutes and produces a worse answer. You will be reconstructing what you probably thought rather than recording what you did think.
The control
Somewhere in all of this there is a control, and it should be stated as one.
A usable version names who performs the review, what specifically they review for, when it happens relative to revenue being recorded, what would cause them to escalate, and what evidence it leaves behind. "Contracts are reviewed for ASC 606 compliance" is a category, not a control. Nobody can tell whether it happened.
The evidence question is the one that decides whether this survives an audit. If the review happens but leaves nothing behind, you cannot demonstrate it, and for practical purposes it did not happen. The memo is the evidence, which is another reason to write it at the time.
Recurring mistakes
A short list of what I see go wrong most often:
- Treating a discount as a pricing decision rather than variable consideration
- Missing material rights inside renewal and loyalty terms
- Assuming a contract is standard because it started from a standard template
- Estimating variable consideration once and never revisiting it as evidence accumulates
- Reviewing at year end, which converts a routine task into a project
The honest summary
ASC 606 compliance is mostly a logistics problem wearing a technical costume.
The technical judgments are real and some of them are genuinely hard. But the contracts that cause problems are almost never the ones somebody thought hard about and got wrong. They are the ones nobody in finance saw until the audit.
Fix the intake, define your standard terms, review the exceptions when they happen, and write down what you concluded. The technical part gets much more manageable once the document is reliably in front of you.