Explore: Margin Calculator Burn Rate Calculator CFO ROI Calculator | Construction Law Firms PE & VC Fund Admin | CEO Flash Report Sample Accounts UK Services
HVACJob CostingTrades

HVAC Job Costing: Why Your Most Profitable Jobs Might Be Losing Money

HVAC job costing — how to track true profitability. Labor burden, overhead allocation, truck roll cost, and building a job profitability report.

By Stuart Wilson, ACMA CGMA · · 13 min read

Your Highest-Revenue HVAC Jobs Might Be Your Biggest Money Losers

You just finished a $14,000 system installation. Two techs on-site for a day and a half. Customer paid in full. You look at the invoice and feel good — that's a great job.

But is it? Do you know what that job actually cost you? Not the materials on the purchase order. Not the hourly rate you pay your techs. The real, fully-loaded cost: including labor burden, truck roll, overhead allocation, warranty reserve, and the three callback trips your lead tech made because the ductwork wasn't right the first time?

Most HVAC business owners cannot answer that question. They know their revenue per job and have a rough sense of material cost. They might know their tech's hourly wage. But they have no idea what a job actually costs, and that means they have no idea which jobs are profitable and which ones are quietly bleeding them dry.

This is the job costing problem, and it kills more HVAC businesses than bad technicians or slow seasons ever will. According to the U.S. Bank, 82% of small business failures cite poor cash flow management. Job costing blind spots are one of the fastest ways to burn through cash without realizing it.

HVAC job costing (how to track profitability on every single call) is not optional if you want to grow past $2M in revenue. It's the difference between a business that scales and one that gets busier and busier while the owner's bank account stays flat. You can run 1,200 service calls a year and still lose money if 35% of those calls are below breakeven and you don't know which ones.

From Stuart's Experience
At Bancroft Group, I produced job costing reports for service businesses and construction-related portfolio companies across multiple countries. The pattern was always the same: owners assumed their highest-revenue jobs were their most profitable. They were wrong roughly 40% of the time. Once we built job-level profitability reports with fully burdened labor, proper overhead allocation, and contribution margin analysis, the picture changed dramatically. Some "bread and butter" service calls turned out to be the real profit drivers, while big-ticket installations were barely breaking even. You cannot manage what you cannot measure at the job level.
35%
of HVAC jobs may be below breakeven without owners knowing
1.35x
average labor burden multiplier for HVAC techs
$85–$150
true cost of a single truck roll before any work begins
TL;DR — Quick Answer

HVAC job costing tracks every cost — fully burdened labor, materials, overhead allocation, and truck roll expenses — against revenue for each individual service call or installation. Without it, roughly 35% of your jobs may be losing money while your overall P&L looks healthy. True job-level profitability analysis reveals which job types, technicians, and service areas actually generate profit.

1

What HVAC Job Costing Actually Is (And Isn't)

Job costing is the process of tracking every cost associated with a specific service call, repair, or installation, then comparing that total cost against the revenue collected for that job. The result is a job-level profit margin that tells you exactly how much money you made (or lost) on each individual job.

This is not the same as looking at your P&L and dividing total expenses by total jobs. That gives you an average, and averages hide everything important. A company with a 22% net margin overall might have jobs ranging from -15% (yes, negative) to +60% margin. The average looks fine. The reality is that one-third of your jobs are destroying the profit created by the other two-thirds.

True job costing captures four cost categories for every job:

  • Direct labor — fully burdened (not just the hourly wage)
  • Materials — at your actual cost, not the customer's price
  • Direct job expenses — truck roll, permits, subcontractors, equipment rental
  • Allocated overhead — the share of rent, insurance, office staff, and other fixed costs that each job must carry

When you subtract all four from the job revenue, you get the true job profit. Not gross profit. Not contribution margin. The actual, bottom-line profit for that specific job. This is what tells you whether to keep doing that type of work: raise your price, fix your process, or walk away from it entirely.

✅ Key Principle
Job costing is not a finance exercise — it's a pricing and operational tool. It tells you what to charge, where your techs are inefficient, and which job types are worth pursuing. Without it, every pricing decision is a guess. For more on how this applies across the trades, see our construction job costing guide.
2

Why Flat-Rate Pricing Without Job Costing Is Dangerous

Flat-rate pricing is standard in residential HVAC. You charge the customer a fixed price for a defined repair — $389 for a capacitor replacement, $1,200 for a blower motor swap, $8,500 for a 3-ton system install. The customer knows the price upfront. No surprises, and great for the customer experience.

The problem? Most HVAC companies build their flat-rate pricebooks based on industry averages, competitor pricing, or gut feel, not on their own actual cost data. They set the capacitor replacement at $389 because "that's what the market charges" without knowing whether their actual cost to deliver that repair is $180 or $310.

If your cost is $180, that's a 54% gross margin — excellent. If your cost is $310 (because your tech took 90 minutes instead of 45, or because the truck roll to that zip code was 40 minutes each way, or because you're carrying expensive workers' comp), that's a 20% margin, barely covering overhead. Same flat rate. Wildly different profitability.

Real Example
A residential HVAC company in Texas running $3.2M in annual revenue was using a flat-rate pricebook they'd copied from a franchise model three years earlier. When we built job-level profitability reports, we found that 28% of their service calls were generating less than 30% gross margin, well below their overhead absorption rate of 34%. Their most popular repair (condenser fan motor replacement, priced at $425) was averaging a $38 net loss per job once fully burdened labor and truck roll costs were included. They'd completed 340 of these jobs that year. That single line item cost them $12,920 in losses they didn't know existed.
✅ The Fix
Build your pricebook from the bottom up: start with your actual, fully-loaded cost for each job type, add your target margin, and that becomes your flat rate. Then validate quarterly by running job profitability reports against your pricebook. Your pricebook should be a living document, updated every time your costs change, not every three years.
3

Labor Burden: Your Tech Doesn't Cost $30/Hour

This is the single biggest job costing mistake in the HVAC industry. According to the PHCC, labor accounts for 60–70% of total job costs in mechanical contracting. You pay a technician $30/hour and assume that's the labor cost for each job. It's not. Not even close.

The fully burdened labor cost includes everything you pay for that technician beyond their base wage:

  • Employer payroll taxes (FICA, FUTA, SUTA) — 8–10% of wages
  • Workers' compensation insurance — 8–15% for HVAC trade codes (this varies dramatically by state; Florida and Texas have very different rates)
  • Health insurance and benefits — $400–$800/month per technician
  • Paid time off (vacation, sick days, holidays) — 8–10% of wages
  • Training and certifications — EPA 608, NATE, manufacturer certifications
  • Uniforms, tools, and phone/tablet — $100–$300/month per tech

When you add it all up, a $30/hour technician actually costs you $38–$44/hour. That's a burden multiplier of 1.25x to 1.45x. For a senior tech at $40/hour, the burdened rate is $50–$58/hour. According to the Bureau of Labor Statistics, the median annual wage for HVAC mechanics and installers was $57,300 in 2023, roughly $27.55/hour before any burden is applied.

Now do the math on a job. Your flat rate assumes 1.5 hours of labor at $30/hour = $45 in labor cost. The reality is 1.5 hours at $42/hour (burdened) = $63. You just underpriced the labor on that job by $18. Multiply that by 1,200 service calls per year and you've leaked $21,600 in margin. That leak is invisible, because you never calculated the true labor cost.

Cost Component $30/hr Tech $40/hr Tech
Base hourly wage $30.00 $40.00
Payroll taxes (9%) $2.70 $3.60
Workers' comp (11%) $3.30 $4.40
Health insurance $3.50 $3.50
PTO (9%) $2.70 $3.60
Training & certs $0.95 $0.95
Uniforms, tools, phone $1.10 $1.10
Fully burdened rate $44.25 $57.15
Burden multiplier 1.48x 1.43x
✅ The Fix
Calculate your actual burden multiplier for each technician tier (apprentice, journeyman, senior, lead). Use the burdened rate, not the base wage, in every job cost calculation and in your pricebook. Recalculate quarterly, because workers' comp and benefit costs change. This is a core function of a controller-level financial operation.
4

Material Markup vs. Actual Margin

HVAC companies typically mark up materials 100–300%. Buy a compressor for $800, sell it for $2,000 — that's a 150% markup. Sounds great. But markup and margin are not the same thing, and confusing them leads to pricing mistakes.

Markup is calculated on cost: ($2,000 - $800) / $800 = 150% markup. Margin is calculated on selling price: ($2,000 - $800) / $2,000 = 60% margin. The numbers feel different, and margin is the one that matters for profitability analysis.

But even the margin number is misleading if you're not accounting for the true cost of materials. Your cost isn't just what you paid the distributor. It also includes:

  • Freight and shipping — especially for specialty parts
  • Warehouse/storage costs — rent, utilities, and shelving for your parts room
  • Inventory carrying cost — the cost of capital tied up in parts sitting on shelves
  • Shrinkage and waste — parts that walk off the truck, get damaged, or expire
  • Return and restocking fees — parts ordered for jobs that cancel or change scope

When you factor these in, that $800 compressor might have a true landed cost of $860–$900. Your "60% margin" is actually 53–55%. Still healthy, but very different from what you thought you were earning.

✅ The Fix
Track your material cost of goods sold (COGS) at the job level, not just the pricebook markup. Calculate your actual material margin quarterly by comparing total material revenue to total material cost (including freight, storage, and shrinkage). If the gap between your pricebook margin and your actual margin is more than 5 points, you have a leakage problem.
5

Overhead Allocation: The Cost Nobody Tracks

Direct costs (labor and materials) are the costs most HVAC owners think about. But overhead is the silent margin killer. Overhead includes every cost that isn't directly tied to a specific job but is required to keep the business operating:

  • Office rent and utilities
  • Dispatchers, CSRs, and office managers
  • Accounting and bookkeeping
  • Insurance (general liability, vehicle, umbrella)
  • Marketing and advertising
  • Software subscriptions (ServiceTitan, QuickBooks, etc.)
  • Owner's salary (if not deployed on jobs)
  • Vehicle payments (if not charged to individual trucks)

For most HVAC companies, overhead runs 25–40% of revenue. According to ACHR News, the average HVAC contractor profit margin is between 2.5% and 3.5%, which means even a small overhead miscalculation can wipe out your entire profit. If your overhead is 34% and your gross margin on a job is 50%, the net margin is only 16%. If your gross margin on another job type is 30%, the net margin is negative 4%. You're losing money on every one of those jobs.

The question is: how do you allocate overhead fairly across jobs? There are three common methods:

  1. Revenue-based allocation — each job carries overhead proportional to its revenue (simplest but least accurate)
  2. Labor-hour allocation — each job carries overhead proportional to tech hours consumed (better for service businesses)
  3. Activity-based allocation — overhead is assigned based on actual consumption of resources like dispatch time, truck usage, and admin support (most accurate but requires more data)

For most HVAC companies under $10M, labor-hour allocation is the sweet spot. Calculate your total monthly overhead, divide by total billable tech hours, and you get an overhead rate per tech hour. Apply that to each job based on actual time on-site.

Real Example
An HVAC company in Florida had monthly overhead of $68,000 and their 8 technicians billed an average of 1,280 hours per month combined. Overhead rate: $53.13 per tech hour. A 2-hour service call that looked like a $450 job with $120 in materials and $88 in burdened labor (44% gross margin) actually netted just $136 after $106.26 in allocated overhead, a 30% net margin. Still profitable, but very different from the 44% the owner assumed. Meanwhile, their 6-hour installations had $318.78 in overhead allocation per job, a cost they'd never considered in their pricing.
✅ The Fix
Calculate your overhead rate per billable tech hour monthly. Include it in every job profitability calculation. If your overhead rate is climbing, you either need to increase pricing, improve tech utilization (more billable hours per tech per day), or cut overhead costs. This is contribution margin analysis, the foundation of HVAC management accounts.
6

The True Cost of a Truck Roll

Every time you dispatch a truck, money leaves your business before the technician even touches a wrench. The truck roll cost is the fully loaded expense of getting a tech from your shop (or their home) to the job site. Most HVAC owners dramatically underestimate this number.

A truck roll includes:

  • Vehicle cost — depreciation or lease payment, allocated per trip ($8–$15)
  • Fuel — at current diesel/gas prices, $15–$30 per round trip depending on distance
  • Vehicle insurance — allocated per trip ($3–$6)
  • Maintenance and tires — allocated per mile ($0.15–$0.25/mile)
  • Tech drive time — at the fully burdened rate, not productive but still paid ($20–$55 per 30 min drive)
  • GPS/telematics and fleet software — $25–$50/month per truck

For a 30-minute drive each way with a burdened tech rate of $44/hour, the truck roll alone costs $85–$150 before the technician starts any work. On a $250 service call, that truck roll just consumed 34–60% of your revenue. The job hasn't even started and you've already used up a third or more of the customer's payment.

This is why HVAC companies that serve large geographic areas, especially in sprawling markets like Dallas-Fort Worth, Houston, or the Tampa Bay area, often have worse margins than companies that serve a tight 20-mile radius. Distance kills margin, and truck roll cost is the mechanism.

✅ The Fix
Calculate your average truck roll cost by service zone. Create 2–3 geographic zones based on distance from your shop and assign different truck roll costs to each. Factor the zone-specific truck roll into every job cost calculation. Consider whether minimum service call charges should vary by zone. Some companies add a fuel surcharge for distant calls, but only if you've done the math to know what "distant" actually costs you.

How to Build a Job Profitability Report

A job profitability report takes everything we've covered (burdened labor, true material cost, truck roll, and allocated overhead) and assembles it into a single view for every completed job. Here's what a properly structured report looks like:

Line Item Service Call Example Installation Example
Job Revenue $425.00 $8,500.00
Materials (actual cost) ($65.00) ($3,200.00)
Direct labor (burdened) ($88.50) ($708.00)
Truck roll cost ($95.00) ($110.00)
Subcontractor / permits $0.00 ($350.00)
Gross Profit $176.50 (41.5%) $4,132.00 (48.6%)
Overhead allocation ($106.25) ($425.00)
Net Job Profit $70.25 (16.5%) $3,707.00 (43.6%)

The report should be generated for every completed job, then aggregated by job type, technician, customer segment, and service zone. The aggregation is where the real insights emerge:

  • By job type — Which repair categories are profitable? Which need re-pricing?
  • By technician — Who completes jobs fastest? Who has the highest callback rate (which destroys margin)?
  • By service zone — Are distant zip codes worth serving at current prices?
  • By customer segment — Are maintenance agreement customers more profitable than one-time callers?
From Stuart's Experience
When I build job profitability reports for field service businesses, the first reaction from owners is almost always surprise. They're shocked to learn that their "best" jobs — the ones with the biggest invoices — are often mediocre in terms of margin, while routine maintenance calls and diagnostic fees deliver the highest net margin per tech hour. I've seen this pattern across HVAC, plumbing, electrical, and construction companies. The insight changes how they price, how they dispatch, and which jobs they pursue. With 24 years of experience across PE-backed portfolio companies and growing owner-operated businesses, I can tell you: job costing is the single highest-ROI financial exercise a service business can undertake.

Building the Report: Step by Step

  1. Capture time on-site per job: Use GPS clock-in/clock-out through your field service software. Manual timesheets are unreliable.
  2. Capture drive time per job: Route tracking from your fleet management or FSM software.
  3. Record actual materials used: Not what the pricebook says, but what the tech actually pulled from the truck and installed.
  4. Apply burdened labor rate: Use the tech-specific burdened rate, not a company average.
  5. Calculate truck roll cost: Based on the zone or actual mileage for that job.
  6. Allocate overhead: Using your overhead rate per billable tech hour.
  7. Compare to job revenue: The delta is your true job profit. Positive is good. Negative means you paid the customer to let you fix their AC.

Your controller should produce this report monthly, with trend analysis showing whether margins are improving or deteriorating. If you're not getting this level of visibility, you're making pricing and operational decisions in the dark. See what this looks like in practice with our HVAC management accounts sample.

Technology Stack: Getting the Data Right

Job costing is only as good as the data feeding it. Garbage in, garbage out. The right technology stack automates the data capture that makes accurate job costing possible.

Field Service Management (FSM) Platforms

Platform Job Costing Strength Best For
ServiceTitan Built-in pricebook management, real-time labor tracking, job costing reports, integrated payroll data HVAC companies $3M+ revenue, 10+ techs
Housecall Pro Good time tracking, material recording, integrates with QuickBooks for cost data HVAC companies $1–5M revenue, 3–15 techs
Jobber Solid job tracking and time capture, clean QuickBooks integration Smaller HVAC operations, $500K–$3M revenue
FieldEdge Strong dispatching and flat-rate pricebook, decent job costing reporting HVAC companies wanting dispatch optimization

Accounting Integration

Your FSM platform captures the operational data: time on-site, materials used, job revenue. Your accounting system (QuickBooks Online, Xero, or QuickBooks Desktop) holds the financial data: actual labor costs, overhead expenses, vendor costs. The job profitability report requires data from both systems.

The critical integration points are:

  • Invoice sync: Job revenue flows from FSM to accounting automatically
  • Time tracking sync: Tech hours per job flow to accounting for labor cost allocation
  • Purchase order / material sync: Material costs tie to specific jobs, not just "COGS" in aggregate
  • Chart of accounts alignment: Your accounting COA must support job-level cost tracking (class tracking in QuickBooks, tracking categories in Xero)

The most common failure point is the accounting system, not the FSM. Most HVAC bookkeepers don't set up the chart of accounts for job costing. They dump all labor into one "Wages" account, all materials into one "Parts & Supplies" account, and all overhead into undifferentiated expense accounts. A controller restructures the chart of accounts to support the job costing reports you need.

🔧 Technology Is Not the Solution — It's the Data Source
No software will hand you a job profitability report that's ready to act on. ServiceTitan comes closest, but even its built-in reports require proper configuration, accurate burden rates, and overhead allocation that the software doesn't calculate for you. The technology captures the data. A controller turns the data into actionable intelligence. Without the controller, you have a very expensive data collection system that nobody reads. If your P&L shows profit but your cash says otherwise, the data is there. Someone just needs to read it.

Contribution Margin: The Metric That Changes Decisions

Once you have job-level cost data, the most powerful analysis you can run is contribution margin by job type. Contribution margin is the revenue remaining after direct costs (labor, materials, truck roll) but before overhead allocation. It tells you how much each job contributes to covering your fixed costs and generating profit.

Why is this different from net job profit? Because overhead is fixed in the short term. You pay your rent, office staff, and insurance regardless of job volume. Contribution margin tells you whether a job is worth dispatching to. A job with a low net margin but positive contribution margin is still covering some overhead. A job with a negative contribution margin is one you should refuse or re-price immediately. It costs you more in direct costs than the customer pays.

⚠️ Warning Signs in Your Job Mix
  • Any job type with a contribution margin below 35% needs immediate re-pricing
  • If more than 20% of your jobs have net margins below 10%, your pricebook is stale
  • If your highest-volume job type has the lowest margin, you're scaling losses
  • If callbacks (return trips) exceed 8% of completed jobs, you have a quality or training problem that's destroying margin

The contribution margin view also changes how you think about capacity. On a day when you're fully booked, you should dispatch to the highest-margin jobs first. On a slow Tuesday in February, any job with a positive contribution margin is worth taking, because the tech and truck costs are already sunk for the day. This is how sophisticated HVAC operations manage their dispatch boards: margin-aware dispatching, not just first-come-first-served.

Warranty Reserve: The Hidden Cost Most HVAC Companies Ignore

Every installation carries a warranty obligation. When your 2-year labor warranty triggers a callback, that return trip costs you burdened labor + truck roll + potentially new materials — all at zero revenue. If you're not reserving for warranty expense at the time of the original installation, your job profitability report is overstating margins on install jobs.

A conservative warranty reserve is 2–5% of installation revenue, set aside at the time of sale. This reduces your reported margin on the original job but accurately reflects the total cost of delivering that work, including the future warranty obligation. Your controller should track actual warranty costs against the reserve quarterly and adjust the percentage based on real data.

🎯 The Bottom Line
Revenue is vanity. Gross margin is sanity. Job-level net profit is reality. The SBA reports that 20% of small businesses fail in year one and 50% within five years. Every HVAC company that grows past $2M in revenue and doesn't implement job costing eventually hits a wall: they're busier than ever but making the same (or less) money. The problem isn't the market, the techs, or the economy. The problem is that they don't know which jobs make money and which ones lose it. Job costing solves that, permanently. It's not a finance project. It's the foundation of every pricing, dispatch, and growth decision you'll make.

Frequently Asked Questions

What is HVAC job costing and why does it matter?

HVAC job costing is the process of tracking every cost associated with a specific service call or installation, including fully burdened labor, materials at true cost, truck roll expense, and allocated overhead, then comparing total costs against job revenue. It matters because without it, you have no idea which jobs are profitable. Many HVAC companies find that 30–40% of their completed jobs are below breakeven once all costs are properly allocated. It's the only way to build a pricebook based on reality rather than guesswork.

How do I calculate the true labor cost for an HVAC technician?

Start with the base hourly wage, then add employer payroll taxes (8–10%), workers' compensation insurance (8–15% for HVAC trades), health insurance and benefits ($400–$800/month per tech), paid time off (8–10% of wages), training and certification costs, and uniforms or tool allowances. The fully burdened rate is typically 1.25x to 1.45x the base wage. A tech earning $30/hour actually costs $38–$44/hour. Use the burdened rate, never the base wage, in every job cost calculation and in your pricebook.

What is a good profit margin on an HVAC service call?

For residential service calls, target 50–65% gross margin (after direct labor, materials, and truck roll) and 15–25% net margin (after overhead allocation). For installations, target 35–50% gross margin and 8–18% net margin. If service call margins are below 45% gross or installation margins are below 30% gross, you have a pricing problem, an efficiency problem, or both. The only way to know is to run job-level profitability reports, not just read your overall P&L.

What software should I use for HVAC job costing?

Use a field service management platform (ServiceTitan, Housecall Pro, or Jobber) integrated with QuickBooks Online or Xero. ServiceTitan offers the most complete built-in job costing for HVAC businesses with 10+ techs. Housecall Pro and Jobber are solid for smaller operations. The critical requirement is tracking actual time on-site and actual materials per job, synced to your accounting system. But software is the data source, not the solution. You still need a controller to calculate burden rates, allocate overhead, and produce actionable job profitability reports.

🏦 Ex-Citigroup · Ex-ABN AMRO
📊 500+ Management Packs Delivered
Reports by the 5th — Every Month
🛡️ Zero Material Audit Findings in 24 Years

The CFO-Grade Sample Pack — Free, No Strings

The exact management accounts, KPI dashboards, and 13-week cash flow templates that our clients receive every month. Not a mockup — the real thing. See what your finance function should look like.

The #1 thing most $5M–$50M companies get wrong about their finances

It's not what you think — and it's not about your bookkeeper. Stuart Wilson (ACMA CGMA, ex-Citigroup, 24 years) has seen the same pattern in 87% of the companies he's worked with. A 15-minute call is enough to tell you if you have it too.

Find Out in a Free Discovery Call
Confidential · No pitch · No obligation
Book a Free Discovery Call