Construction Work in Progress Report: A Worked WIP Schedule

10 min read

A contractor can show a profit every month and still run short of cash, then get a phone call from the bonding agent asking about one job. The answer to both is usually sitting in a report most small contractors only build once a year, when the CPA asks: the work in progress report, or WIP schedule. Built monthly, it tells you which jobs are making the money you bid, which are billed ahead of the work, and which are quietly eating cash.

This guide builds one from scratch for an example contractor with four jobs, with every number shown so you can check the arithmetic. Then it covers how to read over and under billing, how to spot profit fade early, and what the schedule means for your financial statements. Accounting rules for contractors are detailed, so treat this as a working guide, and have a CPA who knows construction review your method.

What a work in progress report shows

A WIP schedule lists every open job on one row and answers the same question for each: how much of this job have we earned, and how does that compare with what we've billed? To answer it, each row needs six inputs and produces a few results.

ColumnWhere it comes from
Contract priceThe signed contract plus approved change orders
Estimated total costYour current estimate of what the whole job will cost, updated by the project manager each month
Cost to dateJob cost report from your accounting system
Percent completeCost to date ÷ estimated total cost
Earned revenuePercent complete × contract price
Billed to dateTotal progress billings on the job, including retainage billed
Over or (under) billedBilled to date − earned revenue

This is the cost-to-cost way of measuring progress: a job is as complete as the share of its total cost you've spent. It's the method used in this guide. Some contractors measure progress in other ways, such as units installed or an engineer's estimate. Your CPA can tell you which fits your contracts.

The one input you can't get from the books is estimated total cost. It comes from the people running the job, and the whole report depends on it being honest. If a project manager keeps the original bid estimate after the job has gone sideways, the WIP will overstate profit until the last month, then hand you the loss all at once.

A worked WIP schedule, step by step

Granite Ridge Builders is a made-up commercial contractor with four open jobs at the end of September. Here's its schedule, in thousands of dollars:

WIP schedule for example contractor Granite Ridge Builders at Sep 30, 2026, in thousands: library $1,200 contract, 60% complete, $720 earned, $780 billed, $60 overbilled; clinic $480, 80%, $384 earned, $336 billed, $48 underbilled; warehouse $2,000, 25%, $500 earned, $560 billed, $60 overbilled; retail shell $350 contract with $364 estimated cost, 75%, $262.5 earned, $280 billed, $17.5 overbilled; totals $4,030 contract, $1,866.5 earned, $1,956 billed, $89.5 net overbilled
Four jobs, one row each. Totals: $1,866,500 earned, $1,956,000 billed, $89,500 net overbilled.

Take the library renovation and walk the arithmetic through:

Calculation for the example library job: $612,000 cost so far divided by $1,020,000 estimated total cost is 60% complete; 60% of the $1,200,000 contract is $720,000 earned; $780,000 billed minus $720,000 earned is $60,000 overbilled; gross profit to date $108,000
Three lines of arithmetic per job. The same steps fill every row.
  1. Percent complete: $612,000 spent ÷ $1,020,000 estimated total = 60%.
  2. Earned revenue: 60% × $1,200,000 contract = $720,000.
  3. Over or under: $780,000 billed − $720,000 earned = $60,000 overbilled.
  4. Gross profit to date: $720,000 earned − $612,000 cost = $108,000. That's 15% of earned revenue, matching the job's expected margin of $180,000 on $1,200,000.

The other three jobs work the same way:

  • Clinic fit-out: $345,600 ÷ $432,000 = 80% complete. 80% × $480,000 = $384,000 earned. Billed $336,000, so $48,000 underbilled. Profit to date $38,400.
  • Warehouse: $440,000 ÷ $1,760,000 = 25%. 25% × $2,000,000 = $500,000 earned. Billed $560,000, so $60,000 overbilled. Profit to date $60,000.
  • Retail shell: $273,000 ÷ $364,000 = 75%. 75% × $350,000 = $262,500 earned. Billed $280,000, so $17,500 overbilled. Profit to date is −$10,500, because the job is now expected to cost $14,000 more than its contract.

Before you read anything into a WIP schedule, check that it adds up. Granite Ridge's totals do:

  • Earned $1,866,500 − billed $1,956,000 = net $89,500 overbilled, which equals overbillings of $137,500 ($60,000 + $60,000 + $17,500) minus underbillings of $48,000.
  • Earned $1,866,500 − cost to date $1,670,600 = $195,900 gross profit to date, the same as the four jobs added up ($108,000 + $38,400 + $60,000 − $10,500).
  • Work left to earn (backlog) is $4,030,000 − $1,866,500 = $2,163,500, against $3,576,000 − $1,670,600 = $1,905,400 of cost still to spend. The difference, $258,100, is the profit still expected on these jobs.

How to read over and under billing

Overbilling and underbilling aren't good or bad on their own. They tell you who is financing the job right now.

Overbilled: the owner is financing you

Granite Ridge has billed $137,500 more than it has earned on three jobs. That's cash it has collected (or will collect) for work not yet done. A construction partner at Marcum LLP, writing in an article republished by the Construction Management Association of America, warns that contractors who front-load billing can end up spending that money on other jobs, and says any overbilling should be represented by cash in the bank.

A simple test: total overbillings should be covered by cash on hand. If Granite Ridge has $90,000 in the bank against $137,500 of overbillings, some of the money owed to future work on those jobs has already been spent.

Underbilled: you are financing the owner

The clinic is $48,000 underbilled. Granite Ridge has done $48,000 of work it hasn't invoiced. The same CMAA article says underbillings are a cause for concern and that contractors should be able to bill for all work performed. It lists legitimate causes too, such as billing milestones not yet reached, or change orders approved for scope but not yet priced.

Sureties look hard at this. An Old Republic Surety underwriter, writing for NASBP, describes underbillings as something that can hide profit erosion and overstate working capital, and lists causes including unapproved change orders and disputed work. The article also says sureties may leave late-stage underbillings on unprofitable jobs out of working capital unless there's a clear reason for them.

For every underbilled job, ask three questions: Is there unpriced change order work? Did we just miss a billing? Is the cost estimate too low, making the job look more complete than it is? The third is the dangerous one, and it leads to the next section.

Spotting fade before it becomes a loss

Fade is profit shrinking as a job goes on: each month the estimated cost goes up, so the expected profit goes down. The CMAA article describes gain/fade analysis as comparing the original estimated profit with the current expected profit, and recommends doing it monthly at a minimum. It also notes that sureties and lenders run the same analysis.

Here is the clinic fit-out over four month-end schedules:

Two charts for the example clinic job, June to September: estimated profit falling from $72,000 (15%) to $64,000, $56,000 and $48,000 (10%), while the underbilled amount rises from $12,000 to $22,000, $35,000 and $48,000
Profit fading while unbilled work grows. One of these alone is worth a question; both together need a meeting.

In June the clinic was estimated to cost $408,000, for $72,000 of profit (15%). By September the estimate was $432,000, and profit had faded to $48,000 (10%). Over the same months, the underbilling grew from $12,000 to $48,000. Rising costs that haven't been billed often point to change order work done without a signed change order. If that's the cause, the fix is to get the change orders priced and signed, then bill. If it isn't, the estimate was wrong, and the remaining $86,400 of cost to complete needs a hard look.

Loss jobs

The retail shell has gone further: estimated cost of $364,000 on a $350,000 contract, a $14,000 loss. The WIP schedule above shows $10,500 of that loss so far (75% of the way through). Accounting guidance generally requires more. As CPA firm LaPorte explains, when current estimates show a contract will lose money, the entire loss is recorded, not just the share earned so far. For Granite Ridge, that likely means booking the remaining $3,500 now, which would bring gross profit to date from $195,900 to $192,400. How and when to book a loss provision is a judgement for your CPA, but don't wait until the job is finished to find out.

What the WIP schedule changes on your financial statements

If your books are kept on the percentage-of-completion basis, the WIP schedule is what adjusts revenue to earned revenue each period. Overbillings appear on the balance sheet as a liability (billings in excess of costs and estimated earnings), and underbillings as an asset (costs and estimated earnings in excess of billings).

Under the current US revenue standard, ASC 606, many contractors now present these as contract liabilities and contract assets. They're close to, but not always the same as, overbillings and underbillings. EisnerAmper's guide notes that contract assets can include retainage receivable and uninstalled materials alongside underbillings, and that classifying retainage correctly can affect loan covenants and borrowing calculations. This is exactly the kind of detail to leave to your CPA.

Tax is a separate question. How you recognise revenue for tax can differ from your financial statements. The IRS points contractors to section 460 of the Internal Revenue Code for long-term contract methods (see IRS Publication 538), and smaller contractors may qualify for exceptions. Ask a CPA who works with contractors before changing anything.

A monthly WIP routine, and the mistakes to avoid

A work in progress report built once a year for the CPA is a compliance exercise. Built monthly, it's how you run the business. A routine that works for a small contractor:

  1. Close job costs by the 5th. Post all supplier invoices and payroll for the month to the right jobs.
  2. Get updated cost estimates from each project manager. Ask them to sign off: "estimated total cost as of the 30th is $X". Don't let the bid estimate roll forward unchanged.
  3. Update contract prices for signed change orders only. Unsigned ones go on a separate list.
  4. Run the schedule and check the totals as shown above.
  5. Review three lists: jobs underbilled by more than a set amount, jobs where estimated profit fell since last month, and any job now showing a loss.
  6. Compare overbillings with cash. If cash is lower, find out where it went.

Common mistakes:

  • Counting unapproved change orders in the contract price. It inflates earned revenue and profit. Keep them out until signed.
  • Leaving committed costs out of cost to date. Materials delivered but not yet invoiced make the job look less complete and less costly than it is. Make sure costs are posted to the period they belong to.
  • Front-loading the schedule of values to bill early. It creates overbillings that feel like profit but aren't.
  • Treating the WIP as the PM's opinion. Compare each month's estimate with the last. Big swings need a written reason.

If cash is the pressing problem, pair the WIP with a cash flow forecast, since billings, retainage and supplier payments drive both. And to track how each job's costs compare with its budget line by line, see our guide to budget vs actual reports.

Building the work in progress report without the spreadsheet scramble

Most small contractors build the WIP in Excel: export job costs and billings, paste them in, type the PM estimates next to them. It works, and it breaks when a job is added or a column shifts.

Parity connects to QuickBooks Online directly, or takes a CSV or Excel export from your construction accounting software. Add a column of each job's estimated total cost from your PMs, upload, and describe what you need: earned revenue, over and under billing, and gross profit by job. It builds a dashboard with headline numbers and their trends, charts, what explains the changes, and a table of what needs attention, such as underbilled jobs and fading margins. Every number is checked against queries on the full dataset before you see it. Next month, update it with the newer export. When you ask, it writes a client-ready report from the same data that you can share with your bonding agent or banker as a read-only link or PDF. The cost estimates are still yours, and so are the accounting judgements; Parity just does the arithmetic and checks it.

Turn your job cost export into a monthly WIP dashboard

Upload job costs, billings and your estimates, and see over and under billing by job on one checked screen. Upload your job cost report

Whatever you build it in, the habit is what counts: honest estimates, monthly, with the totals checked. Do that, and the bonding agent's phone call becomes a question you've already answered.

Want to see what Parity builds from your data?

Build a report