All Workflows

ASC606 Revenue Accounting

Cadel's ASC 606 workflow extracts contract terms from MSAs, SOWs, timesheets, and acceptance records, then applies the five-step model to compute recognized and deferred revenue for services, SaaS, and hybrid arrangements.

ORDER-TO-CASH Revenue Recognition 9 document types
#asc-606 #revenue-recognition #performance-obligations #transaction-price-allocation #saas-revenue #fixed-fee-contracts #sow-reconciliation #contract-modification #standalone-selling-price #deferred-revenue #timesheet-billing #acceptance-based-revenue

The Problem

For mid-market professional services and SaaS companies, revenue recognition under ASC 606 is not a single calculation — it is a chain of document-dependent judgments that must be repeated for every contract, every period. A controller at a 150-person services firm may manage 40–80 active SOWs simultaneously, each with its own transaction price, performance obligation schedule, and billing milestone. Manually tracing from an MSA through a SOW to a timesheet and then to an acceptance record takes, on average, two to three days per month-end close cycle, and that estimate holds only when no documents are missing or amended.

The problem compounds with contract variety. A single client may have a fixed-fee website replatform bundled with a 12-month post-launch support retainer — two distinct performance obligations under ASC 606-10-25-19 that must be allocated transaction price using relative standalone selling prices (SSP). Treating the bundle as one obligation overstates near-term revenue and understates the deferred liability on the balance sheet. In a manual spreadsheet environment, that allocation is typically done once at contract inception and rarely revisited when a change order arrives.

Variable consideration adds a further layer. Time-and-materials contracts with performance bonuses require controllers to assess whether the bonus amount is probable of not reversing under the constraint in ASC 606-10-32-11 — and that assessment must be refreshed each reporting period. Without a systematic link between the acceptance record and the originating SOW, controllers either recognize the bonus too early (violating the constraint) or hold it too long (understating revenue). Neither error is immaterial at $500K+ contract values.

At scale, the manual process introduces four failure modes that are structurally difficult to prevent: incorrect POB identification, inconsistent progress measurement methods, missed cut-off on late-uploaded acceptance records, and undetected loss contracts when timesheet hours breach fixed-fee estimates. Each failure mode has a direct audit exposure under PCAOB AS 2401 or a restatement risk under ASC 250.

Why It Matters: Context

ASC 606, Revenue from Contracts with Customers (FASB ASC Topic 606), replaced ASC 605 for public companies in 2018 and for most private companies by 2019. Its five-step model — identify the contract, identify performance obligations, determine the transaction price, allocate the transaction price, and recognize revenue when (or as) an obligation is satisfied — is procedurally clear but evidence-intensive. Step 2 alone requires reading every contract to assess whether promised goods or services are distinct under ASC 606-10-25-19, a judgment that depends on both the contract terms and observable market evidence of standalone selling prices. Step 5 requires selecting and consistently applying either an input method (e.g., labor hours) or an output method (e.g., milestone completion) per ASC 606-10-55-16 through 55-21.

For mid-market companies — typically those with $10M–$250M in service revenue, no dedicated technical accounting team, and contracts stored across a shared drive, a CRM, and an email inbox — the evidentiary chain is fragile. Timesheets live in a project management tool. MSAs and SOWs are PDFs signed via DocuSign. Acceptance records arrive by email and are often uploaded to accounting systems days after execution. None of these systems talk to each other natively, which means a controller must manually cross-reference four or more document types to close a single contract's revenue schedule correctly.

The regulatory consequence of getting this wrong is not theoretical. For SEC registrants, a revenue recognition error that is quantitatively or qualitatively material triggers a restatement under ASC 250-10 and potential comment letters from the SEC's Division of Corporation Finance. For private companies seeking acquisition financing or audit opinions, an incorrect deferred revenue balance or an unrecognized loss contract will result in audit adjustments, a qualified opinion, or, in due-diligence contexts, a purchase price reduction. The AICPA's Audit and Accounting Guide: Revenue Recognition specifically identifies multi-element arrangements and variable consideration constraints as high-risk areas requiring documented, reproducible evidence trails.

What This Workflow Automates

  1. Document ingestion and classification: The workflow accepts uploaded files of type MSA, SOW, Contract, Timesheet, Acceptance Record, and Offering, and assigns each to its correct document role in the contract hierarchy without manual tagging.
  2. Contract and SOW extraction: Key terms are extracted from each MSA and SOW — parties, effective dates, total contract value, deliverable milestones, billing schedules, payment terms, and any variable consideration clauses (bonuses, penalties, success fees).
  3. Performance obligation identification: The workflow parses each contract for distinct promises under ASC 606-10-25-19, flags bundled deliverables (e.g., a replatform plus a stand-ready support period), and records each as a separate performance obligation with its own recognition schedule.
  4. Transaction price allocation: For multi-POB contracts, the workflow allocates the total contract price to each obligation using relative SSP, either from the Offering document (which records catalogue pricing) or from a controller-supplied SSP table, consistent with ASC 606-10-32-28 through 32-41.
  5. Progress measurement and revenue scheduling: For each performance obligation, the workflow applies the elected measurement method — hours-based input method from timesheets for time-and-materials engagements, or milestone-based output method from acceptance records for fixed-fee deliverables — and computes the revenue recognized in each reporting period.
  6. Variable consideration constraint enforcement: Bonus or contingent fee amounts are held as constrained variable consideration until a matching acceptance record is ingested; upon match, the constrained amount is released to recognized revenue in the period bearing the acceptance record's execution date, not the upload date.
  7. Exception detection: The workflow deterministically flags four exception classes — (a) timesheet hours exceeding SOW fixed-fee estimates, triggering a loss-contract margin check under ASC 420; (b) contract modifications where added scope is priced at SSP, requiring treatment as a separate contract under ASC 606-10-25-12(a); (c) inconsistent progress measurement method changes from the elected method at contract inception; and (d) acceptance record execution dates that straddle a closed period, generating a prior-period adjustment memo.

All extraction, allocation, scheduling, and exception-flagging steps execute in under 90 seconds per contract batch, producing a structured, field-by-field output that any controller can trace back to the source document page and paragraph.

Edge Cases We Simulate

The workflow ships with a battery of synthetic test scenarios that exercise every failure mode we have seen in real-world data. Each scenario produces a deterministic outcome that an auditor or controller can verify in seconds.

Scenario What's wrong Expected outcome
Variable Consideration Constraint A time-and-materials SOW includes a performance bonus that is only probable of not reversing once the client issues a formal acceptance record. Without linking the acceptance record to the SOW, unconstrained variable consideration is incorrectly recognized upfront, violating ASC 606-10-32-11. Workflow holds the bonus amount as constrained variable consideration until a matched acceptance record is ingested, then releases it to recognized revenue in the correct period.
Multiple Performance Obligations in a Single Contract An MSA bundles a website replatform (distinct deliverable) with 12 months of post-launch support (stand-ready obligation). Treating the contract as a single POB understates deferred revenue and overstates near-term revenue. Workflow identifies two distinct performance obligations under ASC 606-10-25-19, allocates transaction price to each using relative standalone selling price, and schedules support revenue ratably over the service period.
Contract Modification — Scope Addition A change order adds new deliverables at prices that reflect their standalone selling prices. Under ASC 606-10-25-12(a) this must be treated as a separate contract, not a modification of the original allocation. Workflow detects the incremental SOW, confirms SSP alignment, and creates a new contract record rather than re-allocating the original transaction price.
Timesheet Hours Exceed SOW Estimate Billable hours reported in the timesheet exceed the hours estimated in the SOW for a fixed-fee engagement. Over-run hours do not create incremental revenue but may signal a loss contract requiring immediate recognition under ASC 420. Workflow flags the hour overage, computes the implied margin erosion against the fixed fee, and raises a loss-contract exception for controller review before the period is closed.
Input Method vs. Output Method Selection For a multi-phase project, the SOW defines discrete deliverable milestones (output method) but the available evidence is only labor hours (input method). Mixing methods across periods creates inconsistent revenue curves. Workflow enforces a consistent measurement method per performance obligation as elected at contract inception, and flags any period where the available evidence type changes from the elected method.
Acceptance Record Date Straddles Period End A client signs an acceptance record on the last day of the quarter but the document is uploaded two days after the books close. Recognizing revenue in the subsequent period misclassifies it as a cut-off error under ASC 606-10-25-1. Workflow reads the execution date on the acceptance record independently of the upload date and posts revenue to the period containing the acceptance date, generating a prior-period adjustment memo if the period is already closed.

Sample Documents

Download or inspect the seeded sample files used to demonstrate this workflow:

File Document type Notes
Billable hours report JantoMarch 2026.xls Timesheet Demonstrates extraction of billable hours by resource and project code for Q1 2026; used to measure progress toward satisfying a time-and-materials performance obligation under ASC 606-10-55-17 input method.
Pattern_-_Mike_s_Amazing_-_Acceptance_Record.pdf Acceptance Records Client-signed acceptance record for a website deliverable; execution date triggers release of constrained variable consideration and marks the performance obligation as satisfied.
Pattern_-_Mike_s_Amazing_Website_Redesign___Replatform__MSA_and_SOW_pages_1-8.pdf MSA Master Services Agreement covering payment terms, IP transfer, and warranty clauses; workflow extracts contract asset/liability treatment and identifies enforceable rights and obligations per ASC 606-10-25-1.
Pattern_-_Mike_s_Amazing_Website_Redesign___Replatform__MSA_and_SOW_pages_9-16.pdf SOW Statement of Work defining project phases, fixed fee, milestone schedule, and post-launch support period; workflow uses this to identify distinct performance obligations and allocate transaction price.

Sample Results

In the demo dataset, the workflow processed four documents covering a single client engagement: an MSA/SOW covering pages 1–8 and 9–16 of a website redesign and replatform agreement, a billable hours report for January through March 2026, and a client acceptance record. The contract contained two distinct performance obligations — the replatform deliverable and a post-launch support retainer — requiring independent transaction price allocation. The timesheet cross-reference identified that reported billable hours for Q1 2026 fell within the SOW estimate, confirming no loss-contract condition for the period. The acceptance record's execution date was read directly from the document's signature block, independent of its upload timestamp, ensuring revenue was posted to the correct reporting period.

Across the four reconciliation pairs in the demo run, the workflow matched each timesheet period to its originating SOW and each acceptance record to its corresponding SOW deliverable milestone. One specific exception class was exercised: the variable consideration constraint check confirmed that the performance bonus specified in the SOW was correctly held as constrained consideration at period-end, pending a formal client acceptance record. Until that document is ingested, the bonus amount does not flow into recognized revenue, preventing an upfront recognition error that would violate ASC 606-10-32-11.

Why Automation Wins Here

Replacing the manual ASC 606 close process with this workflow reduces the per-contract revenue close cycle from two to three days to under five minutes of controller review time. The four exception classes — loss contract, separate-contract modification, method inconsistency, and cut-off error — are caught deterministically on every run, eliminating the reliance on a reviewer's memory of which contracts have active bonuses or pending change orders. For a firm managing 60 active SOWs, that translates to roughly 120–180 hours of analyst time recovered per quarter, and a material reduction in the risk of a revenue restatement or audit adjustment.

Every output the workflow produces — the POB schedule, the SSP allocation table, the constrained variable consideration register, and any exception memos — is formatted as a stand-alone workpaper. Each field traces to a specific source document, page, and clause. The controller downloads the package directly into the audit file, where it satisfies the documentation standard under AICPA AU-C Section 230 (Audit Documentation) for revenue recognition evidence, without any reformatting or supplemental narrative required.

Frequently Asked Questions

Which ASC 606 five-step model steps does this workflow automate?

The workflow addresses all five steps: (1) contract identification by parsing MSA and SOW documents for enforceable rights and obligations under ASC 606-10-25-1; (2) performance obligation identification using the distinct-good-or-service test in ASC 606-10-25-19; (3) transaction price determination including variable consideration constraints under ASC 606-10-32-11; (4) standalone selling price allocation under ASC 606-10-32-31; and (5) revenue recognition timing keyed to acceptance records, milestones, or ratable periods depending on the elected measurement method.

Does this workflow handle SaaS subscription revenue as well as professional services?

Yes. For SaaS arrangements the workflow treats the subscription as a stand-ready performance obligation satisfied ratably over the contract term, consistent with ASC 606-10-25-14(b). For hybrid contracts that bundle a SaaS license with implementation or customization services, the workflow separates the two performance obligations and applies the appropriate recognition pattern to each, preventing the common error of accelerating SaaS revenue into the implementation period.

How does the workflow integrate with our ERP — we use NetSuite and QuickBooks?

Cadel connects to NetSuite via the SuiteAnalytics REST API and to QuickBooks Online via the Intuit OAuth 2.0 API, reading open contracts and posting recognized revenue journal entries directly to the designated deferred-revenue and revenue accounts. No manual CSV export is required. For teams still on Tally Prime, Cadel supports XML voucher import aligned to Tally's ledger structure.

What audit trail does the workflow produce for our external auditors?

Every recognition event is stored with a timestamped evidence chain: the source document (MSA, SOW, acceptance record, or timesheet), the extracted field values, the allocation calculation, and the resulting journal entry. Auditors can trace any revenue balance to its originating contract clause without manual reconstruction. This documentation supports the PCAOB AS 2410 related-parties and AICPA AU-C Section 240 fraud risk procedures that focus on revenue cut-off.

How does the workflow handle contract modifications such as change orders or price reductions?

The workflow applies the three-way test from ASC 606-10-25-12: if the modification adds distinct goods or services at their standalone selling price it is treated as a new contract; if it changes the scope or price of existing obligations it is treated as a termination of the old contract and creation of a new one (cumulative catch-up) or as a prospective adjustment, depending on whether the remaining obligations are distinct. Controllers receive a modification memo showing the before/after allocation and the adjustment amount for the current period.

Does it support multi-currency contracts, such as USD-invoiced engagements for an Indian subsidiary reporting in INR?

Yes. The workflow records the transaction price in the contract currency and applies the exchange rate on the transaction date for initial measurement, consistent with ASC 830-10-45-9 (for US GAAP reporters) and Ind AS 21 paragraph 21 (for Indian entities). Period-end remeasurement of contract assets and liabilities uses the closing rate, and the resulting foreign exchange gain or loss is posted to a separate FX line rather than being mixed into revenue.

Try it

This workflow is deployed and live in our demo environment. Upload your own documents to see it in action.

Open the live workflow