Skip to main content

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.

Zuny FesterBy Zuny Fester, Head of Operations and Marketing
Reviewed by Zuny Fester
Published Last reviewed Editorial policy

Part of the revenue recognition guide.

Default assumption to avoidThat contractual billing milestones automatically track revenue-recognition progress
Output methodMeasures results/value actually delivered (e.g. units completed, milestones achieved)
Input methodMeasures effort or cost expended toward the obligation (e.g. labor hours, costs incurred)
Right-to-invoice expedientOnly applies if the invoiced amount directly corresponds to value transferred to the customer
Common disqualifierMilestones 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.

Book a workflow review

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

Different distinct performance obligations within one contract can use different progress measures if that's what faithfully depicts each one's progress — the method doesn't have to be uniform across an entire multi-obligation contract, only consistent for similar performance obligations in similar circumstances.

That's worth revisiting against the right-to-invoice expedient's actual two conditions rather than assuming it applies — if the milestones don't genuinely track value delivered, the historical approach may need correcting, which is a conversation for whoever reviews the entity's revenue recognition policy, not something to change unilaterally mid-period.

Both — a right to consideration matching completed performance, and confirmation that the invoiced amount reflects value transferred, not simply the amount the contract entitles the entity to bill. Meeting only one condition doesn't qualify a milestone schedule for the expedient.

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 more

How-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 more

Integration

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 more

How-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