
Busy but Broke: The Simple System That Shows You Exactly Where Your HVAC Profit Is Leaking
You booked a packed July. Ran calls till two in the morning. Trucks didn't stop.
And you still opened your banking app on the 1st and wondered how you were going to cover the mortgage.
I see it constantly. A shop doing a million, two million a year, busy as anything, and every month it's a knife fight to make payroll. Busy but broke.
That's not a revenue problem. You've got plenty of revenue. The problem is you can't see where it's going and you can't fix what you can't see.

Revenue is vanity. Profit is sanity. Nobody pays their mortgage with revenue. They pay it with what's left after the work is done. And if you can't tell me how much you actually keep, and why it's that number and not a bigger one, that's the whole problem, and it's fixable.
Sarah Gonzales had me on as a guest for Episode 1 of her show, The HVAC CEO Podcast, to break down the money side of running an HVAC business. The full episode's embedded at the bottom.
Net Is the Bottom Line so Start There
Net profit is the bottom line. Literally, it's the last line on your P&L, the money you take home after everything's paid. It's the result and the goal. So that's where you start. Every month you look at one thing first: did I hit my net target, or not?
Hit it? Good. Nothing to chase, but maybe some to optimize.
Miss it? Now you dive deeper and there's an order to it. You don't go poking around at random. You follow the money down, one level at a time, until it tells you exactly where the leak is. That drill-down is the whole point of this post.
Miss It? Gross Profit Is Your Next Stop
When you miss on net, the first place you look is gross profit percentage, company-wide.
This one number is the fork in the road. It tells you which direction your problem is in:
Gross profit % is low too? The leak's above the line in your jobs. You're not making enough on the work itself. That's the next section.
Gross profit % is right where it should be? Then your jobs are fine. The leak's below the line in your overhead. You're making good money on the work and giving it back somewhere else. We'll get there.
That's the whole diagnosis in one move. Net at the top. Miss it, check gross profit %. That number points you one of two ways: into your jobs or into your overhead. You never have to guess which.
When Gross Profit's Low: Go By Job
Say your gross profit % came back low. Now you drill in and you look at gross profit by job. Not by month. By job.
Here's why by job. Look at it once a month and your reaction time is shot. Equipment prices crept up three weeks ago? You won't feel it until the month closes, and by then you've run twenty more jobs at the wrong price. By job, you know the second the truck pulls away whether you made money on that work. Did I make money on this one? If not, why? Did I underprice it, or underbid it? You catch it while it's still one job, not twenty.
And here's where this number lives: your field service software. ServiceTitan, Housecall Pro, Jobber; whatever you run jobs out of. That's where job costing belongs, because that's where the job is. The materials, the labor hours, the parts. Do not try to rebuild job costing inside QuickBooks after the fact. QuickBooks isn't built for it and you'll lose your mind. Jobs live in the FSM. QuickBooks handles overhead, and we'll get to that.
So how do you build the number? Say you did a $10,000 install. Three things come out before you get to gross profit:
Materials. All of it: equipment, every consumable, every part. What did it physically cost you to do this job?
Labor, fully loaded. This is where most guys get it wrong. Not what you pay the tech per hour. What the tech costs you including wage plus payroll taxes, comp, benefits, the whole burden. Your $30/hour guy is not a $30/hour cost. He's closer to $52. If you've never run that math, do it! I walked through the whole thing in my labor burden guide, and it's almost always higher than people think.
The little job-specific costs. Pulled a permit? Cost of the job. Customer paid by card? There's your ~3% processing fee so put it in cost of goods. The test: anything you spent to do this install, that you wouldn't have spent just to keep the lights on, belongs in the job.
What's left is your gross profit on that job. Do it every time and you find exactly which jobs, and which job types, are dragging your number down.

What Good Gross Profit Looks Like
What should these come back at? Here's roughly what we see (it moves by region):
Blended, whole company: shoot for 50%+.
Install: usually the lowest 42-52% but compensates with higher revenue.
Service: the strong one at 55–65%. This is what pulls the whole company up.
Maintenance: runs a poor margin on its own, because the customer prepaid it. Don't kill it anyway because maintenance is what feeds your service and install calls by keeping you relevant and in the home.
That's why "just send me installs" is a trap. The healthy shop runs a blend and knows the margin on each leg of it. When you go by job and a whole category is coming in under these, that's your leak.
When Gross Profit's Fine: Dig Into Overhead
Now the other branch. Your gross profit % is healthy, but net's still short. That means your jobs are making money and it's disappearing somewhere below the line. Time to dig into overhead.
This is where QuickBooks does its job. Overhead is everything that costs you money whether or not a single job got done today. Things like rent, office wages, software, marketing, insurance, truck payments. QuickBooks rolls it all up, and the number to watch is overhead as a percentage of revenue. Rule of thumb, it runs around 20-35%.
Overhead is where I watch the most shops bleed, especially in the $1M–$2M range when you're pushing to grow. Growth eats cash. You've got to buy the truck, upgrade the shop, put more into marketing. The trick is buying enough to have room to grow without going cash-poor and plenty of shops with great gross profit get eaten alive by overhead they took on too fast.

I'll tell you who I bet on. The guy doing two million out of a truck with a sticker he bought off Amazon and a website that's honestly a little embarrassing. That guy hustled, saved every dollar, put it back into the work, and delivers an A-plus install every time. Sky's the limit for him. The one I worry about is the guy who dropped fifty grand on a website before he's done fifty grand in revenue. Over-engineered, out ahead of his own numbers.
Be the scrappy one. You should be more profitable with less overhead, not less.
The Whole Thing, Start to Finish
Here's the entire system in four lines:
Net. Hit your target? Done. Miss it? Keep going.
Gross profit %. Low? Your problem's in the jobs, go to step 3. Fine? Your problem's overhead, skip to step 4.
Gross profit by job. Drill in and find which jobs or job types are under. Fix it at the pricebook, in your FSM.
Overhead. Pull your overhead as a percent of revenue in QuickBooks and find what crept in.
Three levels, and each one hands you off to the next until you're standing on the exact problem. No guessing. No "I'm busy, why am I broke." You'll know.

The Stages Where the Question Changes
The right money move depends on your stage. A few checkpoints I walk people through:
Before you go solo know your survival number. However long you think it'll take to get profitable, multiply it, because you'll hit capital hits you didn't plan for. You want 6 to 12 months of runway banked before you launch. Ten grand is not a plan. And get the household on board first as this takes everything you've got, and you need the people at home behind you.
Start with side work, done right. Best on-ramp there is. But do it properly: LLC, EIN, and open a business checking account and run every expense through it. Don't mix your Netflix bill in with your job costs. It wrecks your books, and it hands the IRS a reason to question all of them.
The first hire around $300K–$500K. This is where you physically can't do all the work. Ride the wave until you've got cash to survive the growth, because you'll buy a truck, spend on training, and make one wrong hire because everybody does. When you go, buy experience: a mid-to-high-tier tech or a solid sub. Hire fast once you're ready, but be willing to review, hire, and fire faster than feels comfortable.
$1M–$2M and up. Now it's overhead discipline and a real departmental P&L. Seeing install vs. service vs. maintenance so you know which side is carrying the other.
I built the two-number-per-stage system into a free guide: Managing the Books at Every Stage
And a full Solo HVAC Contractor Financial Checklist for anyone getting ready to make the leap.
Clean Books and a Second Set of Eyes
None of this works without clean books. Get on QuickBooks from day one, before you even go solo. It invoices, it keeps your numbers in one place, and it gives your accountant something clean to work from. Pair it with your FSM and you've got both halves; jobs in the field service software, overhead in QuickBooks.
The real value of a bookkeeper shows up the moment you start to hire. That's when a fractional bookkeeper, someone who only charges for the time actually spent on your books, keeps things clean enough to make good calls. You'd hate to run even a small shop that isn't profitable and not know it.
And get a second set of eyes on the money. I had an owner come to us just wanting a routine second look. Nothing dramatic. We ran our normal deep diagnostic and found their existing bookkeeper, the person already paid to do this, had been writing themselves checks; twelve grand, in a single month. They caught it only because they asked someone to look. Clean books and a second pair of eyes beat trust every time.
The Bottom Line
If I could leave you with one thing about the money: know your numbers. Good or bad.
It starts with clean books and a clean system; the FSM for your jobs, QuickBooks for your overhead. Watch your net; that's the score. And when it comes up short, you've got a drill-down now instead of a panic: gross profit %, then by job or overhead, one level at a time until you're standing on the leak.
The numbers are only boring when you're scared of them. The day they start moving the right way, they're the most motivating thing in the business.
You didn't get into the trades to sit in QuickBooks. That's what we're here for. If you want someone to get your books clean and show you your real numbers, that's what a Profit Leak Audit is.
Book a Free Profit Leak Audit: https://meet.acc4t.com/discovery
No pitch. Just a real look at your numbers and where they're leaking.
Catch the Full Conversation on The HVAC CEO Podcast
All of this came out of a conversation I had as a guest on The HVAC CEO Podcast, hosted by Sarah Gonzales. Episode 1 runs the money side start to finish, plus a lot that's more her world than mine like hiring in a labor shortage, who should really be answering your phones, and how AI is changing the way homeowners pick a contractor. Sarah runs an HVAC-only marketing agency and knows this space cold, so it's worth the listen either way.
The HVAC CEO Podcast, Episode 1 — hosted by Sarah Gonzales of RS Gonzales. Watch on YouTube
Frequently Asked Questions
Q: Gross profit or net profit — which one matters?
A: Net is the goal; it's the bottom line, what you keep. It's where you start every month. But when net's short, gross profit is how you diagnose it; a low gross profit % points you into your jobs, a healthy one points you into your overhead. Net tells you that you have a problem; gross profit tells you where.
Q: Should I track job costs in QuickBooks?
A: No. Job costing belongs in your field service software, ServiceTitan, Housecall Pro, Jobber, because that's where the job actually lives. QuickBooks handles overhead and the company-wide picture. Rebuilding job costs in QuickBooks after the fact is a headache that never quite works.
Q: What's a good gross profit margin for HVAC?
A: Aim for a blended 50–55%. Service runs higher (55–70%), install lower (45–50%), and prepaid maintenance runs thin on its own but feeds profitable service. The blend matters more than any single job type.
Q: Why gross profit by job instead of by month?
A: By-month is a rearview mirror, it tells you something went wrong weeks after you could've fixed it. By-job tells you the moment a job closes whether you made money, so you catch a pricing or cost problem while it's still one job. You only need to go this deep once your company-wide gross profit % tells you the jobs are the problem.
Q: My gross profit's fine but I'm still broke. What now?
A: Then your jobs aren't the problem, your overhead is. Pull your overhead as a percent of revenue in QuickBooks (should be around 20-35%) and find what crept in. That's your below-the-line leak.
Q: How much runway do I need before going solo?
A: Six to twelve months of living expenses banked. Whatever timeline you think it'll take to get profitable, assume longer and more expensive, because it always is.





