How to Read a Construction WIP Report: Why a Cash-Rich Month Can Mean You Are Overbilled

On this page

A full bank account after a big billing month does not prove the month was good. If the customer has paid billings that run ahead of the work actually performed, part of that cash belongs to work you still owe, and the work-in-progress (WIP) report is where that shows. The report compares revenue earned with amounts billed, job by job. Read alongside cash collected and retainage held, it tells you whether a cash-rich month was earned or borrowed from the rest of the job.

The Formulas, and the Four Lines They Need

A WIP schedule built on the cost-to-cost method runs on three calculations:

Calculation Formula
Percent complete Costs incurred to date ÷ current estimated total cost
Earned revenue to date Percent complete × current contract value
Over or (under) billing Billings to date − earned revenue to date

In this guide a positive result means overbilled: you have invoiced more than you have earned, and the excess is a liability. A negative result means underbilled: you have earned more than you have invoiced, and the difference is an asset. Schedules can also subtract in the other direction, so check the sign convention before reading anyone else’s report.

The formulas alone leave out the question in the title. Billing is not collecting, and a contract can hold back part of each billing as retainage. A WIP schedule that answers “where did the cash come from” needs four lines kept separately: earned revenue, billings to date, cash collected, and retainage held. Overbilling turns into extra cash only to the extent the billings have been paid.

One Job Over Three Months

Take a hypothetical commercial build-out: contract value $300,000, original estimated cost $240,000, and 5% retainage withheld from each billing under the contract.

Month 1 Month 2 Month 3
Contract value $300,000 $300,000 $300,000
Estimated total cost $240,000 $240,000 $260,000
Costs incurred to date $48,000 $132,000 $208,000
Percent complete 20% 55% 80%
Earned revenue to date $60,000 $165,000 $240,000
Billings to date $90,000 $165,000 $230,000
Over or (under) billed $30,000 over $0 ($10,000) under
Retainage held $4,500 $8,250 $11,500
Cash collected to date $85,500 $140,000 $200,000
Billed, not yet collected (net of retainage) $0 $16,750 $18,500

Month 1. The job is $30,000 overbilled and the customer has paid every billing net of retainage. Cash collected ($85,500) exceeds costs incurred ($48,000), so the account looks strong. Two different numbers describe the surplus, and they should not be confused. The overbilling is $30,000: billings of $90,000 against $60,000 earned. The cash collected beyond what has been earned is $25,500: $85,500 collected against $60,000 earned. The $4,500 between them is retainage, billed but not yet received. That $25,500 is cash for work not yet performed, and the job will have to fund that work later without a matching billing. If the customer had not yet paid, the $30,000 overbilling would still be on the schedule, but it would sit in receivables and the bank would show none of it.

Month 2. Billings and earned revenue match. But $16,750 of billings is still uncollected, so the cash position is weaker than the WIP’s zero suggests.

Month 3. The estimate rose to $260,000, which moved percent complete, earned revenue, and the over or under position all at once. The job is now $10,000 underbilled, with $18,500 billed and not collected and $11,500 in retainage. Gross profit recognized to date is $240,000 − $208,000 = $32,000, and the job is now projected to make $40,000 instead of the $60,000 originally planned. The estimate is the denominator of percent complete, so it moves every calculated line on the schedule; an estimate that is not updated makes every line below it wrong.

Costs That Do Not Count as Progress

Cost-to-cost works only if each dollar of cost reflects progress. ASC 606 says so directly. In ASU 2014-09, paragraph 606-10-55-21(a) says an entity would not recognize revenue on costs “attributable to significant inefficiencies in the entity’s performance that were not reflected in the price of the contract,” giving wasted materials, labor, or other resources as examples. Paragraph 55-21(b) adds that when the cost of a good is not proportionate to progress, such as significant materials delivered but not yet installed, revenue may be recognized only to the extent of that cost, without margin, if the paragraph’s conditions are met.

Three kinds of cost need to be kept out of the percent-complete numerator, or handled separately:

  • Significant inefficiencies not priced into the contract. Rework is excluded only when it is the kind of cost 55-21(a) describes: a significant inefficiency that the contract price did not reflect. For example, assume $12,000 of Month 2’s $132,000 was that kind of rework, and the $240,000 estimate of total cost did not include it. Progress would then rest on $120,000 of cost against the same $240,000 estimate: 50% complete and $150,000 earned, not 55% and $165,000. Counting the rework would overstate earned revenue by $15,000, and the $12,000 itself earns no revenue. Rework that was expected and priced into the bid is ordinary cost and stays in the measure.
  • Materials on site but not installed. Under the 55-21(b) conditions, they earn revenue equal to their cost, not a share of margin.
  • Committed costs. A signed purchase order or subcontract is a commitment, not a cost incurred. It belongs in the estimate of cost to complete, not in costs to date.

Keeping incurred costs, open commitments, and estimated cost to complete as three separate columns is what keeps the percent-complete figure honest, and it depends on job costing that separates incurred costs from open commitments as the costs arrive.

Change Orders Move Both Sides

A change order raises the contract value, and when it adds work it changes the estimated cost too. Updating one without the other distorts the schedule. Raising the contract value without the cost inflates margin; incurring change-order cost before the contract value is updated drives percent complete up against the old price and shows margin erosion that is really unscheduled scope.

Which changes belong in the contract value is a revenue-recognition question, and the answer is not “only signed paperwork.” Under ASC 606-10-25-10, a contract modification is a change in scope or price “approved by the parties,” and it “could be approved in writing, by oral agreement, or implied by customary business practices.” Paragraph 25-11 adds that a modification can exist when the parties have approved a change in scope but not yet agreed the price; the entity then estimates the price change as variable consideration, subject to the constraint on estimates in 606-10-32-11 through 32-13. Two rules therefore run side by side:

  • For billing and cash: do not invoice or forecast cash on a change until it is authorized under the contract.
  • For the WIP schedule: include a change in contract value when it is an approved modification under ASC 606, at the amount the constraint allows when the price is still open; keep changes that are not approved at all off the schedule and track them beside it.

Update the estimated cost in the same entry as the contract value, so percent complete stays tied to one current picture of the job.

A Portfolio Snapshot

A contractor running several jobs reads the same calculation across all of them. With hypothetical numbers:

Job Contract Est. cost Costs to date % complete Earned Billed Over or (under)
A. Medical office $850,000 $680,000 $476,000 70% $595,000 $640,000 $45,000 over
B. Restaurant $500,000 $400,000 $340,000 85% $425,000 $400,000 ($25,000) under
C. Warehouse $1,200,000 $960,000 $288,000 30% $360,000 $300,000 ($60,000) under
D. School addition $300,000 $250,000 $237,500 95% $285,000 $277,000 ($8,000) under

Job A’s overbilling can make the operating account look healthy while B, C, and D are each owed money that has not been invoiced. The questions to ask of each line differ. Job B, at 85% with $25,000 uninvoiced, needs a progress billing against its schedule of values. Job C, underbilled $60,000 at 30%, may have a billing schedule that lags the work or an estimate that is too low; both are worth checking before the next application. Job D is close to balanced near completion, which is what a finishing job should look like.

Recording the Over and Under Billing

The month-end entry depends on how billings were recorded during the month, so the whole cycle has to be read together. The example below assumes a pattern in which each billing is first recorded as contract revenue, and the WIP adjustment then moves revenue to the earned amount. It follows the same job, with 5% retainage on each billing.

Month and step Account Debit Credit
Month 1: bill $90,000 Accounts receivable $85,500
Contract asset, retainage receivable $4,500
Contract revenue $90,000
Month 1: customer pays Cash $85,500
Accounts receivable $85,500
Month 1: WIP adjustment, $30,000 overbilled Contract revenue $30,000
Contract liability (billings in excess of costs and estimated earnings) $30,000
Month 2: bill $75,000 Accounts receivable $71,250
Contract asset, retainage receivable $3,750
Contract revenue $75,000
Month 2: reverse Month 1 adjustment Contract liability $30,000
Contract revenue $30,000
Month 3: bill $65,000 Accounts receivable $61,750
Contract asset, retainage receivable $3,250
Contract revenue $65,000
Month 3: WIP adjustment, $10,000 underbilled Contract asset (costs and estimated earnings in excess of billings) $10,000
Contract revenue $10,000

Read across the months, revenue lands where the WIP schedule says it should: $60,000 in Month 1 (90,000 − 30,000), $105,000 in Month 2 (75,000 + 30,000), bringing the total to $165,000, and $75,000 in Month 3 (65,000 + 10,000), bringing it to $240,000. Month 2 needs no new adjustment, because the job is neither over nor underbilled. Retainage receivable reaches $11,500, matching the schedule.

A company whose system records earned revenue directly from the WIP schedule, and posts billings to a separate billings account, should not post these adjustments on top; it would be correcting revenue that was never overstated. Under ASC 606-10-45-1 through 45-3, a contract in which the customer has paid or owes more than the work performed is presented as a contract liability, and one in which the work performed exceeds the amounts due is presented as a contract asset, with any unconditional right to payment shown separately as a receivable.

The Tax Side Is a Separate Calculation

The earned revenue on a GAAP WIP schedule is not automatically the income on the tax return. Section 460 of the Internal Revenue Code requires the percentage-of-completion method for long-term contracts, with its own cost-allocation rules, and then carves out exceptions in subsection (e):

  • Residential construction contracts. Since the 2025 legislation, subsection (e)(1)(A) exempts “any residential construction contract,” replacing the narrower “home construction contract” exemption, for contracts entered into in taxable years beginning after July 4, 2025.
  • Other construction contracts of smaller contractors. Subsection (e)(1)(B) exempts a contract the taxpayer expects to complete within two years, if the taxpayer meets the gross receipts test of section 448(c). For taxable years beginning in 2026, Rev. Proc. 2025-32 sets that test at average annual gross receipts of $32,000,000.

A contractor inside those exceptions may use a different tax method from the WIP schedule, and a contractor outside them computes percentage of completion under the tax rules, which do not necessarily match the GAAP measure. The WIP schedule is the starting point for both, but which method applies is a question to settle with a CPA each year, because the exceptions turn on contract type, expected duration, and receipts.

Who Else Reads the Schedule

Lenders and sureties that ask for a WIP schedule read it for the same signals: whether estimates hold, whether overbilling is funding operations, and whether underbilling is growing late in jobs. A schedule kept monthly, with the four lines separated and the estimate updated as it changes, gives them numbers that survive a follow-up question. A schedule rebuilt the night before a review lacks the estimate history and change-order trail those questions depend on.

The Test of a Good Month

Read the month with one measure: was the cash that arrived earned. Compare earned revenue with billings, then billings with collections, then check that retainage is shown as held and that rework, uninstalled materials, and commitments are not inflating progress. When earned revenue, billings, and collections line up within a normal timing gap, the cash was earned. When cash runs well ahead of earned revenue, the month borrowed from the rest of the job, and the WIP report is where that shows.

This guide explains WIP reporting as general information, not accounting or tax advice. Revenue recognition and tax methods depend on your contracts, financial statements, and receipts, so confirm both with a CPA familiar with construction before relying on them.

Leave a comment

Your email address will not be published. Required fields are marked *