Williams Air Solutions

Pricing & Cost Accounting

How to price HVAC jobs so they actually make money — and where the money disappears when they don't.

The Core Problem

A common pattern in HVAC: revenue is growing but profit is flat. The problem usually isn't volume — it's leakage. Money comes in through service calls, installs, and agreements, then drains out through dozens of small holes that individually look minor but collectively cost 15–30% of potential profit.

The industry average EBITDA margin is roughly 3%. Top-quartile operators run 12–15%. The gap isn't talent or market — it's leakage.

The bottom line A $2M company losing 10% to leaks is hemorrhaging $200K/year in profit that was already earned. Fix the five easiest leaks and that alone could double net profit — without adding a single new customer.

Know Your Loaded Labor Rate

The single most common pricing error in HVAC: using a tech's hourly wage as the labor cost. A tech making $30/hour actually costs $42–$45/hour loaded — taxes, benefits, workers' comp, tools, phone, uniform. This multiplier is typically 1.4–1.6× the base wage and excludes vehicle costs (which add another 0.1–0.2×).

Pricing at $30 instead of $45 means every hour of labor is underpriced by $12–$15. Across 1,500 billable hours/year, that's $18,000–$22,500 of unrecovered cost per tech.

ComponentTypical %Example ($30/hr base)
Base wage100%$30.00
Payroll taxes (FICA, FUTA, SUTA)10–12%$3.00–$3.60
Workers' comp (FL NCCI 5537)5–8%$1.50–$2.40
Benefits (health, PTO, etc.)15–25%$4.50–$7.50
Tools, phone, uniform3–5%$0.90–$1.50
Loaded rate140–160%$42.00–$48.00

Sources: Profitability Partners, BDR, NCCI Code 5537 (FL 2026 rates)

Build a Flat-Rate Price Book

Quoting by gut means every tech gives a different price for the same job. A flat-rate price book standardizes pricing across your team and ensures every job recovers its actual cost plus target margin.

Know your overhead rate first

Before you can price a job, you need to know what overhead costs per billable hour:

Overhead Rate = Total Annual Overhead ÷ Total Annual Billable Tech Hours

Example: $480,000 annual overhead ÷ 8,000 billable hours = $60/hr overhead allocation. A 4-tech-hour job carries $240 in overhead — that's what it costs to keep the lights on, the trucks rolling, and the office staffed for those 4 hours.

Source: ACCA, Profitability Partners

The pricing formulas

Two ways to get to the same number — markup and margin. Contractors commonly confuse these.

Markup method: Final Price = (Labor + Materials + Overhead) × (1 + Markup %)
Margin method: Price = Total Cost ÷ (1 − desired profit margin)

Example (margin method): Job costs $3,600 all-in. Target 25% margin. $3,600 ÷ (1 − 0.25) = $4,800 price.

The difference matters: 25% markup on $3,600 = $4,500. 25% margin on $3,600 = $4,800. If you say "25% profit" but use markup math, you're leaving $300 on the table per job.

Update the price book quarterly — material costs have risen 12–18% since 2023. A price book that hasn't been updated in 12+ months means selling at yesterday's material cost.

Margin targets by job type

Job typeTarget gross marginSource
Service / repair55–65%ServiceTitan, Oryx-Horn, RelayFi
Maintenance50–60%ACCA, ServiceTitan
Replacement / install40–50%FieldCamp, BDR
New construction25–35%Industry convention

Material markup ranges

Part categoryTypical markup
Small parts / consumables150–300%
Mid-range components (capacitors, contactors)100–200%
Major equipment (compressors, coils)15–35%
Copper / refrigerant50–100%

Source: FieldCamp, Oryx-Horn (2026)

Flat-rate vs T&M: same job, different outcome

A capacitor replacement — same parts, same labor, same customer:

MethodCustomer priceDirect costGross profitMargin
Time & materials$261$67.50$19474%
Flat rate$389$67.50$32283%

That's +$128 per job. At 10 calls/day, flat-rate pricing adds roughly $330K/year in revenue from the same work volume.

Source: FieldCamp (2026)

Good / Better / Best options

Presenting three options reframes the customer's decision from "should I hire this person?" to "which option fits my situation?" Research shows 30–40% choose the middle option, and 15–20% select premium — neither of which existed without tiered pricing.

Example — AC repair:

TierPriceMarginIncludes
Good$38972%Fix the immediate problem
Better$54968%Fix + address related issues from inspection
Best$69965%Full system service + maintenance agreement

Source: FieldCamp (2026)

Common margin errors

Five ways contractors unknowingly undercharge
  1. Using wage rate instead of loaded cost — overstates margin by 10–15 percentage points
  2. Omitting overhead allocation entirely — job "profit" isn't profit if it doesn't cover overhead
  3. Applying uniform markup across job types — a service call and an install have different cost structures
  4. Not tracking discounts — discounts given in the field without visibility to the office
  5. Closing jobs before subcontractor invoices arrive — reporting margin before all costs are in

Source: Oryx-Horn (2026)

Average job prices (2026 benchmarks)

Job typePrice range
AC repair (standard)$150–$450
AC repair (complex)$200–$1,000
Furnace repair$125–$355
AC installation$3,800–$7,900
Furnace replacement$1,700–$6,400
Heat pump replacement$4,200–$7,600
Ductwork$10–$25/linear foot

Sources: FieldCamp, Housecall Pro, PipelineOn (2026 pricing guides)

Hourly rate benchmarks

Service tierRate range
Basic maintenance$65–$100/hr
Standard service$80–$150/hr
Emergency / after-hours$200+/hr (1.5–2× multiplier)
Commercial work$200+/hr

Sources: FieldCamp, Housecall Pro 2026 Pricing Guide

Real-world install example

A 3-Ton Carrier residential install at $6,800 — line by line:

Line itemAmount
Revenue$6,800
Direct labor (2 techs × 7 hrs × $41/hr)−$574
Equipment (3-ton Carrier 16 SEER)−$2,100
Materials & supplies−$380
Subcontractors (electrical permit)−$175
Allocated overhead (14 hrs × $60/hr)−$840
Job profit$2,731
Job margin40.2%
Profit per hour$195/hr

This is what a profitable install looks like when you track every cost. Without overhead allocation, this job appears more profitable than $2,731 — that gap is the difference between profit on paper and profit in the bank.

Source: Oryx-Horn (2026 job costing guide)

Where the Money Disappears

Ten categories of profit leaks, ranked by typical annual cost for a $2M company:

LeakAnnual cost ($2M company)Ease of fix
Pricing errors (no price book, stale prices)$40,000–$80,000Medium
Missed revenue per call (no options presented)$50,000–$150,000Hard — behavior change
Unbilled time (drive, callbacks, diagnostics)$30,000–$60,000Medium
Callbacks and warranty rework$30,000–$120,000Medium
Material shrinkage (parts not billed)$20,000–$50,000Easy — truck audits
Marketing waste (no call tracking)$15,000–$40,000Easy — add tracking
Agreement underpricing$10,000–$30,000Easy — recalculate
Dispatching waste (poor routing)$20,000–$50,000Medium
Overhead under-recovery$15,000–$40,000Easy — recalculate
Slow pay and bad debt$10,000–$30,000Easy — collect at completion

Sources: ACHR News, ACCA, FieldEdge, Built on Tenth, Profitability Partners, ServiceTitan

Start here (quick wins)

Material audits, call tracking, agreement repricing, overhead recalculation, collect-at-completion policy. Each takes a day or less to implement and starts recovering money immediately.

Then fix pricing

Build or update the price book with loaded labor rate and current material costs. Highest-impact fix but requires more upfront work.

Then change behavior

Train techs on options presentation, implement callback root-cause tracking, improve dispatching. These are behavior changes that take 60–90 days to show results.

How to Find Your Leaks: The 5-Step Audit

Don't try to fix everything at once. Run this audit in order — each step takes 2–4 hours, and the first three usually find the biggest problems.

Step 1: The 20-job audit

Pull 20 recent completed jobs (mix of service, repair, install). For each one, calculate actual burdened labor cost (hours × loaded rate, including drive time), actual material cost (what was purchased, not quoted), and overhead allocation. Compare total actual cost to what was invoiced. If more than 5 of 20 jobs show actual margin 5+ points below target, you have a pricing or cost-tracking problem.

Step 2: The time audit

Pick one week. Track every tech's hours by category: billable service/repair, billable install, drive time, callback/warranty, shop/warehouse, admin/paperwork, idle/waiting. Calculate utilization rate (billable ÷ paid). Target: 70%+. Below 65% = leaking time.

Step 3: The material reconciliation

Compare materials purchased (supply house invoices) to materials billed to jobs (from your invoicing system) over the last quarter. The gap is your shrinkage rate. Over 5% = needs investigation.

Step 4: The callback review

Pull all callbacks from the last 90 days. Categorize by root cause: tech error, parts failure, customer education (normal operation perceived as problem), unrelated new issue (miscategorized — not actually a callback). Track by tech. If one tech drives more than 30% of callbacks, it's a training issue, not a company problem.

Step 5: The agreement audit

Calculate cost to deliver each agreement tier vs. what you charge. Factor in: actual visit time (not scheduled — actual), drive time, parts/consumables used, admin/scheduling cost, overhead allocation. If any tier costs more to deliver than it charges, that tier is losing money.

Break-Even: How Many Billable Hours Cover Your Overhead

Every service business has a break-even point in billable hours — the minimum your team must bill before you cover overhead.

Break-even hours = Total monthly overhead ÷ (Effective billing rate − loaded labor cost per hour)

Example: 5-tech company, $40K/month overhead, $85/hr effective billing rate, $45/hr loaded labor.

$40,000 ÷ ($85 − $45) = $40,000 ÷ $40 = 1,000 billable hours/month minimum

With 5 techs × 22 working days × 6 billable hours/day = 660 hours. That's only 66% of break-even. You need all 5 techs billing at 6+ hours/day, every day, plus utilization improvements or higher effective rates.

Sources: FieldCamp, ServiceTitan, Contracting Business

The utilization trap Industry average utilization is 65% — meaning 35% of paid time doesn't generate revenue. Top shops hit 75–80%. The difference between 65% and 75% utilization for a 5-tech team is roughly $50,000–$75,000/year in recovered revenue.
Sources (10)
  • ACCA — overhead allocation guidelines
  • Profitability Partners — loaded labor rate methodology
  • ACHR News — billable utilization benchmarks
  • FieldEdge — service business financial benchmarks
  • JordanWorx — cost-per-billable-hour pricing methodology
  • Built on Tenth — callback rate and margin benchmarks
  • Oryx-Horn — 2026 job costing guide, common margin errors
  • FieldCamp — flat-rate vs T&M comparison, G/B/B structure, 2026 job prices
  • Housecall Pro — 2026 pricing guide
  • PipelineOn — 2026 pricing benchmarks