How do I recognize revenue for milestone-based professional services billing?
Don't assume billing milestones equal revenue milestones. Measure progress with an output method (like miles of work completed) or input method (costs or effort incurred), and only use the right-to-invoice practical expedient if the invoiced amount genuinely corresponds to value delivered — cash-flow-driven milestones (30% at kickoff, 40% at midpoint) usually don't qualify.
Part of the revenue recognition guide.
| Default assumption to avoid | That contractual billing milestones automatically track revenue-recognition progress |
|---|---|
| Output method | Measures results/value actually delivered (e.g. units completed, milestones achieved) |
| Input method | Measures effort or cost expended toward the obligation (e.g. labor hours, costs incurred) |
| Right-to-invoice expedient | Only applies if the invoiced amount directly corresponds to value transferred to the customer |
| Common disqualifier | Milestones negotiated for cash-flow/contract-management reasons, not to mirror value delivered |
Why billing milestones and revenue milestones aren't the same thing
A fixed-fee professional services contract might invoice 30% at kickoff, 40% at a mid-project review, and 30% at go-live. Those percentages are frequently set for cash-flow and contract-management reasons — getting paid something up front, protecting against non-payment mid-project — not because a third of the actual value has been delivered by kickoff. ASC 606 recognizes revenue based on progress toward satisfying the performance obligation, which is a separate question from when the contract says you get to invoice.
Measuring progress: output vs. input methods
An output method measures the results achieved and value actually transferred to the customer — a defined project milestone genuinely reached, a deliverable genuinely accepted. An input method measures the effort or resources expended toward the obligation instead — labor hours logged, costs incurred as a proportion of total expected cost. Either is acceptable under ASC 606 as long as it faithfully depicts progress; the choice depends on which one a specific engagement's economics actually track.
When the right-to-invoice shortcut actually applies
The right-to-invoice practical expedient lets an entity recognize revenue at the amount it has a right to bill, skipping a separate progress calculation — but only when that invoiced amount genuinely corresponds, directly, to value transferred to the customer to date. A time-and-materials arrangement invoiced monthly for hours actually worked is the classic qualifying case. A fixed-fee contract with cash-flow-driven milestones that don't track actual delivery is the classic non-qualifying case — using the expedient there would recognize revenue on a schedule the standard doesn't actually support.
Next step
Map the finance workflow with the most exposure and prove the automation path.
Bring the invoice, contract, payment reconciliation, or customer finance workflow you have to defend at audit. Loopfour can map the trigger, controls, integrations, and approval loop.
Worked example
A $300,000 fixed-fee engagement, billed on a schedule that doesn't track delivery
A consulting firm signs a $300,000 fixed-fee engagement, billed 30% at kickoff ($90,000), 40% at a mid-project review ($120,000), and 30% at go-live ($90,000) — a schedule the client negotiated purely to spread out cash outflow. By the mid-project billing date, the firm's actual labor-hours-incurred input measure shows only 25% of total expected effort has gone in, not 70% (30%+40%) as the cumulative billing would suggest. Revenue recognized to date should track the 25% input measure — $75,000 — not the $210,000 already invoiced. The $135,000 gap between cash billed and revenue earned sits on the balance sheet as a contract liability (deferred revenue) until the input measure catches up.
Frequently Asked Questions
Sources
Related
Topic
Revenue Recognition
Revenue recognition determines when — not just how much — revenue hits the books. Under ASC 606 (US GAAP) and its international counterpart IFRS 15, revenue is recorded as a company satisfies its perf…
Read moreHow-to
How do you calculate a contract's transaction price under ASC 606?
Transaction price is the consideration a company expects in exchange for goods or services. Start with the stated contract price, add variable consideration using the expected-value or most-likely-amount method, constrained to amounts unlikely to reverse, adjust for any significant financing component, then subtract noncash consideration and amounts payable to the customer.
Read moreIntegration
Which billing platforms support automated ASC 606 revenue recognition?
Stripe Billing, NetSuite, and Salesforce Revenue Cloud all offer native ASC 606 and IFRS 15 revenue recognition automation, generating deferred revenue schedules and recognition journal entries from contract and invoice data. Spreadsheet-based tracking has no native automation and carries meaningfully higher manual-error and audit risk as contract volume and complexity grow.
Read moreHow-to
How do I true up estimated variable consideration under the ASC 606 constraint?
Re-estimate the constrained amount at every reporting period, not just once at contract inception. ASC 606-10-32-14 requires updating the estimate of the transaction price as uncertainty resolves, and adjusting revenue for the change using the same allocation basis established at the start — the constraint caps the estimate, it doesn't freeze it.
Read more