ASC 606: the five steps of revenue recognition for SaaS
ASC 606 recognizes revenue as you deliver what the customer paid for, not when cash arrives. The five steps, worked through one $42,000 SaaS contract.
By The LedgerIt team9 min read
ASC 606, Revenue from Contracts with Customers, is the US GAAP standard that decides when a company records revenue and how much. Its rule is that you recognize revenue as you transfer what the customer paid for, in the amount you expect to be paid for it, so cash received and invoices sent are not revenue on their own.
The FASB issued it in Accounting Standards Update 2014-09, which replaced the old Topic 605 and most industry-specific revenue rules. The International Accounting Standards Board issued the same model as IFRS 15. This guide walks through the five steps, works them on one SaaS contract with a subscription and an implementation fee, and covers the parts that trip up startups: setup fees, usage pricing, commissions and what auditors check.
What is ASC 606
ASC 606 is Topic 606 of the FASB Accounting Standards Codification, the source of US GAAP. It applies to contracts with customers, with exceptions such as leases and insurance, and it replaced Topic 605 for every company that reports under US GAAP. Public companies adopted it first, private companies by annual periods beginning after December 15, 2019.
The core principle, in paragraph 606-10-05-3, is that a company recognizes revenue "to depict the transfer of promised goods or services to customers" at the amount it expects to be entitled to. Everything else in the standard is a method for answering two questions about each contract: what did we promise, and when did we deliver it.
The effective dates came in steps. ASU 2014-09 set annual periods beginning after December 15, 2016 for public business entities; ASU 2015-14 moved that to December 15, 2017 for public business entities and December 15, 2018 for all other entities; and ASU 2020-05 let private companies that had not yet issued financial statements under it wait until periods beginning after December 15, 2019. A startup founded today applies it from its first contract.
What are the five steps of ASC 606
The five steps are: identify the contract, identify the performance obligations, determine the transaction price, allocate that price to the performance obligations, and recognize revenue as each obligation is satisfied. They are listed in paragraph 606-10-05-4 of the standard, and each one has its own rules in the paragraphs that follow.
| Step | What you decide | Where in ASC 606 |
|---|---|---|
| 1. Identify the contract | Is there an enforceable agreement you can account for | 606-10-25-1 |
| 2. Identify the performance obligations | Which promises are distinct | 606-10-25-19 |
| 3. Determine the transaction price | How much you expect to be entitled to | 606-10-32-2 |
| 4. Allocate the transaction price | How much of it belongs to each promise | 606-10-32-28 to 32-34 |
| 5. Recognize revenue | When each promise is satisfied, over time or at a point in time | 606-10-25-27 |
Step 1: identify the contract
A contract counts under ASC 606 only when five criteria in paragraph 606-10-25-1 are met: both parties approved it and are committed to it, each party's rights can be identified, the payment terms can be identified, it has commercial substance, and it is probable you will collect what you are owed. Approval can be written, oral or by customary business practice. A signed order form usually clears the bar. A pilot with no payment terms usually does not.
Step 2: identify the performance obligations
A performance obligation is a promise to transfer a good or service that is distinct. Under paragraph 606-10-25-19, it is distinct when the customer can benefit from it on its own or with resources readily available to them, and the promise is separately identifiable from the other promises in the contract. For SaaS, the subscription is almost always one obligation. Implementation, training and premium support each need the test.
Step 3: determine the transaction price
The transaction price is the consideration you expect to be entitled to, excluding amounts you collect for third parties such as some sales taxes (606-10-32-2). It can be fixed, variable or both. Variable amounts, like usage overages or performance credits, go in only to the extent it is probable that a significant reversal of revenue will not occur later (606-10-32-11).
Step 4: allocate the transaction price
When a contract has more than one performance obligation, you split the price in proportion to each one's standalone selling price, the price you would charge for it sold separately (606-10-32-31 and 32-32). If you never sell it separately, you estimate it. Paragraph 606-10-32-34 names three methods: adjusted market assessment, expected cost plus a margin, and, in narrow cases, the residual approach.
Step 5: recognize revenue
Revenue is recognized when control transfers, either over time or at a point in time. Paragraph 606-10-25-27 lists three over-time criteria, and the first is the one SaaS meets: the customer "simultaneously receives and consumes the benefits" as you perform. That is why a subscription is recognized evenly across its term. An obligation that meets none of the three is recognized at the point control transfers.
A worked example: one SaaS contract through all five steps
On January 1, 2026, a customer signs a one-year order form: the subscription at $36,000 and a one-time implementation fee of $6,000, all $42,000 invoiced on January 1. The company sells the subscription alone for $40,000 a year and implementation alone for $10,000. Implementation is done evenly over January and February.
Step 1. The order form is signed, names the services and the payment terms, and the customer is creditworthy. It is a contract.
Step 2. Assume the implementation is distinct: the customer could hire a consultant to configure the product instead, and the configuration does not significantly change the software. That gives two performance obligations, the subscription and the implementation. If it were not distinct, the $6,000 would be folded into the subscription and recognized over the 12 months.
Step 3. The transaction price is $42,000. There is no variable consideration and no sales tax in it.
Step 4. The two standalone selling prices add up to $50,000, so the $42,000 is split 80% and 20%:
| Performance obligation | Standalone selling price | Share | Allocated price |
|---|---|---|---|
| Subscription | $40,000 | 80% | $33,600 |
| Implementation | $10,000 | 20% | $8,400 |
| Total | $50,000 | 100% | $42,000 |
The implementation earns $8,400, more than the $6,000 on the invoice, because the contract discount is spread across both obligations rather than landing on one.
Step 5. The subscription is satisfied over time, $33,600 over 12 months, or $2,800 a month. The implementation is satisfied as the work is done, $4,200 in each of January and February.
| Month | Subscription | Implementation | Revenue | Deferred revenue at month end |
|---|---|---|---|---|
| January | $2,800 | $4,200 | $7,000 | $35,000 |
| February | $2,800 | $4,200 | $7,000 | $28,000 |
| March | $2,800 | $0 | $2,800 | $25,200 |
| April to December | $2,800 a month | $0 | $25,200 in all | $0 at December 31 |
| Year | $33,600 | $8,400 | $42,000 |
Recording the invoice as revenue would have put $42,000 in January. Spreading all $42,000 evenly would have shown $3,500 every month. ASC 606 gives $7,000 in January and February and $2,800 after, because that is when the work was delivered. The unearned balance sits on the balance sheet as deferred revenue, which ASC 606 calls a contract liability.
What goes on the balance sheet under ASC 606
When the customer pays or payment is due before you deliver, the contract is a contract liability, usually labeled deferred revenue. When you deliver before payment is due, it is a contract asset. An amount you have an unconditional right to bill is a receivable. Paragraphs 606-10-45-1 to 45-3 set out the three.
In the example, the January 1 invoice creates a $42,000 receivable and a $42,000 contract liability. Each month's revenue moves an amount from the liability to the income statement, and the liability is $25,200 at March 31. A contract asset appears in the opposite case, for example when implementation work is done in January but the contract only lets you invoice for it in April.
How ASC 606 applies to common SaaS pricing
Most SaaS contracts fit the example: a subscription recognized evenly, plus fees that need the distinct test. Four patterns cause most of the questions: setup fees, usage pricing, multi-year prepayments and sales commissions. The answers come from the same five steps, with two practical expedients that keep small items simple.
- Setup and onboarding fees. Paragraph 606-10-55-51 treats a nonrefundable upfront fee that does not transfer a service as an advance payment for the services that follow, so it is recognized with the subscription, over the term. If the customer gets a renewal option that amounts to a material right, the period can extend past the first term.
- Usage and overage fees. Usage pricing is variable consideration. Estimate it and include only the amount for which a significant reversal is not probable (606-10-32-11).
- Multi-year prepayments. A large gap between payment and delivery can be a significant financing component. You can ignore it when, at contract inception, you expect the gap to be one year or less (606-10-32-18). A three-year prepayment needs a look.
- Sales commissions. Commissions paid to win a contract are incremental costs of obtaining it, which Subtopic 340-40 has you capitalize if you expect to recover them (340-40-25-1), then amortize. You can expense them as incurred if the amortization period would be one year or less (340-40-25-4).
ASC 606 decides revenue, not ARR. Investors still ask for both, and the gap between ARR and recognized revenue is one of the first questions in diligence.
What auditors and investors check under ASC 606
Auditors start from the contracts. They read a sample of order forms, check that the performance obligations and standalone selling prices you used match what the contracts say, and recompute revenue and deferred revenue for the period. They also look for side agreements, such as extra credits or a free month promised in an email, that change the transaction price.
Mistakes that come up at startups include fees recognized on invoice that should have been spread over the term, discounts applied to one line instead of allocated, and usage revenue booked before the usage happened. Each one is fixable before an audit, but much harder once three years of contracts have been booked the wrong way. ASC 606 also requires accrual accounting: a company on the cash method cannot produce GAAP revenue at all.
Keep a short revenue policy that names your performance obligations, how you set standalone selling prices, and which practical expedients you use. It is the first document an auditor asks for.
What to do this month
- List your contract types: monthly, annual, multi-year, usage-based, with or without implementation.
- For each, write down the performance obligations and whether each one is distinct.
- Set a standalone selling price for each obligation, from your price list or an estimate, and keep the support.
- Reallocate any contract where a discount or a free service sits on one line.
- Recompute this year's revenue and deferred revenue from the contracts, and book the difference.
- Decide whether you use the one-year expedients for financing components and commissions, and write it in your revenue policy.
Doing this by hand in a spreadsheet works for ten contracts and breaks at a hundred. LedgerIt keeps a startup's books on accrual with revenue recognized from the contract, so the schedule, the deferred revenue balance and the income statement agree every month.