← All posts
ConstructionSeptember 29, 2026

Why your job margin at close is rarely the margin that holds

The margin you report at substantial completion ignores punch list labor, callbacks, and warranty repairs. Here is how much those costs eat and how to track them.

Construction worker reviewing completion documents inside a nearly finished commercial building
JZ
Jessica Zhao
CEO, Clear Books Advisory

A general contractor we work with finished a commercial kitchen remodel and marked the job complete at 18 percent margin. The contract was $320,000. Direct costs through substantial completion ran $262,400. By every measure the project manager tracked, it was one of the better jobs that year.

Nine months later, when we ran the final job cost report, the margin was 12 percent. The $18,400 gap came from labor and materials posted after the job was marked complete: punch list work that stretched over two weeks, a refrigeration callback that required a licensed subcontractor, and tile repairs that took four additional days. None of it had been charged to the job number.

What punch list and warranty costs are

Punch list costs are the labor and materials needed to complete or correct deficiencies before the owner signs the final completion certificate. They come after substantial completion, which is the moment a project looks finished and the contractor invoices the final draw.

Warranty costs are the labor and materials required to fix failures during the warranty period, typically one year after final completion. Every project produces some warranty work. The question is not whether it will happen, but whether it gets charged to the job that generated it.

Most contractors absorb both categories into overhead. The job is marked complete. The crew moves to the next project. When a callback comes in three months later, the labor gets charged to whatever job the crew is currently working on, or to a general overhead account. The originating job never sees the cost.

What drives the gap between reported and actual margin

Punch list scope consistently exceeds the estimate. Owner walkthroughs find issues the superintendent did not anticipate. HVAC balancing fails the first inspection. Electrical trim work requires a return visit. Tile does not match the approved sample. Each item is small. Two weeks of crew time at four people is not.

Callbacks are not linked to the originating job. A plumbing failure six months after final completion brings a plumber and two hours of drywall patching. The plumber’s invoice goes to subcontractor expense. The drywall labor goes to general labor. Neither gets traced back to the job that caused the failure.

Invoices post after the job closes. Materials ordered during the final week of a project arrive two or three weeks later. If the cost tracking system treats the job as closed on the date of substantial completion, those late invoices post to overhead. They belong to the job.

Warranty parts run through a general materials account. A repair trip for $200 of tile or $80 of plumbing fittings gets expensed to a general materials account. The cost is real. It does not appear in job cost.

What the numbers looked like

Here is the kitchen job at substantial completion and after all post-completion costs were captured.

Line item At substantial completion After full close-out
Contract revenue $320,000 $320,000
Materials $98,000 $98,000
Labor and burden $88,400 $99,600
Subcontractors $76,000 $80,800
Job-specific overhead $0 $2,400
Total job cost $262,400 $280,800
Gross margin $57,600 (18%) $39,200 (12.3%)

The $18,400 gap consisted of $11,200 in punch list crew labor, $4,800 in warranty subcontractor work, and $2,400 in overhead that belonged to this job rather than the general pool.

Why the next bid is where this hurts

Close-date margins are what most contractors use to evaluate job performance and calibrate the next bid. If kitchen remodels are reported at 18 percent but the real margin after all costs is 12 percent, the bids for similar work are underfunded by 6 points.

At $320,000 per job, 6 points is about $19,200. Over a year with eight similar projects, that is $153,600 in margin the bid model assumed was there and was not. The practical result is that the contractor prices kitchen remodels at levels that do not recover the actual cost of doing them, and the P&L at year-end never explains why.

How to track post-completion costs accurately

For construction clients we work with, every job stays open in the cost tracking system for at least 90 days after final completion. Crew time and materials charged to punch list and warranty work during that period post to the original job number, not to overhead.

At the end of the warranty period, we run a final job cost report. That number is what goes into the bidding cost model. Not the close-date number.

Best practices for construction firms

  • Keep the job number active for at least 90 days after final completion. Punch list and warranty labor and materials post to the job, not to overhead.
  • Create a warranty callback log that records the date, job number, and brief description for every callback. Use it to run a year-end review of which project types generated the most post-completion work.
  • Track punch list hours as a separate labor category within each job. Knowing the average punch list hours for a given project type produces a more accurate labor estimate for the next bid.
  • Review close-date margin versus final margin once a year across completed projects. A consistent 4 to 6 point gap means the close-date margin is systematically overstated.
  • When a callback comes in, charge the crew time to the originating job first. If the job is closed in the system, open it for the posting, then re-close it.

Three questions worth asking

  1. What is the job number policy for crew members doing punch list and warranty work, and does the system enforce it or allow posting to unrelated active jobs?
  2. What is the average final margin on your most common project type, measured from full close-out rather than the date of substantial completion?
  3. How many labor hours were charged to warranty and callback accounts in the last 12 months, and how many originating jobs did those hours belong to?

If the last question is difficult to answer, the post-completion costs are running through overhead, and the bid model is using margins that are higher than the business actually earns.

Send us a job cost report for your three most recent completed projects of the same type. We will show you where the post-completion costs are going and what the real margin looks like.

AT JOB CLOSE
VS
FINAL BOOKS
WHY DID THE $320,000 KITCHEN JOB REPORT 18% AND END AT 12%?
Short answer, punch list labor and warranty callbacks were charged to overhead, not to the job.
WHAT CLOSED THE JOB
  • CONTRACT REVENUE
    $320,000 billed in full at substantial completion
  • DIRECT JOB COST
    $262,400 in materials, labor, and subcontractors
  • REPORTED MARGIN
    18 percent, or about $57,600
  • JOB CLOSED
    File marked complete, next project started
WHAT THE BOOKS MISSED
  • PUNCH LIST LABOR
    $11,200 of crew time completing deficiencies
  • WARRANTY CALLBACKS
    $4,800 in subcontractor callbacks over year one
  • OVERHEAD ABSORBED
    $2,400 of job-specific overhead misallocated
  • REAL MARGIN
    12 percent, or $39,200, not $57,600
“Actual margin on the kitchen job”
$39,200, NOT $57,600
FULL-CYCLE JOB COST = REAL MARGIN
CLOSE-DATE ONLY = WRONG NEXT BID

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