Skip to main content
2,200+ service businesses benchmarked. Do you know your gross profit per labor hour? See where you stand →
Level
Job Costing

Your 45% Job Was Really a 24% Job. Here's Where the Margin Went.

Sam YangEx-CFO across trades, SaaS & services · $2.5B in service-business transactions · Stanford MBA
Published July 20, 2026·8 minute read
Share

From the founding team's contractor analysis

The margin on your bid sheet is not the margin you earn. The gap is labor burden you didn't fully load, callbacks nobody charged to the job, material that drifted after you quoted, and receivables you're financing for free.

Pattern across 2,200+ contractors, $13.25B in job revenue analyzed

8 minute readJob Costing

The short answer

A contractor service job quoted at a 45% gross margin usually earns closer to 24% once you load the real costs that never make it onto the job: fully burdened labor beyond the billed hour (payroll tax, workers comp, benefits, plus the ~39% of a tech's day that is non-billable drive and admin time), callback and warranty labor, material price drift between bid and buy, and the financing cost of a 35-to-55-day collection cycle. The 45-to-24 figure is a directional illustration of the mechanism, not a measured survey; the input costs below are anchored to named public sources. The fix is to re-cost a job with fully burdened labor and reconcile the costs that never land on it.

Key takeaways

  • Fully burdened labor knocks off the most: burden runs 35 to 60% on top of base wage, and only about 61% of a tech's paid day is billable (RunClockwork), so the true cost per billable hour is far above the wage.
  • Callbacks and warranty labor (8 to 14% of jobs, per field-service benchmarks) get booked as new dispatches, so the original job keeps its clean margin on paper.
  • Material drifts up between the fixed-price bid and the actual buy; construction input prices have moved several points in six months (BLS PPI).
  • The AR carry on a 35-to-55-day collection cycle is a financing cost (at a ~6.75% bank prime rate plus a small-business spread) that never lands on the job P&L.

Commercial and residential service jobs get bid on a margin that feels real. The estimate says 45% gross. You win the work, you do the work, and at year-end the company margin is nowhere near 45%. The money did not vanish. It leaked out through four costs that almost never get allocated back to the specific job that incurred them.

Here is the waterfall, and how to rebuild it from your own numbers.

The 45% that becomes 24%

Start with a job bid at a 45% gross margin. Watch what happens as the real costs land.

Leak 1: labor that was never fully burdened (about 9 to 11 points)

Most bids price the billable on-site hour at something close to the tech's wage plus a rough markup. Two things get missed. First, the burden: payroll taxes, workers comp, and benefits run 35 to 60% on top of base wage (SmartBarrel). Second, the non-billable day: only about 61% of a tech's paid day is actually billable, the rest is drive time, procurement, and admin (RunClockwork). When you divide the fully burdened daily cost across only the billable hours, the true cost per billable hour is well above the wage you bid against.

For reference, the BLS median wage is about $29 per hour for HVAC mechanics (SOC 49-9021), $31 for plumbers (47-2152), and $30 for electricians (47-2111) (BLS OEWS). Multiply by 1.35 to 1.60 for burden (payroll taxes, workers comp, and benefits), then load only the billable hours, and the real number climbs fast.

Leak 2: callbacks and warranty labor (about 4 to 6 points)

Return trips get booked as new dispatches or absorbed silently, so the original job keeps its clean margin on paper while a second crew visit eats the profit. Field-service benchmarks put the callback rate at 8 to 14% of jobs (Spaid). If you are not charging that return labor back to the original job, that job's real margin is lower than the report shows.

Leak 3: material price drift between bid and buy (about 2 to 3 points)

Fixed-price bids lock the sell price, but the material cost floats between the estimate and the purchase. Construction input prices have moved several points over six-month windows in recent years (BLS Producer Price Index, inputs to construction). On a job quoted weeks before the material is bought, that drift comes straight out of margin.

Leak 4: the financing cost of slow receivables (about 1 point)

A job you collect on in 35 to 55 days is a job you financed for the customer. At a bank prime rate around 6.75% (Federal Reserve H.15) plus a small-business spread, the carry on that receivable is a real cost that never shows up on the job P&L. It is small per job and large across a year of open receivables.

Add the four leaks and a 45% bid margin lands near 24% in the bank.

Free benchmark review

See how your margins benchmark.

We compare your jobs, crews, and service lines against real margin data, then show which gaps deserve the free audit.

How to rebuild your true margin from your own books

You do not need new software to check this. You need one job and four adjustments.

  1. Start from the quoted gross margin on a representative recent job (say 45%).
  2. Re-cost the labor. Take the field wage, multiply by 1.35 to 1.60 for burden (payroll taxes, workers comp, and benefits), then divide the day's cost across only the billable hours (roughly 61% of the paid day), not the clock hours. Recompute the job at that rate.
  3. Add back callbacks. Multiply your callback rate (8 to 14% is the benchmark, use your own if you track it) by the average return-trip labor cost, and spread it across your jobs.
  4. Subtract the AR carry. Take (average days to collect divided by 365) times your annual cost of capital (roughly 9 to 11% all-in) times the job's revenue.

The gap between the bid margin and the rebuilt margin is where the business quietly loses money on jobs that looked fine. This is the same phantom-margin problem that shows up when 91% of jobs have no cost data attached, and it traces back to the systems never reconciling, which is why your field platform and accounting never agree.

Why this is directional, and why that is fine

The 45-to-24 figure is an illustration of the mechanism, not a measured population statistic. The input costs (burden ranges, callback rates, wage anchors, prime rate) are sourced to named public data; the specific point-impact of each leak depends on your trade, mix, and discipline. The point is not the exact number. The point is that the gap is real, it is large, and it is invisible until you rebuild the job with fully loaded costs.

Related reading:

Share

Get the next one

Want next week's benchmark in your inbox?

One email a week. Real numbers from 2,200+ service businesses. No fluff. Unsubscribe anytime.

Sam Yang

About the author

Sam Yang

Founder & CEO

Founder of Level, the AI operating layer for contractors and skilled trades, and the other operating businesses where scarce labor is the constraint. Ex-CFO across trades, SaaS, and service businesses. 4 years as Director of Growth Product at BuildOps, building financial tooling used by 1,000+ commercial contractors. Four years in PE and investment banking rolling up and acquiring service businesses, $2.5B in total transactions including M&A and IPOs. Stanford MBA, Brown undergrad. The Level founding team's analysis of 2,200+ contractors ($13.25B in revenue) across operating, private-equity, and CFO roles anchors the Level Index benchmark research.

LinkedIn

See how your margins benchmark.

We compare your jobs, crews, and service lines against real margin data, then show which gaps deserve the free audit. Free audit included.

2,200+ service businesses benchmarked$13.25B in revenue analyzedWeekly action cadence

No credit card. 15-min audit. We only follow up if we can actually help.

No commitment. Real numbers, not generic advice.