HVAC and Plumbing Contractor Bookkeeping in QuickBooks

Jul 9, 2026

PDF, JPG, PNG, BMP, HEIC, TIFF

Upload your bank statement

TL;DR: Cost every work order as its own job so parts, labor, and permits land on the ticket that earned them. Treat parts loaded on the van as truck stock until a tech uses them, and expense small consumables. Enter each supply house invoice as a vendor bill and match the one 30-day bank payment against the stack of bills instead of coding that lump to Materials. Book maintenance plan money paid up front as unearned revenue you recognize as visits happen, and issue a 1099-NEC to any unincorporated sub you pay $600 or more in the year.

Last updated July 2026.

Build a chart of accounts that matches how a trade shop earns money

A service contractor makes money three different ways, and your income accounts should show that split. Lump everything into one "Sales" line and you'll never know whether the maintenance side is carrying the install side or the other way around. Break income into service calls (the truck roll and diagnostic work), installs and replacements (a new condenser, a water heater, a panel swap), and maintenance agreements (the recurring plan revenue). Three income accounts, plain and simple.

Do the same on the cost side. Materials is the small stuff: fittings, wire, refrigerant, solder. Equipment is the big serial-numbered units you resell into a job. Subcontractors is labor you pay outside your own payroll, and permits are the jurisdiction fees you pull for a job. Here is a starter layout.

AccountType in QuickBooksHolds
Service Call IncomeIncomeDiagnostic and repair tickets
Install / Replacement IncomeIncomeNew equipment jobs
Maintenance Agreement IncomeIncomeRecognized plan revenue
COGS - MaterialsCost of Goods SoldParts and consumables used on jobs
COGS - EquipmentCost of Goods SoldFurnaces, heaters, panels resold
COGS - SubcontractorsCost of Goods SoldOutside labor on jobs
COGS - PermitsCost of Goods SoldPermit and inspection fees

None of this works unless the costs land on the right job. If you're behind on data entry and just need clean statements to start from, you can turn a PDF statement into a .qbo file and import a full history in a few minutes rather than keying it by hand.

Truck stock: inventory until a tech pulls it off the van

Parts loaded on a truck are technically inventory. You bought them, they have value, and they sit on wheels until a technician installs them. Strictly, that value should stay on the balance sheet as an asset and move to COGS only when the part goes into a job. A shop running full inventory tracking in QuickBooks does exactly that: parts are inventory items, and each work order relieves stock and posts cost.

For a lot of small shops that is more machinery than the business needs. The test is materiality: if the value of stock on your trucks is small and roughly constant month to month, it's reasonable to expense parts to COGS - Materials when you buy them and skip perpetual inventory. Once you're stocking whole compressors or a rack of water heaters on a box truck, the dollars get big enough that you want real inventory so your margins and your balance sheet stay honest.

The supply house account and why the lump payment is a trap

You buy on 30-day terms from Ferguson, Winsupply, Grainger, or a local jobber, so a month of counter tickets piles up before you pay. Then you cut one check or one card payment that clears many invoices at once. That single bank line is where job costing goes to die if you handle it lazily.

The right sequence: enter each supply house invoice as a vendor bill in QuickBooks, coded to the job it was for, as it comes in. When the monthly payment clears, record a bill payment covering those bills, then match the bank feed line to that payment. If you'd rather pull the line items off those vendor invoices into a spreadsheet before you enter the bills, that can speed up a heavy month. The point is that the costs were already booked to jobs before the money moved.

Code the lump payment straight to COGS - Materials instead and two things break. None of that cost attaches to a customer or job, so your job profitability reports are fiction. And the timing is wrong: the expense hits on the pay date, not when the parts were consumed, which smears your margins across months. Bills first, payment matched second. This is the discipline that makes job costing in QuickBooks produce numbers you can trust.

Field service software deposits are net of fees

ServiceTitan, Housecall Pro, and Jobber take card payments for you and deposit the money net of processing fees, so the amount that hits your bank never equals the invoices you wrote. If you match the deposit to the invoices, you'll be off by the fees every single time and your revenue will read low.

Work a real day. Say you collected $4,200 across 12 jobs, and the processor charges 2.9% plus $0.30 per transaction. The percentage fee is 2.9% of $4,200, which is $121.80. The per-transaction fee is 12 times $0.30, which is $3.60. Total fees are $125.40, so the deposit lands at $4,074.60.

  • Gross card revenue: $4,200.00
  • Percentage fee (2.9% of $4,200): $121.80
  • Per-transaction fee (12 x $0.30): $3.60
  • Total merchant fees: $125.40
  • Net bank deposit: $4,074.60

Book the full $4,200 as revenue and the $125.40 as a merchant fee expense. The bank deposit of $4,074.60 is the revenue minus the fee, so everything reconciles and your top line reflects what customers actually paid. Our walkthrough on recording credit card processing fees in QuickBooks covers the deposit entry and the clearing account approach in more detail.

Maintenance agreements: cash now, revenue later

When a customer prepays for a year of seasonal tune-ups, that cash is not revenue yet. You haven't done the work. Book the payment to an unearned revenue liability (Other Current Liability) and recognize it into Maintenance Agreement Income as each visit is performed. Sell a $200 plan with two visits and you move $100 to income when you complete the spring visit and the other $100 after the fall visit.

This keeps you from reporting a big paper profit in the month you sell a batch of plans, and it shows a real liability for the visits you still owe. If you sell plans by the hundreds every fall, that balance is a number you should be able to defend.

Subcontractors: W-9 first, 1099-NEC at year end

When you bring in an outside crew or a specialty tech you don't carry on payroll, collect a completed W-9 before you pay the first invoice. Chasing a tax ID in January after the sub has moved on is miserable. At year end, if you paid an unincorporated subcontractor $600 or more during the calendar year, you file a Form 1099-NEC. That $600 figure is the current IRS threshold, stated plainly.

Set each sub up as a vendor, flag them as 1099-eligible, and code their pay to COGS - Subcontractors. QuickBooks totals each vendor's payments for the year so you can file. Payments made by credit card are reported by the processor on a 1099-K, so exclude those from your 1099-NEC amounts to avoid double counting.

Warranty callbacks: cost with no revenue

A callback on a job you already invoiced brings a truck, a tech, and sometimes a replacement part, and you bill the customer nothing. That's labor and parts cost sitting against zero revenue. If you bury callback cost in general overhead, every install looks more profitable than it really is.

Track callbacks against the original job or to a dedicated Warranty / Callback cost item so you can see them. When you pull the job profitability report on an install, the callback cost that followed it drags the margin down to the truth. A shop that never measures callbacks can't tell which crews or equipment lines quietly eat the profit on otherwise good jobs.

See the profit on each truck

Every van has its own fuel, maintenance, insurance, and registration cost, and those add up fast. Give each truck a class in QuickBooks (or a customer-style tracking record) and code fuel receipts, oil changes, and repairs to it. Run a profit and loss by class and you can see which truck and tech pair is earning and which one is burning fuel driving to callbacks.

Reconcile and catch up when the bank feed runs dry

QuickBooks bank feeds usually reach back only about 90 days. If you've fallen behind, or you're setting up a shop that has been running out of a checkbook and a shoebox, the feed simply won't hand you the older transactions. That's where the statements themselves come in. Download the monthly PDFs from your bank and card portals, import the old statements into QuickBooks by converting each one to a .qbo Web Connect file, and you get a clean, categorizable history to reconcile against.

This is the fastest way to get a trade business current. Contractors running heavy material and equipment jobs can see the same approach applied to project accounting in our guide to bank statement to QuickBooks for construction. For the trade-specific setup, the bank statement to QuickBooks for HVAC and plumbing contractors page walks through the whole conversion, and once the money is in, the undeposited funds account keeps your customer deposits matching the real bank deposits.

Frequently asked questions

Can you use QuickBooks for an HVAC business?

Yes. QuickBooks Online or Desktop handles HVAC bookkeeping well once you set up job-level income and cost accounts and turn on class or project tracking. Most field service apps like ServiceTitan and Housecall Pro sync to it. Larger shops add inventory for truck stock and equipment, while a solo tech can run it lean.

How do I record parts used in QuickBooks?

If you track inventory, add the part as an inventory item and let the work order relieve stock, which posts the cost to COGS automatically. If you don't track inventory, enter the purchase as a non-inventory item or a bill coded to COGS - Materials and assign it to the customer or job so it shows up in job costing.

What is the best accounting software for plumbers?

QuickBooks Online is the most common choice for plumbers because it covers invoicing, expenses, payroll, and reporting, and it integrates with field service tools like Jobber and FieldPulse. A solo plumber can run basic books, and a larger company can add classes, projects, and inventory for parts tracking across trucks.

How do I record materials purchases in QuickBooks?

Enter each supply house purchase as a vendor bill coded to the job it was for, then pay the bill when your 30-day statement comes due. Match the single bank payment to that bill payment, not straight to an expense account. Coding the lump payment directly to Materials strips the job detail and breaks your costing.

Do I need to send a 1099 to a subcontractor?

Yes, if you paid an unincorporated subcontractor $600 or more by cash, check, or bank transfer during the calendar year, you file a Form 1099-NEC. Collect a W-9 before the first payment so you have their tax ID. Payments made by credit card are reported separately by the processor on a 1099-K.

Convert your first statement free.

Upload a PDF bank statement, get a QuickBooks-ready .qbo back in seconds. No card to try it.