Esc

↑↓ move↵ openIndex · Pagefind

WIP shouldn't be a month-end project

The work-in-progress schedule is the most important report a contractor produces, and most build it from four sources a week after the month closes. Here's the math, what over and under billing really tell you, and why WIP should be live.

os.construction team5 min readAccountingWIP
On this page
  1. What WIP answers
  2. A worked example
  3. Over and under billing, in plain English
  4. Why an optimistic estimate looks like earned revenue
  5. Why it takes a week
  6. What live WIP needs

At most contractors, the work-in-progress schedule happens to people. Around the 25th, PMs get a spreadsheet asking for cost to complete on every job. Accounting pulls cost to date and billed to date. Someone stitches it together, chases the PMs who didn’t reply, and hands the CFO a draft. By the time it’s reviewed and sent to the bank or the surety, the numbers describe a month that ended two weeks ago.

That’s backwards. WIP is the report that tells you whether you’re making money. It shouldn’t be a project. It should be a view.

What WIP answers

For every open job, a WIP schedule answers four questions:

  1. How much revenue have we earned so far?
  2. How much have we billed?
  3. What will it cost to finish?
  4. Are we still making the margin we planned?

Most contractors recognize revenue on long-term contracts by percentage of completion, and the most common way to measure completion is cost-to-cost: costs incurred so far divided by total estimated costs. Here’s the core math.

Line Formula
Revised contract Original contract + approved change orders
Estimated total cost Cost to date + estimated cost to complete
Percent complete Cost to date ÷ estimated total cost
Earned revenue Percent complete × revised contract
Over / (under) billing Billed to date − earned revenue
Estimated gross profit Revised contract − estimated total cost

A worked example

Let’s run it on our sample job. Billed to date isn’t part of our usual sample set, so we’ve picked an illustrative figure.

Sample dataRiverside Medical Center, Job #24-118. Contract $48.2M plus $1.1M approved COs. Cost to date $31.7M. Projected margin 11.4%. Billed to date $34.9M (illustrative).
  • Revised contract: $48,200,000 + $1,100,000 = $49,300,000
  • Estimated gross profit at 11.4%: $5,620,200, so estimated total cost is $43,679,800
  • Percent complete: $31,700,000 ÷ $43,679,800 = 72.6%
  • Earned revenue: 72.6% × $49,300,000 = $35,778,781
  • Over / (under): $34,900,000 − $35,778,781 = ($878,781), underbilled
COST TO DATEEST. TOTAL COST% COMPLETE% COMPLETEREVISED CONTRACTEARNED REVENUEBILLED TO DATEEARNED REVENUEOVER / (UNDER)$31.70M$43.68M72.6%72.6%$49.30M$35.78M$34.90M$35.78M($0.88M)÷=×=−=
The whole WIP calculation for one job, in three lines. Illustrative numbers.

Over and under billing, in plain English

Overbilled (billings in excess of costs and estimated earnings) means you’ve billed more than you’ve earned. On the balance sheet it’s a liability: you owe the owner work. A modest overbilling is normal and healthy for cash. A large or growing one can mean front-loaded billing that will catch up with you, or cash that has already been spent on other jobs.

Underbilled (costs and estimated earnings in excess of billings) means you’ve earned more than you’ve billed. It’s an asset, but it’s an asset you’re financing. The usual causes:

  • Approved change orders not yet on the schedule of values. Work done, cost incurred, nothing billed. See the real cost of re-keying a change order.
  • Billing cutoffs. Costs through the 31st, billing through the 25th.
  • An optimistic estimate. This one is sneaky, and it’s why sureties and lenders look hard at underbillings.

Why an optimistic estimate looks like earned revenue

Say the PM on Riverside learns that the electrical sub is running about 4% over budget, and the honest cost to complete is $600,000 higher than what’s in the WIP. Run the math again:

Before After +$600K
Estimated total cost $43,679,800 $44,279,800
Percent complete 72.6% 71.6%
Earned revenue $35,778,781 $35,293,972
Underbilled ($878,781) ($393,972)
Estimated gross profit $5,620,200 $5,020,200
Margin 11.4% 10.2%

Two things happen. The margin fades by 1.2 points, $600,000 of profit. And the underbilling shrinks by almost half a million, because a higher cost estimate means the job is less complete than we thought, so we’ve earned less.

Flip that around: when cost to complete is understated, percent complete is overstated, earned revenue is overstated, and the job shows an underbilling that’s really unrecognized fade. That’s how a job looks fine on paper for months and then takes a big hit near the end. If a job’s estimated total cost ever exceeds the contract, accounting standards generally require recognizing the full expected loss as soon as it’s known, not spread over the remaining work.

Watch the gapOur sample job is 66% complete by the field’s estimate and 72.6% complete by cost-to-cost. A gap like that is a question worth asking. Maybe materials were bought early (many contractors exclude uninstalled materials from the cost-to-cost calculation for exactly this reason). Maybe the cost to complete is light.

Why it takes a week

None of this math is hard. WIP takes a week because the inputs live in different places:

  • Cost to date is in accounting, but only for invoices that have been entered and coded. Work done by subs who haven’t billed yet is invisible unless someone accrues it.
  • Approved change orders are in the PM platform, or an email, and not always in the contract value accounting uses.
  • Billed to date is in AR or the billing spreadsheet.
  • Cost to complete is in the PM’s head, or a spreadsheet only they understand.

The WIP schedule is really a monthly reconciliation of four systems. The calculation is the easy part. Getting four sources to agree on the same day is the project.

What live WIP needs

For WIP to be a view you can open any day, a few things have to be true:

  1. Costs are current. Invoices are coded to cost codes as they arrive, and committed costs for work in place can be accrued from commitments, not reconstructed at month end.
  2. Change orders flow. When a CO is approved it updates the contract value, the budget and the commitment at the same moment.
  3. Billing sits on the same record. The schedule of values, the G703 and the contract are one structure, so billed to date never has to be imported.
  4. Cost to complete is a living forecast. PMs update it by cost code when something changes, with a note, and the history is kept, so fade is visible as it happens rather than at the monthly review.
  5. Close is still a close. Live doesn’t mean loose. At period end you lock a snapshot, and that’s what the bank and the surety see. The difference is that the snapshot is a formality, not a fire drill.
Three questions for every WIP reviewWhich job has the biggest underbilling, and is it a billing problem or an estimate problem? Which jobs moved more than a point of margin since last month, and why? Where does field percent complete disagree with cost-to-cost?

That’s what we’re building WIP to be in os.construction: a live view on the same data the field and the office already work in, with fade and over/under billing visible the day they change. We’re pre-launch and building it with founding contractors. If your WIP still takes a week, get early access and show us how you build it today.

Share this article

Written by

os.construction team

We're building the operating system for construction: projects, accounting, analytics and AI agents on one data core. We write about how money and data actually move on a job, and we build in public with founding contractors.

Join the founding cohort →