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.
- What HVAC Job Costing Actually Is (And Isn't)
- Why Flat-Rate Pricing Without Job Costing Is Dangerous
- Labor Burden: Your Tech Doesn't Cost $30/Hour
- Material Markup vs. Actual Margin
- Overhead Allocation: The Cost Nobody Tracks
- The True Cost of a Truck Roll
- How to Build a Job Profitability Report
- Technology Stack: ServiceTitan, Housecall Pro, and Your Accounting System
- Frequently Asked Questions
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.
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.
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.
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 |
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.
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:
- Revenue-based allocation — each job carries overhead proportional to its revenue (simplest but least accurate)
- Labor-hour allocation — each job carries overhead proportional to tech hours consumed (better for service businesses)
- 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.
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.
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?
Building the Report: Step by Step
- Capture time on-site per job: Use GPS clock-in/clock-out through your field service software. Manual timesheets are unreliable.
- Capture drive time per job: Route tracking from your fleet management or FSM software.
- Record actual materials used: Not what the pricebook says, but what the tech actually pulled from the truck and installed.
- Apply burdened labor rate: Use the tech-specific burdened rate, not a company average.
- Calculate truck roll cost: Based on the zone or actual mileage for that job.
- Allocate overhead: Using your overhead rate per billable tech hour.
- 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.
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.
- 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.
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.