Serving Trades Contractors Nationwide  ·  Based in Baton Rouge, LA
(225) 274-6576 info@911bookkeepers.com Free Consultation →
BOOKKEEPINGOctober 10, 2026
BOOKKEEPING

Bookkeeping for HVAC Companies: A Complete Guide to Job Costing, Cash Flow, and Financial Clarity

911 BOOKKEEPERS
BUILT FOR THE TRADES

Most HVAC business owners know how to run a great service call. What they often don't know is whether that call actually made them money. That gap between revenue and real profitability is where bookkeeping for HVAC companies gets complicated, and where most standard accounting approaches fall short.

Generic bookkeeping wasn't built for a business where a large share of annual revenue lands in a few peak months, and where a single install can look profitable on paper while quietly bleeding margin through equipment costs, financing fees, and misallocated labor. Without the right structure, your books tell you what came in, but not what you kept.

This guide covers how to set up a chart of accounts designed for HVAC, apply job costing across your service lines, recognize maintenance agreement revenue correctly, manage seasonal cash flow, and connect field service software like ServiceTitan or Housecall Pro to your accounting system.

Why Standard Bookkeeping Fails HVAC Contractors

Seasonal concentration is the first structural problem. HVAC revenue piles up in peak cooling and heating seasons, so a monthly P&L is a snapshot of one moment in a very uneven cycle. A strong June report doesn't predict September cash.

The consequences are real. Picture a contractor with $2.1 million in annual revenue whose operating account holds $41,000 at year-end. By every top-line measure the business looks healthy, but it's one bad month from a cash crisis. Revenue and available cash are two different things, and standard bookkeeping rarely makes that visible until the damage is done.

Three service lines, one useless P&L. Service calls, residential replacements, and commercial installs carry completely different cost structures. A service call might use $50 in parts. A residential replacement involves $5,000 or more in equipment. A commercial install runs for weeks with subcontractors, permits, and staged billing. Lumping them into one revenue line and one cost line produces a blended number that represents none of them.

A default chart of accounts makes this worse by design. Generic templates group all revenue together and all labor together, which makes it impossible to answer the question behind every pricing and hiring decision: which service line is actually profitable?

Cash-basis bookkeeping amplifies every problem above. Most small contractors record revenue when cash arrives, not when the work is performed. That inflates reported income in peak season and collapses it in slow months, making trends unreliable and planning nearly impossible.

The Real Math Behind an HVAC Job

Take a standard $12,000 residential system replacement. Once equipment, materials, and direct labor are counted, it might leave $4,600 in gross profit, under 39%, before rent, insurance, office staff, or trucks get a dollar.

Now add two costs most HVAC books never capture at the job level.

The financing fee drain. Promotional financing is now standard in residential replacements, and the dealer fees run roughly 8% to 12% of the financed amount. On a $12,000 job at 10%, that's $1,200 gone before the tech leaves the driveway. In a standard setup, that fee posts to a general finance expense account and never connects back to the job. The margin loss is real; the reporting just hides it.

The labor burden gap. When a job shows $1,500 in direct labor, that usually reflects the tech's hourly wage and nothing else. Once payroll taxes, workers' comp, benefits, and vehicle costs are added, the true cost per labor hour is substantially higher. Multiplied across every job in a month, the understatement adds up fast.

What blended averages hide. Without job-level data, owners judge performance by totals. Those totals average the profitable jobs with the losers. The $18,000 commercial job that ran a 42% gross margin and the $9,000 replacement that finished at 19% disappear into the same average.

Job costing isn't an advanced feature to add once the business stabilizes. It's the foundation every other report depends on.

Setting Up Your Chart of Accounts for HVAC

The default chart of accounts problem

A generic chart of accounts gives you one or two revenue lines and broad cost buckets like "Cost of Goods Sold" and "Labor." That works for a retailer selling one product category. It fails an HVAC business running three distinct service lines.

The HVAC revenue structure

At minimum, set up four revenue categories:

Maintenance agreements need their own revenue account because the recognition rules are different. Mixing them into service revenue distorts both.

Direct cost accounts

The cost side mirrors the revenue structure: equipment and materials, direct labor (with burden), subcontractors, and permit and inspection fees. Tracking permits separately matters because they vary a lot between residential and commercial work and get lost inside a generic "materials" bucket.

Tracking categories vs. account codes

In Xero, the way to split costs by service line is usually tracking categories, not more account codes. Creating separate accounts for every cost type across every service line produces a chart of accounts with hundreds of lines that becomes unmanageable within months. A tracking category lets one "Direct Labor" account carry costs for service calls, replacements, and commercial jobs, with the service line captured separately. Set up at the start, it produces clean service-line margin reports. Retrofitted later, it creates reconciliation headaches.

911 Bookkeepers builds Xero charts of accounts for HVAC contractors, including the account structure and tracking categories needed for service-line margin reports from the first month.

Job Costing for Each HVAC Service Line

Service and diagnostic calls

Service calls are high-volume and low-ticket, so the goal isn't per-job precision but technician efficiency. The metrics that matter are average revenue per call, parts cost per call, and labor time versus billed hours. Standardize your call types in your field software, then review the patterns by technician each week. Deviations tell you more than any single job record.

Residential system replacements

This is where job costing has the biggest dollar impact. Three margin leaks drive most residential problems: equipment costs that come in above the quote, financing dealer fees that never get allocated to the job, and installation labor overruns. Each needs its own cost line on the job. Lumping them into one "cost of goods" line makes it impossible to see what went wrong.

Commercial installations and work in progress

Commercial jobs create a timing problem service calls don't have. A job running three to six weeks piles up labor, materials, and subcontractor costs early, but revenue may not be recognized until milestones are reached. Expensing those costs in the month they're incurred while the revenue waits distorts your monthly margins.

The fix is a work-in-progress (WIP) asset account. Job costs post to WIP instead of cost of goods sold, then move to cost of goods sold when the related revenue is recognized at a milestone or completion. In Xero, that transfer is typically a journal entry your bookkeeper makes when the milestone is billed, and it's exactly the kind of step most contractors skip.

Reading the numbers

As a rule of thumb, service calls usually carry the highest gross margins, residential replacements come next, and commercial installs run thinnest. If your service call margin is lower than you expected, the job records will show whether labor overruns or parts costs are the culprit. Without that data, the number is a warning with no address.

Connecting ServiceTitan and Housecall Pro to Your Books

ServiceTitan and Housecall Pro hold thousands of completed jobs with invoiced revenue, labor time, and parts costs. None of that reaches Xero correctly by default. The result is two versions of business performance that rarely agree: the field software shows one revenue number and the accounting system shows another.

Why the gap is worse than it looks

Owners check ServiceTitan or Housecall Pro for revenue, then Xero for cash, but neither shows true job-level profitability. Revenue gets recorded while job costs stay stranded in the field software, so the margin figure in Xero ends up a blended estimate.

What a properly configured integration does

A correctly mapped connection pushes invoiced revenue and payment status into Xero with matching job references. For Xero users, that connection may be ServiceTitan's limited-release native integration or a third-party connector, since Housecall Pro's built-in sync is QuickBooks only. The key word is "mapped." Revenue categories, cost types, and tax treatments all have to be matched to the right Xero accounts before the sync produces usable data.

What still needs manual reconciliation

Some costs never travel through the automated connection:

Each needs a defined process to attach the cost to the right job. Without one, those costs land in general expense accounts and never reduce the job's reported margin.

911 Bookkeepers sets up ServiceTitan and Housecall Pro connections to Xero for clients, whether through a native integration or a third-party connector, including the account mapping, the sync settings, and the reconciliation process for costs the connection can't carry.

Managing Seasonal Cash Flow as an HVAC Business

Even perfect job-level data won't protect you from the cash squeeze that catches contractors every fall, because that problem is structural.

Monthly P&Ls are the wrong tool for a seasonal business. A strong June and July generate real profit, but that profit has to fund August payroll, September truck payments, and October insurance renewals. By the time a monthly P&L shows a September shortfall, the cash is already gone. A rolling cash flow forecast shows the shortfall coming.

Build a shoulder-season reserve, then protect it

A common rule of thumb is a reserve covering 60 to 90 days of fixed operating expenses: payroll, insurance, lease payments, and debt service. Keep it in a separate account, not the operating account, because money sitting in operating during a busy July tends to get spent before fall arrives. Calculate your fixed monthly overhead, multiply by two or three, and move that amount out of operating by the end of August.

Use forecasting as a forward view

Xero's cash flow tools can project your position over the coming weeks based on outstanding invoices, scheduled bills, and bank balances. That's a forward view. A month-end P&L is a rearview mirror.

Report weekly during shoulder seasons

Monthly reporting isn't enough once September arrives. A cash problem spotted in the first week of October can be fixed: draw from the reserve, speed up collections, delay a discretionary purchase. The same problem spotted at November month-end often can't be fixed before payroll is at risk.

Keep receivables and cash separate in your forecast

Commercial jobs invoiced in Q3 often collect in Q4. High receivables make the business look liquid when actual cash is thin, so your forecast should show receivables and bank cash as separate lines. An invoice doesn't pay a November bill until the check clears.

Maintenance Agreement Revenue Recognition Done Right

Under accrual accounting, revenue is earned when the service is delivered, not when cash is collected. Recording a prepaid agreement as income on receipt overstates the collection month and understates every month after.

The distortion in real terms

Say you collect a large batch of annual agreements in October. Recorded immediately, October looks great and the following months look soft, because no comparable lump sum arrives. Trend lines become meaningless and budgets built on them become unreliable.

How to set this up in Xero

Xero's repeating manual journals can handle this once the template is built, often one per group of agreements by start month.

Agreements as a business asset

The total value of active agreements is worth tracking on its own. It's contracted future revenue, and it carries real weight in any conversation about what your business is worth.

Signs Your HVAC Books Need a Specialist

911 Bookkeepers works with HVAC and trade contractors in exactly this position: Xero setup with an HVAC chart of accounts, job costing across all three service lines, ServiceTitan and Housecall Pro integration, and monthly bookkeeping built around how a field service business actually runs.

Getting Your HVAC Finances to Work as Hard as You Do

HVAC bookkeeping takes five pieces working together: a service-line chart of accounts, job costing across all three service types, field software connected to your accounting, deferred revenue for maintenance agreements, and a seasonal cash flow forecast. Remove any one, and the others lose their meaning. Revenue is not profitability.

Your next three audit steps

Those three checks take less than an hour and will show you how much structural work your books need. If you'd rather have it built correctly without doing it yourself, book a free call with 911 Bookkeepers.

Related reading

Jeremy Brewer is the founder of 911 Bookkeepers LLC in Baton Rouge, Louisiana. He worked in the field as an HVAC tech before building books for the trades, and he serves as a licensed paramedic in EMS. He is a Xero Certified Advisor.

Your books shouldn’t be a 911 situation.

Book a free 30-minute financial checkup and find out exactly where your business stands.

Book Your Free Checkup Call (225) 274-6576

← Back to all posts