Bookkeeping, payroll, and tax services for small businesses across the Valley of the Sun.

Call or Text: (602) 730-4560

How do I account for service agreements and maintenance contracts in my HVAC business?

When a customer pays $300 upfront for an annual maintenance agreement, that $300 is not revenue yet. You received the cash, but you haven’t done the work. The accounting term for this is deferred revenue, and it sits on your balance sheet as a liability until you perform each service visit.

Here’s a simple example. You sell a maintenance contract in January for $300 that covers two visits, one in spring and one in fall. When the customer pays, you record $300 as cash in and $300 as deferred revenue. Your revenue stays at zero because you haven’t earned anything yet. When you complete the spring visit in April, you move $150 from deferred revenue into service revenue. Same thing when you complete the fall visit in October. Now the full $300 has been earned and your liability balance is zero.

This matters more than most HVAC owners realize. If you’re booking the full contract amount as revenue when collected, any month with heavy renewals looks artificially profitable. Then the months where your techs are actually out performing those visits show no contract revenue at all. Your monthly P&L becomes unreliable, and you can’t tell whether the business is genuinely profitable in a given month or just benefiting from collection timing.

The recognition method depends on how your contracts work. If the agreement covers a fixed number of visits, recognize revenue per visit. Two visits means half per visit. Four visits means a quarter per visit. If the contract is more of a monthly retainer that includes priority service and discounts, recognizing revenue evenly each month makes more sense. Pick the method that best reflects when you’re actually delivering value and stick with it.

In QuickBooks Online, set up a liability account called Deferred Revenue or Unearned Service Revenue. When you receive payment, record it to that account instead of an income account. As each visit is completed, create a journal entry moving the appropriate portion from the liability account to your service revenue account. It takes a few extra minutes per contract but the accuracy is worth it.

This is especially important if you’re growing your contract base. A business that goes from 50 contracts to 200 contracts in a year could show a huge revenue spike from collections that doesn’t reflect actual service delivery. Lenders and potential buyers look at this, and so should you when making hiring or equipment decisions. Skilled trades businesses that get this right have a much clearer picture of their real margins.

If your books currently lump contract payments into revenue when received, a cleanup is straightforward. Go through active contracts, figure out what’s been performed versus what’s still owed, and adjust accordingly. Phoenix bookkeeping services built around your specific business model can set this up properly from the start so your financials reflect reality every month.

Your Valley of the Sun Bookkeeper

The Next Step:
A Quick Conversation

Tell us what's going on with your books. We'll listen, ask a few questions, and give you a clear quote with no surprises.

More Questions

How do I calculate payroll tax obligations for a small business with both W-2 and 1099 workers?

W-2 employees require federal and Arizona state tax withholding, plus employer-paid FICA, FUTA, and SUTA. 1099 contractors handle their own taxes entirely. You just need to issue a 1099-NEC for payments over $600.

Read answer

What bookkeeping system should I use to track insurance reimbursements by payer for my medical practice?

Use your practice management system for claims and aging, then reconcile monthly into QuickBooks Online. Set up each insurance payer as a customer in QBO so you can track payments, denials, and adjustments by payer.

Read answer

What expenses can I deduct on a rental property that has no tenants during renovation?

Renovation costs get capitalized into the property basis, not deducted. Carrying costs like mortgage interest and property taxes can be deducted or capitalized. Insurance and utilities are deductible once the property has been placed in service.

Read answer

What insurance costs should a contractor track by job versus as overhead?

General liability and workers comp premiums tied to job payroll should be allocated per job. Builder's risk and project-specific bonds are direct job costs. General commercial policies, office insurance, and bonding capacity costs are overhead.

Read answer

How should a property management company report owner distributions and management fees?

Collect rent into a trust account, transfer your management fee to your operating account as income, and distribute remaining funds to owners with a monthly statement. Issue 1099s to owners at year end and keep trust and operating accounts strictly separate.

Read answer

How do I handle bonding and insurance costs in my cleaning business books?

Surety bond premiums and general liability insurance are deductible business expenses that belong in their own categories. Workers comp should be allocated to labor costs rather than lumped with other insurance. Tracking each type separately gives you accurate job costs and cleaner books at tax time.

Read answer

Phoenix-based bookkeeping firm serving small businesses across the Valley of the Sun. We provide bookkeeping, payroll, tax preparation, and fractional CFO support with transparent pricing and no upselling. Owned and operated by David Morrow, a former COO with 20+ years of business experience.

Client Reviews

5-Star Rated Firm

Social

  • QuickBooks Online Certification Level 1 badge
  • QuickBooks Online Certification Level 2 badge
  • QuickBooks Online Payroll Certification badge

© 2026 2Morrow Bookkeeping LLC