Gantt Guild

The $40,000 implementation that booked $55,200 of revenue: revenue recognition for project managers

Revenue follows what the customer gets, not what they pay or what sales booked. Why a discounted implementation carries more revenue than its price, why a services PM's progress reports move the income statement, and why every change order is a revenue event.

A team collaborating over sticky notes on a table

Revenue is the most important number in most companies' financial statements, and the one most often misstated. Investors value software companies largely on revenue growth. Managers are paid on it. Salespeople are motivated by the bookings that eventually become it.

Most project managers assume revenue is someone else's problem. It isn't. In services, product launches and pricing changes, project decisions change revenue directly: an acceptance clause, a free month, a change order, a revised estimate of hours. This is one of the places where the MBA core and day-to-day project management meet, and it's taught in week 11 of the program.

The rule in one sentence

Since 2018, US public companies have recognized revenue under ASC 606 (IFRS 15 internationally), a single model that replaced more than a hundred pieces of industry guidance. Its core principle: recognize revenue to depict the transfer of promised goods or services to customers, in the amount the company expects to be entitled to in exchange.

The five steps

  1. Identify the contract. Approved, with each party's rights and payment terms, commercial substance, and probable collection. Contracts negotiated together may need combining; changes to scope or price are modifications.
  2. Identify the performance obligations. Each distinct promise: the customer can benefit from it on its own, and it isn't significantly integrated with other promises. SaaS is a series of daily service periods treated as one obligation. Implementation any qualified partner could perform is usually distinct.
  3. Determine the transaction price. Including variable consideration (discounts, rebates, SLA service credits, usage fees), constrained to what's highly probable not to reverse.
  4. Allocate the price to obligations in proportion to their standalone selling prices: what each would sell for on its own.
  5. Recognize revenue when or as each obligation is satisfied: over time (the customer consumes the benefit as you perform, or you're enhancing an asset the customer controls, or you're building something with no alternative use and have a right to payment) or at a point in time.

Worked example: a bundle at Larkspur

Larkspur Freight Software is the book's fictional $140M-ARR case company. On 1 March it signs a customer for a two-year subscription covering 600 vehicles, plus implementation and on-site training. The subscription is invoiced annually in advance; implementation and training are invoiced on completion.

ExhibitLarkspur: revenue allocation for a bundled contract

Contract signed 1 March · $ thousands · fictional

ObligationContract priceStandalone selling price% of SSPAllocated revenue
SaaS subscription, 24 months480.0504.087.5%463.8
Implementation40.060.010.4%55.2
Training10.012.02.1%11.0
Total530.0576.0100%530.0

The $46k discount from standalone prices is allocated proportionally across the bundle. Subscription: recognized ratably, $19.3k a month. Implementation: over time, measured by hours (60% complete at 31 March → $33.1k in March, the rest in April). Training: at a point in time when delivered in April.

Here's the counterintuitive result. The implementation was priced at $40k, but it carries $55.2k of revenue, because the discount belongs to the whole bundle, not to the line the salesperson happened to discount. Since implementation and training are delivered early, the allocation also pulls revenue forward:

Year 1Year 2Total
Billed$290.0k$240.0k$530.0k
Revenue recognized$298.1k$231.9k$530.0k

Same contract, same total, different timing. The differences between billing and revenue sit on the balance sheet.

Contract balances: where the timing differences live

BalanceWhen it arises
Contract liability (deferred revenue)The customer has paid, or been billed with an unconditional right to payment, before the company performs
Contract assetThe company has performed but its right to payment is conditional on something other than time, such as a later milestone
ReceivableAn unconditional right to payment
Remaining performance obligations (RPO)Contracted revenue not yet recognized, billed or not; the current portion (cRPO) is closely watched for subscription companies

Services: where the project manager's numbers become revenue

Harbor, the book's fixed-price migration for Meridian Bank, was billed on four milestones, each requiring the customer's formal acceptance within five business days (with passive acceptance if they didn't respond):

MilestoneValueShareAcceptance evidence
M1 Design and wave plan$84,00020%Signed acceptance notice
M2 Pilot complete$105,00025%Signed acceptance; pilot report
M3 Production waves complete$147,00035%Signed wave reports 1–3
M4 Training and handover$84,00020%Signed acceptance notice

For billing, acceptance is everything: no signed acceptance, no invoice. But for revenue, the question isn't when invoices go out. Migration work on Meridian's own GitLab environment enhances an asset Meridian controls, so revenue is recognized over time, typically measured by hours incurred against total estimated hours. Three consequences follow, and all of them run through the PM's reports:

  • When progress runs ahead of milestones, revenue exceeds billing and the difference is a contract asset (unbilled revenue).
  • When a milestone is billed before the matching work is done, the difference is deferred revenue.
  • When estimated total hours rise, the measure of progress falls and revenue already recognized is adjusted with a cumulative catch-up. On a fixed fee, overruns reduce margin directly; if total expected costs exceed the fee, the whole expected loss is recognized immediately.

That's why the book's rule for services PMs is simple: report progress accurately and early. A revised estimate to complete isn't just a project fact. It changes revenue the company has already reported.

Every change order is a revenue event

When Meridian bought a subsidiary and asked GitLab to migrate 2,000 more repositories, the change order (CO-1, $96,000) raised an accounting question before it raised a delivery one. Was it a separate contract, or a modification of the existing one?

Because it added distinct services (migrating different repositories) at prices consistent with standalone selling prices, it was accounted for as a separate contract with its own progress measurement. Had the repositories been added at a deep discount, or had the change altered the original scope in ways that weren't distinct, the answer would have been a termination-and-new-contract or a cumulative catch-up on the combined contract. This is why services change orders are reviewed by revenue accountants.

The questions a project manager should raise

ExhibitRevenue questions a project manager should raise

For services engagements, pricing and packaging changes, and product launches · use with revenue accounting and deal desk

SituationQuestion to raiseWhy
New SKU or add-onIs it a separate performance obligation? What's its standalone selling price?Allocation and timing of revenue
Bundled discountHow is the discount allocated?Revenue per element differs from price per element
Usage- or outcome-based pricingHow is variable consideration estimated and constrained?Revenue may lag billing
Customer acceptance clausesDo they delay transfer of control?Revenue may wait for acceptance
Services with customizationDistinct from the software or not?Combined obligations change timing
Change orderSeparate contract or modification?Catch-up adjustments; margin
Fixed-fee overrunMeasure of progress? Loss contract?Revenue adjustments; expected loss recognized immediately
Partner or marketplace salePrincipal or agent?Gross versus net revenue
Free months, credits, SLA creditsVariable consideration or consideration payable to the customer?Reduces the transaction price

The most dangerous of these is the third. A friendly “sure, we'll include the extra training” in an email to a customer can create a new performance obligation, change the allocation of the whole contract, and become a restatement. Never promise customers anything outside the contract.

How students practice this

Week 11 pairs leadership and conflict with the financial accounting core: double entry, the three financial statements and revenue recognition. Students post Larkspur's bundle through all five steps in a spreadsheet they build themselves, then reconcile Harbor's milestone billing against progress-based revenue and explain the contract balances to a “CFO” in a two-minute Loom.

Adapted from Projects, For Real, chapters 69 and 97. The projects, people, vendors and numbers are the book's fictional case studies, set against GitLab's publicly documented practices. Gantt Guild is not affiliated with GitLab Inc.

Operator Program · Cohort 1

Do this for free, for real

Every article here is a week of the Operator Program in miniature. In the program you write the documents yourself, in real tools, and get reviewed live.

The whole program is free. No tuition, no deposit, no income-share agreement, nothing owed if you leave.

Apply, it's free