Cost to Complete: How to Get a Number Your WIP Report Can Stand On
Costs to date are history. Cost to complete is the one input in a WIP schedule that is a forecast, and it carries the entire report. How to build a number that holds, and why asking a project manager for percent complete gets you the wrong answer.
Month-end lands on a Wednesday. The controller emails the project managers a spreadsheet with one yellow column, cost to complete, and asks for it back by Friday. The PMs are on site all week. The file gets opened at 4:40 on Friday, and the PM looks at the budget, looks at what has been spent, and types a number that keeps the job at roughly the margin it was bid at. The WIP report goes out. The accountant uses it, the bank sees it, the surety files it.
Nobody lied. The number is still wrong, and it stays wrong until about month nine, when the remaining work runs out of room to hide anything and the margin drops four points in one period. The uncomfortable part is that the WIP report was fine. The arithmetic worked. The problem is upstream, in how one input gets produced.
Only one number in the schedule is a forecast
A work in progress schedule is mostly history. Contract value is a fact. Approved change orders are facts. Costs to date come out of the ledger, billings to date off the invoices. All of it is verifiable, and none of it is where the risk sits.
Cost to complete is the exception. It is a judgment about work that has not happened yet, made by someone who is busy, and every other output depends on it. Percent complete, earned revenue, over and under billings, forecast margin, all of it moves when that one cell moves. Under ASPE Section 3400, the percentage of completion method needs a defensible measure of the degree of completion, and the notes disclose the method used along with the uncertainties affecting it. Amendments to Section 3400 apply for fiscal years beginning on or after January 1, 2025, and they expanded what contractors disclose about contracts in progress. Reason enough to look at how the number gets built rather than how it gets presented.
Percent complete is an output, not a question to ask
The most common process failure we see is asking a PM for percent complete. It sounds simple and it has three different answers depending on who hears it. There is schedule percent, time elapsed against the baseline. There is physical percent, quantity installed against quantity planned. And there is cost percent, cost incurred against total forecast cost, which is the cost-to-cost measure the accounting is usually built on. A PM under time pressure answers with whichever is easiest to defend, so a job that is 70 percent through its schedule and 45 percent through its quantities gets reported at 70 if nobody specifies.
Ask for cost to complete instead. Percent complete then falls out of the arithmetic rather than being asserted, and the question changes from "how far along are you" to "what is left and what will it cost." That second one a project manager can actually answer with evidence.
Build the forecast from quantities and productivity
On heavy civil and marine work the honest version looks like this. Take the direct work by cost code. For each one you know the quantity installed to date and the hours and equipment time it took, which gives you a real unit rate, not the bid rate. Multiply the remaining quantity by the rate you are actually achieving. Add crew and equipment time for work with no unit basis, like access, dewatering, or standby. Add subcontract and material commitments at their committed values, not their budget values.
That is longer than typing a number, but once the cost codes support it a competent PM needs about an hour a month per job, and it produces something you can argue with. When the forecast moves you can point at which code moved and why. When the bank asks about the margin, the answer is a productivity rate on a named activity rather than a shrug.
The usual blocker is coding. If everything lands in "labour" and "equipment" with no quantity tracking behind it, the PM has nothing to forecast from and is genuinely guessing. Fixing that structure is unglamorous work that pays for itself the first time it catches a fade early.
Four leaks that show up later as margin fade
Committed but uninvoiced costs. The PO is issued, the subcontract is signed, the material is on the water, and none of it has hit the ledger. If cost to date only counts invoices, the job looks cheaper than it is every month and the correction arrives all at once.
Unapproved change orders carried at full value. Work the crew performed, priced, and submitted, with no approval yet. The cost is real and in the ledger. The revenue is a negotiation. Carrying it at the submitted amount is optimism and carrying it at zero can be pessimism. Carry it at what you would settle for, and say so in the notes.
Remaining-risk work. Winter earthworks, in-water work inside a fisheries window, a tie-in that depends on an owner outage. If the risky portion sits at the back of the job, the unit rate you have achieved so far is flattering you.
The closeout tail. Demobilization, site restoration, deficiency work, as-builts, warranty callbacks. It rarely appears in a forecast until it is being spent, and on a thin job it is the difference between a small gain and a small loss.
Make it a thirty minute conversation, not a spreadsheet reply
The change that moves the number most has nothing to do with software. Put the PM, someone from operations, and someone from finance in a room once a month per active job, half an hour, forecast prepared beforehand.
Three questions carry it. What changed since last month, and why. What is the achieved unit rate on the two or three cost codes carrying the most remaining cost. What could still go wrong, and what does it cost if it does.
The point is not to catch anyone out. A forecast prepared for a conversation gets prepared differently than one emailed into a spreadsheet, and a PM who knows they will be asked to explain a movement starts noticing movements earlier. That is the whole mechanism, and it costs a few hours a month across the company.
The BC layer: holdback, cash, and who reads the report
Two things make this sharper for contractors here.
The first is holdback. The builders lien holdback means a meaningful slice of what you have earned is not cash and will not be for a while, and the accounting and tax timing can differ, which is a conversation for your accountant rather than a blog post. Operationally, a job can look healthy on earned revenue while draining working capital, and only the billing position shows it.
The second is that billing position. Chronic underbilling means you are funding the owner's project out of your own working capital, which sits on the balance sheet as a current asset and reads badly to a surety underwriter setting your bonding capacity. Chronic overbilling on a job with an inaccurate forecast means you have already spent revenue you have not earned, and the correction lands at closeout. Neither is visible without a cost to complete you believe. BC's prompt payment legislation will tighten the clocks around invoicing once the regulations are in force, which raises the cost of a billing process running on whatever gets reported at month-end.
What software does and does not fix
A construction ERP or job costing system will compute cost-to-cost percentages, roll up commitments, and produce the schedule far faster than a spreadsheet. If you are still assembling WIP by hand across several files, that is worth doing. It will not produce the forecast. No system knows your achieved production rate on an activity better than the person watching the crew, and no AI tool on the market today will invent a defensible cost to complete out of a coding structure that does not track quantities. Tooling makes a good process faster, and a bad process faster to be wrong with.
What it looks like after a few months
The revisions to cost to complete get smaller month over month. Fade appears in month three instead of month nine, while there is still time to change how the work is run. The conversation with the bank or the surety shifts from explaining a surprise to describing something you had already flagged.
If your WIP report is technically correct and still not trusted, the fix is usually in the process feeding it rather than the report itself. That is worth half an hour on a call. We offer a free thirty minute discovery call with no pitch attached, and if the answer is that your cost codes need work before anything else changes, we will say that.
Dealing with something like this?
Book a free 30-minute discovery call. No pitch, practical next steps either way.
Book a call