Your Labor Cost Isn't Your Wage Rate — It's Much Higher
Your Labor Cost Isn't Your Wage Rate — It's Much Higher
In 2019, I pulled the P&L of a 14-truck residential HVAC shop that my firm was evaluating for acquisition. The owner had been in business for eleven years. He knew his crews, knew his service area, knew his equipment. What he didn't know was that he'd been losing money on every install for three years. One of the core reasons his gross margin was fictional — his word, later, not mine — was that he'd been pricing labor at his wage line and calling it his labor cost.
He was short by a significant amount. We'll get to exactly how significant.
The Wage Line Is the Wrong Number to Watch
The paycheck total is what you pay an employee. The burdened labor cost is what it costs the business to have that employee on a truck for an hour. Those are different figures.
The 2019 shop had both problems. The owner knew his lead installers were making $29 and $31 an hour. He had never calculated what it cost him per billable hour to actually deploy those techs on a job. When we rebuilt the number from his own documents, the figure was closer to $46 and $49 respectively. He'd been pricing off a number that was $16–18 short before overhead or profit entered the equation.
The cost-of-doing-business calculation I use with every shop separates these two figures deliberately: wage rate in one place, burden components below it, billable hours as the denominator. Skip any of those steps and you can't trust the output.
What "Burden" Actually Means
Burdened labor cost is the total cost to the business of an employee's labor — base wage plus every statutory and voluntary cost that attaches to it.
Take a journeyman tech earning $28 an hour. Here's what's riding along with that wage:
FICA (employer share): 7.65% of wages up to the Social Security wage base. On $28/hour, that's $2.14 per hour.
FUTA and SUTA: Federal and state unemployment taxes. FUTA is capped but real. SUTA varies by state and by your claims history — and if you've had separations, your rate has probably moved.
Workers' compensation premium: HVAC installation and service carries a workers' comp classification code (typically 5537) with a base rate among the highest in the residential trades, reflecting the ladder work, rooftop equipment, and electrical exposure. Your state and your experience modifier determine where you land. If your modifier is above 1.0 because of claims, you're paying more than you think.
General liability allocation: Most shops pay a GL premium pegged to payroll or revenue. Divide your annual GL cost by total tech-hours and put that figure in the burden calculation.
Paid time off: A tech who earns two weeks of PTO and takes it works approximately 1,880 hours instead of 2,080. You paid for 2,080. That gap raises the effective cost of every hour actually worked.
Health insurance contribution: If you're contributing toward a tech's premium — anything competitive in a market with active hiring — convert the monthly figure to an hourly cost and add it.
Retirement match: Even a modest percentage match on $28/hour adds real dollars per hour across a full year.
Add those components together and you're looking at a significant premium over the wage rate — in the shops I audit, typically 35–55% above the hourly wage, depending on state, workers' comp modifier, and benefits offered. And that's before a single dollar of overhead.
If you're pricing labor at your wage rate, you're not covering your cost of labor. You're subsidizing every job out of overhead and margin you don't have to spare — and the P&L won't show you where it's going.
The fastest-moving piece right now is commercial insurance. I've reviewed renewal invoices from shops in Virginia and elsewhere that show year-over-year increases that compound faster than wages have moved. Workers' comp has been less dramatic but hasn't been flat. For shops that set their burden rate once and don't revisit it at renewal, the real cost is pulling away from the priced cost every year without a single wage increase triggering the gap.
The Unbillable Time Problem No One Prices
Even if you calculate burden correctly, you can still underprice if you use the wrong denominator. Most shops divide total labor cost by total hours worked. The correct denominator is billable hours.
When I was running service calls for Bayview Mechanical in Sunnyvale, I kept mental notes on where my day actually went. A shift that started at 7:00 a.m. and ended at 5:30 p.m. regularly contained a shop meeting, a parts run that wasn't dispatched as a call, drive time between jobs that wasn't billed, and a warranty callback on a unit I'd installed the previous month. Two hours or more of paid clock time. No billable revenue attached to any of it.
The categories are consistent across every shop I've audited since:
- Shop meetings and training time — paid, appropriate, unbillable
- Drive time between calls when not charged as a dispatch fee
- Warranty callbacks — tech time is real, recovery is zero or partial
- Parts runs when a tech has to retrieve a part mid-job
- Van loading at the shop at start and end of day
None of these show up as a line item on a typical P&L. They're absorbed into wage expense and invisible. But they inflate the real cost of every billable hour because you're paying for them without recovering them.
The national average for labor cost per billable hour is a fiction. It's built on a denominator you don't control and cost inputs that vary by state, by market, by your specific insurance history. Run your own number.
Why Your Costs Are Rising Even If Your Wages Aren't
Most trade-press coverage of rising labor costs frames it as a wage story: competition is driving wages up, and that's why your labor cost is climbing. That framing is right in some markets and irrelevant in others.
I read the BLS Employment Situation report and the quarterly JOLTS and OEWS releases. The labor shortage in the trades is real, but it's concentrated. It's worst for journeyman-level techs in smaller metros — the ones where the pool of experienced technicians is genuinely thin and local competition for them is fierce. In Sunbelt metros with active apprenticeship pipelines, the apprentice shortage that the trade press describes simply isn't present in the data the same way. The shortage narrative gets applied to a problem that varies dramatically by geography and skill level, and the trade press mostly flattens that variation.
Here's what that means for burden: if you're in a market where you haven't given raises in 18 months, your wage line is flat. But your workers' comp premium renewed and went up. Your GL renewed and went up. Your SUTA rate adjusted because of a claims experience. Your health plan renewed and the premium increased. None of that required a wage increase. All of it raised your burdened cost per hour.
I saw the same pattern after the SEER2 transition. A significant portion of the independent shops I was working with at the time absorbed the equipment cost increase without passing it through — they held the install price and took the hit in margin. Most of them didn't make a deliberate choice to absorb it. They just didn't do the repricing math in time, and by the time the compression showed up clearly enough to notice, they were attributing it to a slow quarter. Burden creep works exactly the same way. The cost moves. The price holds. The margin compresses. And the owner never finds the leak because it isn't a line item.
What a Real Burden Calculation Exposed
A shop I worked with after going independent in 2021 — residential HVAC, owner-operated — had a lead tech who'd been with the shop for six years. The owner knew the wage: $31 an hour. That was the number in his head for estimates, for price book adjustments, for everything.
We built the actual burdened cost from his workers' comp audit invoice, his payroll register, and his insurance declarations page. The number came out substantially higher than $31.
The gap on every billable hour of that tech's install time was meaningful. Multiply it across a year of installs and you get a number large enough that the owner went quiet when he saw it. The overhead and profit issues were set aside entirely for that conversation — we were just looking at the labor mispricing.
Shops that run this error long enough don't just develop a margin problem. They develop a cash timing problem. They're funding the gap between what installs actually cost and what they're collecting. If any of those installs are on commercial accounts with net-30 terms that stretch to 45 or 60 days, the business is essentially financing its own underpricing. The owner sees a cash crunch. Assumes it's a receivables problem. Starts chasing DSO. The DSO is fine. The pricing is the wound.
What to Do Monday Morning
Pull the documents you already own.
Step one: Get your last workers' comp audit invoice and your payroll register from the same period. Build your burden rate by employee classification — install crew separate from service techs, apprentices separate if you have them. Install and service carry different risk profiles. Many shops I've reviewed have both crew types coded identically on workers' comp. That's a potential audit exposure and a pricing error simultaneously.
Step two: Add every burden component line by line. FICA employer share, FUTA/SUTA, workers' comp per hour, GL allocation per hour, health contribution per hour, PTO cost per hour, retirement match. Write the dollar figure for each component next to each employee class. Total it. Divide by the wage rate and you have your burden multiplier.
Step three: Run the billable-hour audit. Pull 30 days of dispatch records. For each technician, calculate total clock hours in the period versus total hours that appear on job records as billable. That ratio — billable divided by clock — is your billable utilization rate. Apply it to adjust your cost figure. In shops doing this for the first time, it moves the effective cost per billable hour materially. More, if warranty callback volume is high.
Step four: Compare the output to your current price book labor rate. If there's a gap, your price book needs to move before the next job you sell. Not at the next quarterly review.
If you use a flat-rate price book from a major vendor, ask directly: what labor cost assumption is built into this book, and what does it include? Most of them use a built-in assumption you cannot see or adjust. It approximates a national midpoint. The books are calibrated to produce consistent revenue per ticket. Your margin per ticket depends on your cost, not theirs.
FAQ
If I calculate my full burdened labor cost, won't my prices be too high to compete?
Possibly, in specific markets with specific competitors. But before you accept that conclusion, look at what the shops undercutting you are actually recovering. The shops I've seen with chronically low install prices are usually pricing off their wage rate — same error — or operating with a fundamentally different cost structure: home-based, fewer trucks, no benefits. If your burdened rate is accurate and a competitor's price is below your cost, that's information about them, not a reason to price below your own cost.
My workers' comp premium just had its annual audit and I owe a big adjustment. Is that normal?
Yes, and it's almost always caused by actual payroll coming in higher than the estimate you declared at policy start, or by a shift in your classification mix. Workers' comp is priced on estimated payroll and true-up at audit. If you hired mid-year, gave raises, or had more overtime than projected, you'll owe. Reporting payroll quarterly to your carrier and keeping your classification codes current will shrink the surprises.
Should I give my service manager the same burdened rate I use for pricing?
Yes — with one caveat. The number should reflect the actual crew likely to do the work, not a shop average. If your lead installer and your second installer have meaningfully different burdened rates, a job priced at a blended average is either overpriced or underpriced depending on who shows up. Build estimates around the crew configuration you actually deploy. Shop averages are useful for back-of-envelope margin checks. They're imprecise for job-level pricing.
What's the right way to handle paid time off — add it to the hourly rate or adjust the denominator?
Either method works if applied consistently. I prefer adjusting the denominator because it's more intuitive when you're running the billable-hour analysis at the same time. If a tech works 2,080 paid hours but 200 are PTO, he produces 1,880 hours of available labor. Divide his total annual cost by 1,880 instead of 2,080. The PTO cost goes into the effective hourly rate automatically. The important thing is that you account for it somewhere — most shops don't, and it understates the burden rate in a way that compounds quietly over the year.
Enjoyed this article?
Get articles like this in your inbox every Monday. Free, no spam.
