Construction job cost variance: finding which line item sent a job over budget
You know the build-out cost $22,600 more than the bid. Your books can't tell you which line item caused it. Here is how to find out.

A general contractor we work with completed a medical office build-out. The original bid was $152,000. The final invoice went out at $174,600. The contractor knew the job had run over. What he could not tell the client, or himself, was which line item caused it.
The books recorded one total. The estimate had twelve line items. The two were never matched.
What job cost variance actually is
Job cost variance is the difference between what you estimated a project would cost and what the books record when it finishes. Most contractors track the total at the end and compare it to the original bid. That single comparison confirms the problem. It does not identify the cause.
To find where an overage came from, every cost category in the estimate needs a matching account in the books, tracked from day one. When the estimate says “MEP rough-in: $38,000,” the books should have an account for MEP assigned to that job, accumulating actual invoices as they arrive. If the final tally is $41,800, the $3,800 variance is visible and explainable. Most books are not set up that way.
Why the books cannot answer the question
Estimates are organized by cost category; invoices are organized by vendor. When a framing crew invoices $31,400 across four progress billings, each payment gets coded to a general Labor account. The estimate line “rough framing labor: $28,000” has no direct match in the books. The $3,400 overage disappears into a combined labor total with no way to separate it out.
Materials from multiple vendors go into one account. Lumber, drywall, flooring, and hardware are purchased from different vendors. All of them hit the same Materials account. When finish materials run $4,200 over the estimated spec, the books show a materials overage but not which category within materials caused it.
Specialty work overruns are hidden inside general subcontractor charges. Fire-rating work is done by a specialty subcontractor. Their invoices are coded to Subcontractors alongside every other sub on the job. When the fire-rating scope expands from $12,000 to $17,600, that $5,600 increase is invisible unless the sub’s invoices have their own line in the job cost structure.
Equipment costs are expensed to overhead, not to the job. Rented equipment for a specific project often goes into a general equipment expense account. When that job runs over on equipment, the variance is assigned to overhead rather than to the project it belongs to.
What the build-out looked like line by line
When we reconstructed the cost coding for the medical office job, the breakdown was:
| Cost category | Budget | Actual | Variance |
|---|---|---|---|
| Rough framing labor | $28,000 | $31,400 | +$3,400 |
| MEP rough-in | $38,000 | $41,800 | +$3,800 |
| Fire-rating and compliance | $12,000 | $17,600 | +$5,600 |
| Finish materials | $22,000 | $26,200 | +$4,200 |
| Equipment rental | $8,000 | $10,200 | +$2,200 |
| Project management | $7,000 | $7,400 | +$400 |
| Overhead allocation | $12,000 | $12,000 | $0 |
| Contingency | $25,000 | $28,000 | +$3,000 |
| Total | $152,000 | $174,600 | +$22,600 |
The largest single variance was $5,600 on fire-rating work. The fire-rating scope had been underspecified at bid time. That one finding changed how the contractor priced fire-rating requirements on the next two medical builds.
Why this matters at the next bid
When a job closes over budget with no line-item breakdown, the contractor carries the wrong lesson forward. The total overage says “we lost $22,600 on this job.” Without the breakdown, the correction is to add a larger contingency to the next bid.
With the breakdown, the correction is specific: fire-rating labor is historically underestimated on medical office projects. The framing crew ran over on blocked partition walls. Finish materials need a tighter spec sheet before the bid goes out.
A contractor who knows which line items generate overages can correct the estimate in the right place. A contractor who only sees the total can only guess.
What proper job cost tracking looks like
For construction clients, we set up each project as a separate class or job in QuickBooks before the first invoice arrives. Every estimate category becomes a corresponding cost account within that job. As vendor invoices come in, they are coded to both the job and the specific cost category.
At any point during the project, the client can run a job profitability report showing actual costs against the budget line by line. At the 50% completion milestone, categories running over their budget receive a review. By close-out, the variance report is available the same day the final invoice goes out.
Best practices for construction operators
- Set up the job code and budget structure in QuickBooks before the first invoice arrives. Retroactive cost coding after close-out is incomplete and unreliable.
- Code invoices to cost categories within the job, not just to vendors. A payment to an electrical subcontractor should go to MEP or Electrical within the specific job, not to a general Subcontractors account.
- Match the estimate categories to the book account categories exactly. If the estimate has fifteen line items, the job should have fifteen matching accounts in the books.
- Run a budget-to-actual report at the 50% project completion mark. A variance found at the midpoint can still be addressed. One found at close-out can only be explained.
- After close-out, carry variance findings into the estimating template. A recurring overage on the same category is an estimating problem, not a project management problem.
Three questions worth asking
- Does your bookkeeping system have a budget entered for each active job, and can you run a budget-vs-actual report for any project at any time?
- Are vendor invoices coded to cost categories within the job, or to general accounts that are not tied to individual projects?
- After a job closes over budget, can you identify within one business day which category caused the overrun and by how much?
If those answers are uncertain, the job cost structure in the books does not match the estimate structure. The correction is a setup change, not a new software package. It takes one job to build the template and every subsequent job to run on it.
Send us the final invoice and original estimate for a recent project that ran over budget. We will show you which line items drove the variance and what the tracking setup needs to look like going forward.
- ROUGH FRAMING LABOR$28,000 for structure, walls, and blocking
- MEP ROUGH-IN$38,000 for mechanical, electrical, and plumbing
- SPECIALTY WORK$12,000 for fire-rating and code compliance
- FINISH MATERIALS$22,000 in drywall, flooring, and trim
- FRAMING LABOR$31,400 actual, $3,400 over the budget line
- MEP WORK$41,800 actual, $3,800 over from scope additions
- FIRE-RATING WORK$17,600 actual, $5,600 over from underspecified scope
- FINISH MATERIALS$26,200 actual, $4,200 over from owner spec changes
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.
This is the work we do every day. See bookkeeping for construction.
Book a call