How over- and under-billings distort your construction P&L
When you bill by milestone and jobs run for months, the P&L can show strong profit while the bank runs thin. A WIP schedule explains the difference.
A commercial roofing contractor we work with closed Q1 with a Profit and Loss report (P&L) that looked strong: $340,000 in revenue and $62,000 in reported profit. The operating account had enough for one payroll cycle. A subcontractor invoice was due in four days.
The books were not wrong. Three active jobs had been invoiced at milestone percentages that ran ahead of the actual work completed. The contractor had collected money for work that still needed to be done. That is what an overbilling is, and it shows up on any job that bills by milestone without a matching check on completion.
The gap between billed and earned
On a job that runs for weeks or months, the amount invoiced and the amount actually earned are rarely the same figure at any given point in time. Billing follows the contract schedule. Earned revenue follows physical completion.
A work in progress (WIP) schedule is the accounting tool that tracks the difference between the two on every active job. The calculation compares costs incurred to date against the total estimated cost to determine how far along the job really is. That percentage, applied to the contract value, produces earned revenue.
When billed exceeds earned, the contractor has an overbilling: a liability, because work is still owed. When earned exceeds billed, the contractor has an underbilling: an asset, because completed work has not yet been invoiced. Neither situation is unusual on long-term contracts. The problem is not knowing which one you have and by how much.
What produces overbillings and underbillings
Milestone billing that does not match actual completion. Many contracts bill in stages: 30 percent at material delivery, 30 percent at rough-in, 40 percent at final. If the rough-in invoice goes out but 40 percent of that work remains, the invoice is ahead of the job. On a $500,000 contract, that gap can be $50,000 or more at any given month-end.
Estimated total costs that are not updated. Percent complete is calculated as costs incurred divided by total estimated cost. If the original bid estimate is never revised as the job progresses, the percentage is wrong. A job that ran into unforeseen conditions may be 60 percent done in hours but only 48 percent done in projected total spend. The estimate needs to track the job, not sit frozen at the bid figure.
Change orders not added to the contract total. An approved change order increases the contract value. If it is not recorded before the WIP schedule runs, both the earned-revenue figure and the overbilling balance will be off. A $40,000 change order on a $460,000 job shifts the contract to $500,000. Every calculation downstream changes.
Jobs that stay “almost done” for extended periods. When a job has been at 85 percent complete for six weeks, actual costs are typically at 90 percent or higher. If the estimate-to-complete is not updated, those jobs report a margin on paper until the final work surfaces the overrun. The WIP schedule is often where that problem becomes visible before it becomes a loss.
What one job looks like on a WIP schedule
Here is a single active job at month-end.
| Item | Amount |
|---|---|
| Total contract value | $500,000 |
| Costs incurred to date | $120,000 |
| Total estimated cost at completion | $300,000 |
| Percent complete (costs incurred / estimated total) | 40% |
| Earned revenue (40% of $500,000) | $200,000 |
| Billed to date | $250,000 |
| Overbilling (billed minus earned) | $50,000 |
The $50,000 overbilling is not profit. It is a liability. The cash has been collected, but the work behind it has not been done. Labor and materials to complete that work will still have to be paid.
Why this matters when cash runs short
Three problems follow when a contractor does not maintain a WIP schedule.
The P&L overstates profit mid-job. Revenue is posted when the invoice is sent, not when the work is completed. A contractor with $50,000 in overbillings across several jobs is reporting $50,000 more in profit than has been earned. Owner draws, equipment purchases, and bonus decisions made against that figure rest on a number that will correct itself by year-end, often at the worst possible time.
Cash runs short before jobs close. Overbillings mean the remaining work is still ahead of you. The invoice was already collected. The cost to finish is still coming. This is the most direct explanation for why a construction company reports healthy margins and still struggles to cover payroll at the end of a strong quarter.
Bid margins repeat the same errors. Historical job profitability built on billed revenue rather than earned revenue is not reliable. If past WIP schedules were never prepared, the margin data used to price the next job is built on the wrong numbers.
What proper WIP accounting looks like
For construction clients, we prepare a WIP schedule every month before the P&L is finalized. Every active job gets a row: contract value, approved change orders, costs to date, estimate to complete, percent complete, earned revenue, billed to date, and the resulting overbilling or underbilling balance.
Revenue on the P&L is adjusted to match earned rather than billed. Overbillings appear as a liability on the balance sheet. Underbillings appear as an asset. The P&L reflects what the company actually earned during the month, not what it invoiced.
The estimate-to-complete column is the one that changes the entire picture. It requires a number from the project manager each month. When that figure is current, the WIP schedule tells the contractor which jobs are tracking to margin and which are heading for a shortfall before the final invoice goes out.
Best practices for construction operators
- Prepare the WIP schedule before month-end, not after the P&L is run. Revenue adjustments have to happen in sequence or the reports will disagree.
- Update the estimate-to-complete on every active job each month. Project managers should provide current cost-to-finish figures, not the number from the original bid.
- Add approved change orders to the contract total before running the schedule. An unentered change order produces a wrong earned-revenue figure for every month it sits unrecorded.
- Flag every job where the overbilling exceeds 15 percent of the contract value. That concentration means significant work is owed against cash already collected.
- Track underbillings alongside overbillings. Persistent underbillings often signal billing delays that tighten cash flow even when project margins are sound.
Three questions worth asking
- Do you have a WIP schedule for every active job, updated as of last month-end?
- What is your current total overbilling balance, and which jobs account for most of it?
- When was the estimate-to-complete last revised on your three largest open contracts?
If those answers are uncertain, the P&L is most likely reporting billed revenue rather than earned revenue. The fix is a monthly process, not a software change.
Send us a list of your current active jobs with contract value, costs to date, and billed to date. We will prepare a WIP schedule and show you where the overbillings and underbillings actually stand.
- MILESTONE INVOICE50 percent billed at rough-in, $250,000 sent
- BILLED TO DATE$250,000 recorded as revenue in the books
- P&L MARGINRevenue recognized before the work is complete
- CASH COLLECTEDInvoice paid, funds in the operating account
- COSTS TO DATE$120,000 in labor and materials spent
- PERCENT COMPLETE40 percent, based on cost progress to date
- EARNED REVENUE$200,000 at 40 percent of $500,000 contract
- OVERBILLING$50,000 billed but not yet earned, a liability
Want a second set of eyes on your books?
30 minutes on Zoom. We'll look at your books and tell you what's working and what isn't.
Book a call