Your Labor Burden Rate Is Wrong — and Every Job Pays for It
Your Labor Burden Rate Is Wrong — and Every Job Pays for It
In 2019, I pulled the P&L of a 14-truck residential HVAC shop my firm was evaluating for acquisition. The owner was a good operator — clean trucks, low callback rate, strong Google reviews. He had been losing money on every install for three years. He did not know it.
One of the cleaner explanations: the burden rate his estimator had been using to price jobs was 19%. That number came from his payroll provider's summary report, it looked official, and nobody had questioned it. The actual cost of putting a technician on a job — once you counted everything that belongs in that number — was closer to 44%. The gap between those two figures had been silently repricing every install, in the wrong direction, for 36 months.
From the inside, a burden rate that far off doesn't look like a math error. It looks like a market that won't pay what the work is worth. The market is not the problem.
The Burden Rate Everyone Uses Is Wrong Before You Even Start
The figure most small residential shops carry — somewhere in the 18-22% range — comes from a specific and legitimate place: the employer's share of payroll taxes. FICA at 7.65%, FUTA at 0.6% on the first $7,000, SUTA at whatever your state charges based on your unemployment history. Add those together, you land in that range. The payroll company spits it out. The owner enters it into the estimate template.
That is a tax rate. It is not a burden rate. Confusing them is the structural error that makes every estimate built on that number wrong from line one.
A burden rate is a pricing question: what does it actually cost to deploy a technician for one billable hour? Payroll taxes are one component. In higher-wage markets, they are a shrinking fraction.
In shops I've audited under 25 trucks, this distinction gets missed for a straightforward reason. A larger organization has someone whose job is maintaining the cost-of-doing-business calculation — whether that's the owner, an ops analyst, or an outside consultant they've retained. In a 6- or 10-truck shop, the owner is doing it between service calls. The payroll report is convenient, authoritative-looking, and incomplete.
What Payroll Taxes Actually Cover (And What They Don't)
Here is what belongs in a complete labor burden calculation, and what most shops omit.
Workers' compensation premiums. HVAC technician classification codes carry high comp rates because the work involves electrical hazard, refrigerant, rooftop access, and heavy equipment handling. Rates vary by state and by your experience modification factor. Pull your comp audit worksheet and use the actual rate — not an estimate, not a state average.
General liability insurance allocation. Your GL premium exists because field labor generates field risk. Allocating a portion of that premium to each technician's cost is legitimate cost accounting. Most shops don't do it. It belongs in burden.
Paid time off. A technician earning two weeks of vacation, five sick days, and eight holidays is being paid for roughly 14% of the year while producing no billable hours. That cost distributes across the hours they do work. Divide total annual compensation — including PTO weeks paid — by total billable hours only, and your effective hourly cost is already higher than the base rate before you've added anything else.
Drive time. A technician spending 90 minutes a day moving between jobs and returning to the shop generates roughly 75 hours of annual unrecoverable time. That time has a wage cost. When I was running service calls out of Bayview Mechanical in Sunnyvale, heavy traffic days regularly consumed the first and last hour of the shift in windshield time. Not occasionally. Routinely. Most shops don't recover that cost through billing, and almost none account for it explicitly in burden.
Tool replacement and consumables. Recovery machines, gauges, vacuum pumps, multimeters, torch kits, PPE — these have real replacement cycles and real annual costs. Most shops expense tool purchases when they happen and never factor them into labor pricing. They belong there.
Callbacks. This is the item almost no shop accounts for explicitly. When a technician returns to correct prior work — a charge that wasn't right, a contactor that failed at installation — those hours appear in payroll and not in revenue. Your actual billable hour yield per technician is lower than your scheduled hours suggest. Your effective cost per billable hour is higher. That gap belongs in burden.
The callback line is the most honest diagnostic of your actual quality rate. Almost every shop I've audited keeps it invisible — absorbed into labor expense, never surfacing as the pricing problem it is.
The Real Number: Why 35-50% Is Normal, Not Alarming
Here is the arithmetic on a journeyman HVAC tech earning $30 per hour base, full-time, in a market like the Northern Virginia suburbs where I now work with clients.
Payroll taxes (FICA, FUTA, SUTA combined): approximately $2.70-$3.00 per hour, or 9-10%.
Workers' comp at 7%: $2.10 per hour.
Health insurance — employer contributing to a standard plan: roughly $1.50-$1.75 per hour of scheduled time, depending on the plan and what the employer covers.
Paid time off — three weeks total across vacation, sick, and holidays: on a standard work year, that's approximately 120 paid non-productive hours. Distributed across the remaining billable hours, that adds roughly $1.85 per billable hour.
Drive time — 75 hours annually at $30: $2,250 per year, or about $1.15 per billable hour.
Tool budget — $2,500 per year per technician running full service is a conservative figure, drawn from what I've seen in shop audits: about $1.25 per billable hour.
Callback allocation — I treat this as an explicit assumption in every audit I run, not a fixed benchmark, because it varies. In the shops I've reviewed, callback rates on service work typically run somewhere between 3% and 6%. At 4%, on a tech running 1,500 billable hours annually, that's roughly 60 hours of unrecovered labor, around $1,800 per year, or about $0.95 per billable hour. Use your own rate from your service history.
Total additional cost per hour: approximately $11.55-$12.00 on a $30 base. That's a burden rate of 38-40% before any GL allocation.
Add a reasonable GL allocation — call it $1,500 per technician annually — and you're at 43-45%.
The BLS Employer Costs for Employee Compensation release (the ECEC, quarterly) provides an external check. The Q4 2023 release put total compensation costs for installation, maintenance, and repair occupations at roughly 30-35% above wages and salaries alone. That's the national aggregate, which includes non-union shops in low-cost states. It doesn't capture tool costs or callbacks, which the BLS doesn't track. The real number for a properly-loaded small-shop calculation sits above that range.
I ran service calls for six years — four at Bayview Mechanical, two at Caldera Heating & Cooling in the Bay Area. I know what a callback on a reversing valve job costs in a day: a tech off productive work for three to four hours, fuel and windshield time spent, and any parts that fall under workmanship warranty. That money has to live somewhere in your cost structure. In shops that price correctly, it lives in burden. In shops that don't, it surfaces later as a cash position that won't build no matter what revenue does.
Why the Flat-Rate Books Don't Save You Here
The counterargument here is usually: I use a flat-rate price book, so my pricing is already calibrated.
Not automatically. Not if the burden rate used to configure the book was the 20% figure your payroll company provided.
The flat-rate books sold by the major industry vendors are built to produce consistent revenue per ticket. Your CSR quotes confidently, your technician doesn't negotiate, your invoice goes out clean. Those are real operational benefits.
But the book's pricing is only as accurate as the cost inputs used to configure it. If the burden rate was wrong at setup — and in most small-shop implementations I've seen, it was — then every price in the book is wrong by the same margin, consistently and invisibly.
There is a second problem. The books tend to produce what looks like stable gross margin. But gross margin and contribution margin are not the same thing. Gross margin is calculated against the direct costs you've explicitly coded. Contribution margin accounts for full overhead allocation, including the corrected burden rate, and tells you whether a job actually covers fixed costs and profit. A book configured on an understated burden rate will show you healthy gross margin while your contribution margin quietly sits 15 or 20 points lower — because that gap is sitting uncaptured in overhead.
I've said this elsewhere and I'll say it directly here: the flat-rate books the major vendors sell are calibrated to produce predictable revenue per ticket. That is not the same as predictable margin per ticket. For a pricing system, those are opposite outcomes.
What Happens to an Estimate When the Number Is 15 Points Low
Standard residential install. Two-man crew, split system replacement, six hours on-site.
Lead tech at $32 per hour. Helper at $22. Combined pre-burden rate: $54 per hour.
At 20% burden: $54 × 1.20 × 6 = $388.80 in burdened labor.
At 42% burden — a conservative figure for the shops I work with: $54 × 1.42 × 6 = $459.84.
The gap is $71 per job. A shop running 12 installs per week absorbs roughly $852 per week in unrecovered overhead — not as an explicit loss, but as cost that was never priced in. Over 48 working weeks, that's approximately $41,000 per year that distributes quietly across labor expense and surfaces only as thinner-than-expected net income, or as a cash position that won't build despite solid revenue.
The mechanism is the same one that produces the diagnostic fee problem I've written about separately: the shortfall doesn't announce itself. It spreads. And when your days-sales-outstanding is running 45-50 days on top of the underpricing — which, in my experience, tends to accompany a miscalculated burden rate, because the same shops that get this wrong frequently don't know their cash conversion cycle either — you are undercharging for the job and then waiting six weeks to collect what you undercharged. The two errors stack. Thin quarters start to feel like a market problem. They are a math problem.
Run Your Own Number Monday Morning — Here's the Sequence
You have the source documents. Here is the order.
Step one: Call your payroll provider and ask for your combined employer tax rate by employee classification. FICA, FUTA, SUTA — one number per technician class. Ten minutes.
Step two: Pull your workers' comp audit worksheet from last year. Find the rate for your field technician classification code and your experience modification factor. Multiply the rate by the mod. That is your actual comp rate.
Step three: Pull your GL policy declarations page. Divide the annual premium by your field technician headcount. Divide that by 1,800 — the approximate productive hours in a full-time field year — to get the hourly GL allocation.
Step four: Pull timecards from the last 90 days. Add PTO hours paid — vacation, sick, holidays. Annualize. Divide the annual PTO pay by your billable hours (excluding PTO) to get the PTO cost per billable hour.
Step five: Pull GPS data or dispatch logs. Calculate average daily drive time per technician. Multiply by the hourly wage rate. Divide by billable hours.
Step six: Pull tool and supply purchases for the last two years from your accounting software. Average them. Divide by technician count, then by 1,800.
Step seven: Pull your service history for the last 12 months. Identify callbacks on prior work. Count the hours. Multiply by the tech's hourly rate. Divide by total billable hours.
Add steps one through seven. Divide the total additional cost per hour by the base hourly wage. That is your burden rate.
Then run the corrected number against your last 90 days of install estimates. Calculate the aggregate shortfall. You are not trying to recover what's already invoiced — that's gone. You are establishing the accurate starting point for pricing the next 90 days. The corrected number will probably be uncomfortable. It is also the only number that reflects what the work actually costs.
FAQ
My payroll company gives me a burden rate report — why isn't that sufficient?
Because a payroll company tracks what it administers: employer-side taxes and, sometimes, benefits it processes directly. It does not track workers' comp premiums (billed separately by your carrier), GL allocation, PTO yield loss, drive time, tool replacement, or callbacks. The payroll report is a floor. Your pricing needs the full number.
How do I handle burden rate for seasonal technicians who don't work a full year?
Same calculation, actual hours instead of an annualized assumption. Pull the technician's actual scheduled hours for the season, subtract PTO and drive time, use that as your denominator. Seasonal techs often have lower benefits costs if they don't qualify for health coverage, but they can carry higher unemployment exposure. Run the math per technician. Averaging across full-time and seasonal staff produces a number that's wrong for both.
Should drive time be billed to the customer, or does it belong in burden?
Both — they are solving different problems. A trip charge or dispatch fee recovers the direct cost of getting a truck to a specific address. Drive time in burden accounts for the aggregate of all daily travel, including dead miles back to the shop and between-job routing loss. Even shops with a trip charge rarely recover 100% of daily drive time through it. Whatever isn't recovered through billing belongs in burden.
If I correct my burden rate, won't I price myself out of the market against the PE-backed shops?
The PE-backed shops are not typically the low-price competitor. I spent two years inside Atlantic Comfort Partners as an ops analyst and watched the acquisition model up close. The consolidators are pushing average ticket value up, not competing on labor rate. The shops pricing below true burden cost in your market are almost certainly other independents carrying the same miscalculation you are. Correcting your number gets you to accurate pricing, not premium pricing. If the corrected number genuinely prices you out — meaning the market rate in your zip code doesn't cover the real cost of doing the work — that is a different and more serious problem. But in the shops I've audited, that ceiling is rarely what stops owners from correcting the rate. Discomfort stops them first.
How often should I recalculate?
Once a year is the minimum, timed to your fiscal year-end when you are already in the P&L. But the workers' comp and commercial auto lines need a light recalculation at every renewal, because those premiums have moved fast enough in the last three years that a January rate can be meaningfully wrong by September if a renewal hit in March.
My workers' comp rate varies by job type. Do I average, or calculate a separate burden rate by task classification?
Calculate separately if you can. Rooftop commercial work, attic work, and standard residential replacement carry different classification codes and different rates. If your techs are regularly logged against different codes — and your carrier is auditing by classification — blending into one rate undercharges on high-hazard work and overcharges on low-hazard work. Most small shops don't have the job-costing discipline to separate by classification at estimate time, in which case a weighted average based on your actual hours-by-code from the last comp audit is a workable approximation. But separate calculations are more accurate and worth building toward.
Enjoyed this article?
Get articles like this in your inbox every Monday. Free, no spam.
