How to calculate percent complete on a construction job
6 min read
Percent complete is the number everything else hangs off. Your revenue for the month, your WIP schedule, the profit you report to your bank and your bonding company — all of it is that one percentage, multiplied by a contract value.
Which means if the percentage is wrong, every number downstream is wrong in the same direction, and you will not find out until the job closes. It is also the number that explains why a profitable contractor can still be short of cash.
Here is how to calculate it, where it goes wrong, and the one revision that makes it move backwards.
The formula
The standard method is cost-to-cost, and it is one line:
Percent complete equals cost to date divided by total estimated cost.
Not divided by the contract value. Not divided by the original bid. Divided by what you now expect the whole job to cost you.
Once you have the percentage, earned revenue is that percentage times the contract value, including approved change orders. Everything else follows from those two numbers.
Worked, on one job
- Contract value: $500,000
- Total estimated cost: $425,000
- Estimated gross profit: $75,000, or 15%
- Cost to date: $255,000
Percent complete: 255,000 divided by 425,000 is 60%.
Earned revenue: 60% of $500,000 is $300,000.
Gross profit earned so far: $300,000 earned minus $255,000 spent is $45,000 — which is exactly 60% of the $75,000 you expected to make. That check is worth doing. If earned profit is not tracking your margin, one of the inputs is wrong.
The mistake almost everyone makes
The denominator is your current estimate. Not the bid you won the job with.
The bid is a number you wrote before you knew anything. The estimate is what you know now, and it should change as the job teaches you things.
Say two months in you find out the electrical is going to run $40,000 over. Your revised total estimated cost is $465,000, not $425,000. Cost to date is unchanged at $255,000.
Percent complete: 255,000 divided by 465,000 is 54.8%.
Earned revenue: 54.8% of $500,000 is $274,200.
You had booked $300,000. You now have $274,200. Being honest about the estimate just took $25,800 of revenue back off your books, in a month where nothing went wrong on site.
That reversal is the single most useful thing a WIP schedule does. It is also why contractors quietly avoid updating estimates — the update makes this month look worse. It does not make the job worse. The job was already going to cost $465,000; the only question was whether you found out in month two or month eleven.
And the real message is in the margin. At $465,000 of cost, this job now makes $35,000 on $500,000 — 7%, not 15%. Less than half the profit you priced. That is worth knowing while there is still 45% of the work left to influence.
Stored materials will lie to you
You take delivery of $60,000 of windows in month three. They are sitting in the yard, wrapped. Nothing is installed.
Cost to date jumps to $255,000, so cost-to-cost says you are 60% complete and have earned $300,000.
Strip the uninstalled material out of both sides — 195,000 divided by 365,000 — and you are 53.4% complete, with $267,100 earned.
The windows just created $32,900 of revenue and a chunk of profit out of a delivery truck.
The fix is to exclude stored materials from cost to date and from the estimate until they are installed, then put them back on both sides at once. Same treatment for anything else you pay for long before it becomes progress: bonds, insurance, permits, mobilization. A job that has spent $35,000 on bonding and mobilization on day one is not 8% built.
Cap it at 100
If cost to date is $440,000 against a $425,000 estimate, you are not 103.5% complete. Nothing is more than finished.
Cap the percentage at 100 and read the overage as what it is — a signal, and one of two situations:
- The job is essentially done and it lost money. Recognize the loss now, in full. Accounting rules and common sense agree on this one: a loss is taken as soon as you can see it, not spread over the remaining work.
- The job is not done, and your estimate is stale. Revise the total estimated cost up until it reflects reality, then recalculate.
Either way, a job showing over 100% is telling you the estimate has not been touched in a while.
When cost-to-cost is the wrong method
Cost-to-cost assumes cost accumulates roughly in step with progress. On most jobs it does. On some it plainly does not, and there are two alternatives worth knowing.
Units complete works where the job is one repetitive thing you can count. Paving 12,000 square yards of a 40,000 square yard lot is 30% complete, and no argument about cost allocation will produce a better number than that.
Labor hours work where labor is most of your cost and material is lumpy or owner-supplied. 3,400 hours burned against 9,000 estimated is 37.8%, and it will not be thrown off by a single large delivery.
Pick one method per job, write down which one, and do not switch mid-job to get a nicer number. Switching methods to improve a percentage is the thing an auditor and a bonding agent are both specifically looking for.
Run it monthly, and write down why it moved
Percent complete should only ever go up. When it goes down, exactly three things can have caused it, and all three are worth five minutes:
- You revised the total estimated cost up. Good. That is the system working.
- You pulled stored materials out of cost to date. Fine, and expected.
- Costs got coded to the wrong job. Not fine, and it means another job on your schedule is overstated by the same amount.
Note the reason next to the number each month. Six months later, a WIP schedule with a one-line explanation next to every movement is the difference between a bonding conversation that takes twenty minutes and one that takes a week.
When you do not need any of this
If your jobs run two or three weeks and you bill them when they are finished, percent complete is not a useful concept for you. The job is either open or done, and a list of open jobs on a whiteboard tells you everything this calculation would.
It starts to matter when jobs run longer than a billing cycle — when at any given month end you have real work built that you have not invoiced. That is the point where you need to know how much, and this is how you work it out.
The other half of the same problem is the money you have invoiced and still cannot spend, which is what retainage does to your cash.
PhurFriend does this part for you
Connect your bank and every cost lands on the right job automatically — budget against actual while the job is still running, not months after it closed.
See how it works