A WIP (work-in-progress) schedule is a report that lists every active job with its contract value, costs to date, estimated cost to finish, percent complete, revenue earned, and amount billed — so you can see, job by job, whether you're ahead, behind, overbilled, or underbilled. It's the single most important report in construction accounting.
By Brian Harmon, Founder of Builder Ledger · Construction controller for 10+ years
Here's the problem with a regular profit-and-loss statement in construction: it only knows what you've billed and what you've spent. Bill a job early and the month looks great — even if the job is bleeding. Spend heavy before your first draw and the month looks terrible — even if the job is perfectly on track. The P&L moves with your billing timing. The WIP moves with reality.
A WIP schedule fixes that by measuring every job against its own budget using percentage-of-completion: how much of the work is actually done, how much revenue that work has truly earned, and how that compares to what you've billed. It's how your bank decides how much credit you deserve, how your surety decides how much work you can bond, and how smart owners decide which jobs deserve their attention this month.
The current contract amount — original contract plus approved change orders. Unapproved change orders don't belong here until they're signed; counting them early is how margins get overstated.
Every dollar of job cost incurred so far — labor, materials, subs, equipment. This only works if costs are coded to the job when they happen, not swept up at month-end.
What it will take to finish the job from today. This is the most honest number on the schedule — and the one that gets "managed" when someone doesn't want to report bad news.
Costs to date ÷ total estimated cost (costs to date + cost to complete). Spend $270K of a $450K total budget and you're 60% complete — regardless of what the billing says.
Percent complete × contract value. This is the revenue the job has actually earned, and it's what belongs on an honest P&L — not the billing total.
Billed to date minus earned revenue. Positive means you've billed ahead of the work (overbilled). Negative means you've done work you haven't billed for (underbilled) — and financed it yourself.
Say you have a $500,000 contract. So far you've spent $270,000, and your best estimate says it will take another $180,000 to finish. Here's the WIP math:
| Line | Amount | How you get it |
|---|---|---|
| Contract value | $500,000 | Contract + approved change orders |
| Costs to date | $270,000 | Job cost ledger |
| Cost to complete | $180,000 | PM/controller estimate to finish |
| Total estimated cost | $450,000 | $270,000 + $180,000 |
| Percent complete | 60% | $270,000 ÷ $450,000 |
| Earned revenue | $300,000 | 60% × $500,000 |
| Billed to date | $330,000 | Progress billings sent |
| Overbilled | $30,000 | $330,000 billed − $300,000 earned |
Read it like an owner: the job is 60% done, on budget ($450K total cost against a $500K contract = a planned 10% margin), and $30,000 overbilled — you've collected ahead of the work, which is good for cash but means $30,000 of future work is already spoken for. If that "cost to complete" quietly should be $230,000 instead of $180,000, the job is actually heading for a loss — and the WIP is the only place that shows up before the job ends.
The PM doesn't want to report a problem, so the estimate to finish stays rosy until it can't. Margin fade hides here. Fix: review the estimate against actual production every month, with someone who isn't the PM.
Counting unsigned change orders inflates earned revenue and makes a losing job look fine. Fix: contract value changes only when the change order is approved. Track pending COs separately.
If job costs land weeks late — or on the wrong job — percent complete is fiction. Fix: weekly cost coding discipline, and a month-end cutoff that's actually enforced.
Underbilled jobs mean you're financing your customer's project. A little is normal; a pattern is a cash leak. Fix: flag any job underbilled two months running and find out why.
An annual WIP — built for the CPA or the bonding renewal — is archaeology. By the time you see the problem, the job is over. Fix: monthly. No exceptions. It's a management tool first, a reporting tool second.
The WIP should tie to the general ledger: earned revenue, billings, and job costs all reconciled. If it floats free of the books, your bank will notice before you do.
Your surety uses it to size your bonding capacity — sloppy or stale WIP schedules are a classic reason bonding gets capped. Your bank uses it to judge your line of credit and whether your reported income is real. You should be using it first: it's the earliest-warning system you have for margin fade, billing gaps, and cash trouble. If the only time your WIP gets built is when someone else asks, you're reading your own business last.
Download the free Builder Ledger WIP checklist and audit your current schedule line by line. Or skip the homework: Builder Ledger prepares and reconciles a bank and surety-ready WIP for contractors every month, as part of a flat-rate controller engagement starting at $2,000/mo.
Month-to-month · No long-term contract · Contractors doing $1M–$20M