Real ASC 606 revenue recognition examples for SaaS, agencies, and services firms. See journal entries, schedules, and the five-step model in action.
Your billing system says one number. The general ledger says another. The deferred revenue schedule has a third, and nobody can explain the difference without opening several spreadsheets.
That situation is common in SaaS, digital agencies, and professional services firms approaching fundraising, an audit, or a more demanding board process. ASC 606 revenue recognition examples matter because they connect contract terms to the exact revenue timing and journal entries that appear in your financial statements. Cash collection is only one event. Revenue follows the transfer of promised goods or services.
The examples below focus on the contracts that create real close problems, including implementation, usage pricing, credits, variable consideration, contract liabilities, contract assets, and commissions.
A signed contract and a customer payment feel like proof of revenue. They aren't. Your billing platform records invoices and collections, while ASC 606 requires you to determine what you promised, when the customer receives it, and how much of the transaction price belongs to each obligation.
That disconnect becomes dangerous during diligence. An investor may see strong cash collections while your recognized revenue remains deferred. Another may see reported revenue that doesn't reconcile to contract terms, customer credits, or usage records. The issue isn't that cash is wrong. The issue is that billing activity and accounting performance measure different events.

ASC 606 became effective for public business entities for annual reporting periods beginning after December 15, 2017, so calendar-year public companies applied it in 2018. For nonpublic entities, it became effective for annual reporting periods beginning after December 15, 2018, with a one-year interim-reporting delay, while FASB adoption flexibility under ASU 2020-05 gave some private entities additional flexibility.
ASC 606 aligns closely with IFRS 15 and imposes a common five-step model. The framework centers on control transfer, not the invoice date. SEC guidance states that revenue is recognized when the customer obtains control of promised goods or services, not necessarily when the bill is issued (SEC revenue recognition guidance).
For a founder preparing for diligence, the practical standard is simple: every recognized dollar should trace to a contract, an identified obligation, an allocation decision, and evidence that delivery occurred. Use the investor due diligence preparation guide to organize that evidence, and review Gritt.io investor discovery for founders when you need a clearer view of investor expectations.
Controller's rule: If your revenue schedule can't reconcile to contracts, invoices, cash, and the general ledger, you don't have a revenue process. You have an estimate.
Use one contract summary worksheet for every material arrangement. The worksheet should identify the customer, promised deliverables, transaction price, standalone selling prices, allocation, recognition pattern, and supporting evidence.
Consider a SaaS contract with a $40,000 fixed transaction price, platform access, and implementation. Assume the customer receives a cloud platform over the subscription term and a defined implementation service completed at onboarding.
Step one, identify the contract. Confirm approval, enforceable rights, payment terms, commercial substance, and collectibility. A signed document alone doesn't complete the analysis if the parties haven't approved the arrangement or if collection isn't probable.
Step two, identify performance obligations. Separate each promise that provides a distinct benefit. Platform access is one obligation. Implementation is another when the customer can benefit from it independently and the service isn't so integrated with the platform that the two promises form one combined output.
Step three, determine the transaction price. Start with fixed consideration, then evaluate usage fees, credits, rebates, refunds, concessions, bonuses, or penalties. Variable consideration enters the transaction price only when it's probable that a significant revenue reversal won't occur (transaction price guidance for variable consideration).
Step four, allocate the price. Allocate the transaction price according to relative standalone selling prices. If platform access has an SSP of $36,000 and implementation has an SSP of $4,000, the total SSP is $40,000, so the allocation remains $36,000 and $4,000. If the contract price differs from total SSP, spread the discount proportionately unless a specific exception applies (relative SSP allocation).
Step five, recognize revenue as obligations are satisfied. Recognize implementation when delivered if it is a point-in-time obligation. Recognize platform access over time as the customer receives and consumes service.
| Step | Action | Amount | Recognition Timing |
|---|---|---|---|
| Identify the contract | Approved SaaS arrangement with enforceable payment terms | $40,000 | At contract inception |
| Identify obligations | Platform access and implementation | $36,000 plus $4,000 SSPs | At contract review |
| Determine transaction price | Fixed consideration after reviewing credits and usage terms | $40,000 | At inception, updated for permitted changes |
| Allocate price | Relative SSP allocation | $36,000 platform, $4,000 implementation | At inception |
| Recognize revenue | Record implementation when complete and platform access over the term | $4,000 plus recurring platform amount | As each obligation is satisfied |
The model doesn't let you book all billings immediately. For a practical overview of how this affects SaaS close work, see what revenue recognition means for growing businesses.
Implementation is where many SaaS policies become too simplistic. The contract may call the work “onboarding,” but the label doesn't determine the accounting. You need to determine whether the customer can benefit from the service and whether the promise is distinct within the context of the arrangement.
Start with two questions:
Then test whether your work significantly modifies the software, whether the platform depends on the service to function, and whether you provide a combined output rather than separate deliverables. The performance obligation analysis guide provides a useful framework for documenting that conclusion.
Assume an annual license has an SSP of $90,000, priced at $7,500 per month, and onboarding hours have an SSP of $15,000. The customer pays $105,000 upfront, equal to the combined SSP.
If onboarding is distinct and completed in the first month, allocate $15,000 to implementation and $90,000 to the license. Month one includes the full $15,000 implementation revenue plus $7,500 of subscription revenue, assuming the platform service begins at inception.
If the customer instead pays a discounted $75,000 for the bundle, the relative SSP percentages drive allocation:
| Obligation | SSP | Relative Allocation | Allocated Price |
|---|---|---|---|
| Annual license | $90,000 | 85.714% | $64,285.50 |
| Onboarding | $15,000 | 14.286% | $10,714.50 |
| Total | $105,000 | 100% | $75,000 |
The implementation portion recognized on completion would be $10,714.50, not the invoiced amount assigned to onboarding by the sales order. The remaining license allocation is recognized over the service period.
If implementation is not distinct because it substantially integrates with the SaaS service, treat the combined promise as one obligation and recognize revenue over the period in which the integrated service is delivered. Your contract memo should document the capability test, integration conclusion, SSP evidence, and recognition pattern.
A bundle can contain three separate promises:
The contract sets a fixed transaction price of $195,000, including any variable consideration that passes the constraint. Combined SSP is $210,000, so the bundle includes a $15,000 discount.
Assume the credits are distinct and the usage estimate meets the variable consideration constraint. Allocate the transaction price by relative SSP:
| Performance Obligation | Standalone Selling Price | Allocation % | Allocated Price |
|---|---|---|---|
| Annual SaaS license | $150,000 | 71.429% | $139,285.50 |
| Implementation services | $40,000 | 19.048% | $37,143.60 |
| Usage credits pool | $20,000 | 9.524% | $18,570.90 |
| Total | $210,000 | 100% | $195,000 |
Your allocation worksheet must connect each percentage to observable pricing or a documented estimate. Retain current price lists, comparable standalone sales, renewal pricing, or an adjusted market assessment. For broader financial reasoning, see browse our financial analysis blog, but use contract evidence for the ASC 606 conclusion.
A fixed discount exists at contract inception. Allocate it across obligations using relative SSP unless the facts support assigning the discount entirely to one obligation.
A tiered rebate is variable consideration. Estimate the expected amount, apply the constraint, and revise the estimate as uncertainty resolves. If customer activity makes a volume rebate probable, record the required cumulative catch-up instead of reducing revenue mechanically from the first invoice. Credits or rebates paid to a customer reduce revenue when the payment is not for a distinct good or service received from that customer. Use this variable consideration guidance to structure the estimate and review controls.
Update the contract record when the customer redeems credits. Decide whether the event is a modification, a change to the remaining transaction price, or satisfaction of an existing obligation. Reconcile the usage report, credit balance, invoice, and revenue subledger at the time of redemption, not at year-end.
A $120,000 annual subscription billed upfront on January 1 creates a contract liability, not immediate subscription revenue. The payment precedes performance, so the first entry belongs on the balance sheet.

At inception:
| Account | Debit | Credit |
|---|---|---|
| Cash | $120,000 | |
| Contract liability, deferred revenue | $120,000 |
Each month for the annual service period:
| Account | Debit | Credit |
|---|---|---|
| Contract liability, deferred revenue | $10,000 | |
| Subscription revenue | $10,000 |
The monthly amount is $120,000 divided by 12 months. A contract liability exists when the customer pays, or you have an unconditional right to consideration, before transferring the related service. The liability declines as you satisfy the obligation (contract liability presentation).
Assume $12,000 of incremental sales commissions qualify for capitalization and are amortized over three years. Record:
| Account | Debit | Credit |
|---|---|---|
| Capitalized contract cost asset | $12,000 | |
| Cash or commissions payable | $12,000 |
Monthly amortization equals $333.33 when rounded from $12,000 divided by 36 months. The first-year amortization is $4,000, leaving a year-end contract cost asset of $8,000.
At each month-end:
| Account | Debit | Credit |
|---|---|---|
| Commission amortization expense | $333.33 | |
| Capitalized contract cost asset | $333.33 |
The capitalization and amortization policy should follow the contract-cost requirements and your expected benefit period. Don't capitalize routine marketing or general selling costs just because they relate to a customer.
Post the journal-entry logic consistently with SaaS revenue recognition journal entries.
A mid-year upgrade adds 50 seats for $30,000 prorated. Treat it as a separate contract when the added services are distinct and the price reflects their standalone selling price. If the upgrade changes the remaining promise under the original arrangement, account for it as a termination and replacement or as a cumulative catch-up, depending on the contract facts and remaining obligations.
Use this checklist on December 31:
The disclosure-ready ending balances in this example are $0 deferred revenue after the full annual service is delivered and $8,000 in capitalized contract costs after year-one amortization.
The journal entries are easier to review when the contract summary, schedule, and ledger posting share the same obligation IDs.
A metered API contract creates a different accounting rhythm. Assume the customer pays $0.50 per 1,000 calls with a $60,000 monthly minimum. The customer receives and consumes the API benefit as calls are processed, so usage data becomes the evidence for performance.

In month one, usage produces $75,000 of billable consideration, based on 150 million calls at the stated rate. Recognized revenue is $75,000 if the amount corresponds directly to value delivered and no reversal constraint remains.
In month two, usage produces $48,000, below the contractual minimum. The minimum produces $60,000 of recognized consideration, leaving a $12,000 difference that requires careful contract analysis. Record that amount as a contract liability or other appropriate balance when the customer has paid for future service or usage rights that haven't yet been satisfied.
In month three, usage rebounds to $90,000. The accumulated floor true-up flows through only to the extent the contract terms and performance support recognition. Maintain a usage roll-forward that shows billed usage, minimum commitments, credits, prior estimates, constrained amounts, and recognized revenue. Invoice-based recognition is a practical expedient when the invoice amount directly corresponds to the value transferred to date (variable consideration allocation guidance).
A $400,000 data migration project billed through four deliverables follows a different pattern. If each milestone is a distinct point-in-time obligation, recognize the related amount when the customer accepts the deliverable and control transfers. Before acceptance, an invoice or completed internal task doesn't automatically create revenue.
Finance systems struggle when product usage, billing minimums, credits, and acceptance approvals live in separate tools. Choose a revenue automation platform that captures source usage, applies constraint logic, records contract liabilities, preserves approval evidence, and posts a reconciliation-ready subledger. A spreadsheet that only multiplies calls by a rate won't handle the accounting conclusion.
Revenue errors often surface during the monthly close, before an auditor proposes an adjustment. Review these four warning signs every month, especially for bundled services, usage fees, and customer credits.
A signed order does not establish revenue by itself. Confirm approval, enforceable rights, payment terms, and collectibility at the contract level. Flag unusual receivable aging, concessions, side letters, or cancellation rights for review before recognition begins.
An upfront invoice or paid implementation milestone does not prove that the related service was delivered. Separate invoice dates from performance obligations. For each obligation, document whether recognition occurs at a point in time or over time, then retain acceptance evidence or progress support.
Discounts, rebates, credits, refunds, price concessions, incentives, and penalties are forms of variable consideration. Route every concession through the transaction-price analysis and update the estimate when facts change. A credit recorded only in billing can overstate revenue and understate the contract liability.
A schedule that cannot tie contracts to invoices, cash, deferred revenue, contract assets, and the general ledger is not audit-ready. Reconcile billed, deferred, and recognized amounts monthly. Investigate differences before close sign-off, including usage cutoffs and manual journal entries.
Control that works: Require a five-step memo for new contract types, attach SSP evidence, approve every credit adjustment, and retain usage cutoff reports with the close package.
Contract assets need separate classification. If revenue is earned before billing becomes unconditional, record a contract asset until the customer acceptance or invoicing condition is met (contract asset example). Do not classify that balance as an ordinary receivable until the right to payment is unconditional.
You don't need to rebuild every system before fixing your policy. Use a focused month to inventory the contracts, document judgments, test the close, and assign ownership.

Jumpstart Partners can turn this work into an investor-ready revenue policy, documented five-step model, tested close package, and repeatable contract-review process. Don't spend another month reconciling billing to the general ledger by hand.
Jumpstart Partners helps SaaS, agency, and professional services teams document ASC 606 policies, build revenue schedules, reconcile contract balances, and prepare audit-ready close packages. Visit Jumpstart Partners to discuss your contracts and set up a revenue process that your team can defend.