HomeGuidesHow to build a WIP schedule
Guide

How to build a WIP schedule

A plain-English walkthrough of the construction work-in-progress schedule: the cost-to-cost method, over and under billing, the columns it contains, and a full worked example you can follow line by line.

Quick answer: a WIP schedule lists every open job with its percent complete, earned revenue, and over/under billing. Percent complete = cost to date ÷ estimated total cost; earned revenue = percent complete × contract value; over/under billing = billed to date − earned revenue. Build it monthly — your surety, bank, and CPA all read it, and it is your earliest warning that a job is drifting.

What a WIP schedule is, and why it matters

A work-in-progress (WIP) schedule is a report that shows, for every open job, how far along the work is, how much revenue you have actually earned, and how that earned revenue compares to what you have billed. On long-duration construction contracts, revenue is recognized as you perform the work, not when you send an invoice. The WIP schedule is the tool that translates "we're about halfway done" into a dollar figure your financial statements can stand on.

It matters because almost everyone who evaluates a contractor reads it. Your bonding company and surety use the WIP to judge how well you estimate and control jobs before they extend a bond line. Your bank leans on it to understand the real earnings behind your balance sheet. Your CPA needs it to book percentage-of-completion revenue correctly at year end. And internally, it is the earliest warning system you have: a WIP schedule updated every month catches a job that is bleeding cost (or one you have overbilled and are quietly borrowing against) while there is still time to react.

Skip it, or build it once a year in a hurry, and you are flying blind on the two questions that sink contractors: are my jobs actually making the margin I bid, and am I billing ahead of the work I've done?

The cost-to-cost percentage-of-completion method

Almost every construction WIP schedule is built on one simple idea: you are as far along as the share of your costs you have already spent.

The cost-to-cost method measures percent complete by comparing costs incurred to date against the total costs you expect the job to require:

That last line is the one everyone cares about. When you have billed more than you have earned, the difference is called billings in excess of costs and estimated earnings. It is a liability on your balance sheet, because it represents work you have collected for but not yet performed. When you have billed less than you have earned, the difference is costs and estimated earnings in excess of billings, an asset, because you have done work you have not yet invoiced.

A healthy contractor tends to bill slightly ahead of cost to stay cash-positive, but large or growing overbillings are a red flag: they can mask a job that is losing money, and they represent cash you may have to give back in production later. Underbillings are money left on the table and a sign your billing is lagging your field.

A worked example

Numbers make this concrete. Follow one $500,000 roofing contract through the math.

Say you hold a commercial re-roof contract worth $500,000. Your estimate says the job will cost $350,000 in labor, material, equipment, and subcontract to complete. As of month-end, your job-cost report shows you have spent $175,000 so far.

Now bring in billings. Suppose your pay applications to date total $300,000. Compare that to the $250,000 you have earned:

You are carrying a $50,000 billing in excess, a liability. That is not automatically bad; you are ahead on cash. But it means the next $50,000 of work is, in a sense, already spoken for, and if your cost estimate is too optimistic, that cushion can evaporate. Flip the billings to $220,000 instead and the sign reverses: $220,000 − $250,000 = −$30,000 underbilled, an asset. You have performed $30,000 of work you have not yet invoiced, and you should get a pay application out.

With stored materials. Same job, but $40,000 of membrane was delivered and billed as stored materials and is still on pallets. Cost to date and estimated total cost both drop by $40,000 before the division, so percent complete is computed on installed work only. Earned revenue then adds the $40,000 back at cost. The margin on that membrane is recognized when it goes on the roof, not when it comes off the truck.

The columns a WIP schedule contains

A standard WIP schedule is one row per open job and a set of columns that walk left to right from contract value to over/under billing. The typical layout:

Controllers frequently add a few more: costs remaining (estimated total cost − cost to date), gross profit earned to date, and a comparison of this month's estimated margin to last month's, which surfaces jobs whose margin is quietly slipping.

How to build one, step by step

The mechanics, in the order you actually do them each month.

1. Gather contract values, including change orders

Start with each open job's original contract. Add every approved change order to get the revised contract value. Only signed, approved changes belong here. Pending or verbal changes are not contract yet, and including them overstates both revenue and margin.

2. Update your total estimated cost

For each job, refresh the forecast of what it will cost to finish. This is your best estimate today, not the original bid frozen in time, reflecting cost overruns, buyout savings, and any change-order scope. A stale estimate is the single biggest source of a wrong WIP.

3. Pull actual cost to date

From job costing, total the labor, material, equipment, and subcontract cost booked to each job through the cut-off date. Accrued costs matter here: material you have received but not yet been billed for, or a sub's completed work not yet invoiced, is cost incurred and belongs in the numerator. Leave it out and percent complete comes in low. Do not add open POs or unperformed subcontract scope: those are commitments, not incurred cost, and they overstate percent complete.

4. Compute percent complete

Divide cost to date by total estimated cost for each job. This is the engine of the whole schedule: every revenue and billing comparison flows from it.

5. Carve out stored materials first

Material delivered to the job and billed on a pay app as stored materials, but not yet installed, is not progress. Before computing percent complete, pull its cost out of both cost to date and estimated total cost, compute percent complete on what remains, then add that material back to earned revenue at cost, zero margin. It earns its margin when crews install it. Skip this and a big delivery makes the job look further along than it is.

6. Compute earned revenue

Multiply each job's percent complete by its revised contract value. That is the revenue you have earned to date under percentage-of-completion, regardless of what you have billed.

7. Compare to billings and read the result

Pull billed-to-date from your pay applications and subtract earned revenue. Positive is overbilled (a liability); negative is underbilled (an asset). Scan the column: large or growing overbillings and any underbilling that should have been invoiced are your action items for the month.

Common mistakes that break a WIP

Most bad WIP schedules fail for the same handful of reasons.

🧊

Stale cost estimates

Running percent complete against last quarter's cost estimate makes a job that is over budget look on track. Re-forecast estimated total cost every period, not just when it hurts.

📦

Missing accrued costs

Material received but not yet vouchered, or a sub's completed work not yet billed, is real cost incurred. Leave it out and your percent complete (and earned revenue) come in low.

🧱

Counting stored materials as progress

A delivery billed as stored materials inflates cost to date without any work in place. Carve it out of the percent-complete math and recognize it at zero margin until installed, per ASC 606-10-55-189 through 55-191. Auditors look for this by name.

📝

Ignoring change orders

Approved change orders belong in the revised contract and, if they add cost, in the estimate. Tracking billings against the original contract while the scope has grown corrupts every downstream number.

🔀

Mixing estimates into actuals

Cost to date must be actual, source-document cost, never a prorated or estimated figure. Blending the two is how a WIP quietly stops tying to the general ledger.

📆

Only doing it quarterly

A WIP built four times a year catches problems a quarter late. Monthly is the standard; the whole value is early warning, and early means monthly.

Percent complete over 100%

If cost to date exceeds your estimate, percent complete tops 100%: a sign the estimate is wrong, not that the job is 110% done. Cap it, and treat it as a signal to re-forecast the cost immediately.

Doing it without the spreadsheet pain

Every step above is arithmetic, and every step is also a place a manual spreadsheet drifts. A pasted cost number that never got refreshed, a change order that made it into the contract column but not the estimate, a billed-to-date figure keyed by hand from a stack of pay apps. Any one of them quietly throws the whole schedule off, and you usually find out when the surety asks.

The fix is to build the WIP from the same data that runs the job. When your job costing is source-document accurate and your billings live in the same system, the WIP schedule computes itself: revised contract from approved change orders, cost to date from the ledger, billed to date from your pay applications, over/under billing falling out automatically, and a month-end snapshot you can hand to the bank. That is exactly what WIP schedule software is for.

Not accounting advice. This describes common practice. How these rules apply to your contracts, your revenue recognition policy, and your financial statements is a determination for your CPA.

Frequently asked questions

What is the difference between overbilling and underbilling?
Both compare what you have billed to what you have earned. Overbilling (billings in excess of costs and estimated earnings) means you have billed more than the work performed, a liability, because you owe that production. Underbilling (costs and estimated earnings in excess of billings) means you have performed work you have not yet invoiced, an asset. A little overbilling keeps you cash-positive; large or growing overbillings can hide a losing job.
How often should I update my WIP schedule?
Monthly is the standard for most contractors, tied to your month-end close. The entire value of a WIP is early warning, and quarterly is usually too slow to react to a job that is drifting. Some contractors on large or fast-moving work run it more frequently.
Who actually reads the WIP schedule?
Your bonding company and surety use it to judge how well you estimate and control jobs before extending bond capacity. Your bank uses it to understand the earnings behind your balance sheet. Your CPA uses it to recognize percentage-of-completion revenue at year end. And your own leadership uses it to catch margin fade and billing problems early.
What is the cost-to-cost method, and are there alternatives?
Cost-to-cost measures percent complete as costs incurred to date divided by total estimated costs, the most common approach in construction. Some contractors instead measure completion by units installed, labor hours, or a physical milestone (an "effort-expended" or output method). Cost-to-cost is popular because it ties directly to job costing and is easy to audit.
Why does my percent complete sometimes exceed 100%?
That happens when cost to date exceeds your estimated total cost, which means the estimate is too low, not that the job is more than finished. Treat it as a prompt to re-forecast the cost immediately, and cap the reported percent complete at 100% so earned revenue never exceeds the contract.

Keep exploring

Stop rebuilding your WIP in a spreadsheet

See how SitewideOps computes over/under billing straight from your job costs and pay applications, with a month-end snapshot your surety can read.

Get your free 21-day demo Explore the platform

Anyone interested gets a free 21-day demo account: the full product, every feature, no credit card.