Profit & Grit CFOs

Table of Contents

Profit & Grit Podcast

The Home Service Podcast for Trades Entrepreneurs​

Share this article

HVAC Maintenance Agreement Accounting: Cash Now, Cost Later

Tyler Martin, CPA and fractional CFO

Tyler Martin

Tyler Martin, CPA is a fractional CFO for home service companies and the founder of Profit & Grit CFOs.

He built and sold a CPA firm, then built an engineering services company to $25 million in annual revenue before selling it. He hosts Profit & Grit podcast.

More about Tyler →

12 min read

A $400 check collected in March isn't earned revenue until you perform the June and October visits. Until the labor is done, that cash is a liability tied to service you still owe.

I've watched owners see the deposit hit the bank, feel relief, and immediately treat it like operating profit. Then the calendar catches up. June and October arrive, technicians need productive hours, payroll is due, and the P&L no longer reflects the cash sitting in the account. The business looked healthy in March because the books recognized money before the company delivered the work.

That's the trap behind HVAC maintenance agreement accounting. A prepaid plan gives you cash now, but it creates a cost and service obligation later. The correct system keeps those facts visible at the same time. This is one piece of managing cash flow in a home service company. The full guide covers the whole system.

The Reality of Your March Check

Your customer pays $400 in March for a maintenance agreement. The first tune-up happens in June. The second happens in October.

The bank balance rises in March. Your obligation does too. You have the customer's money, but you haven't completed the labor that makes the payment earned. That means the check can fund the business temporarily, but you shouldn't treat it as free cash.

A common owner mistake is to post the entire payment to maintenance revenue in March. The P&L looks stronger than the operation really is. The balance sheet shows no reminder that two visits remain. By June, the company has already spent money that was committed to future technician time.

Practical rule: Cash received tells you what entered the bank. Completed service tells you what you earned.

The clean approach separates the two events. Record the cash when collected. Record deferred revenue for the unearned portion. Release revenue as each obligation is satisfied.

That distinction protects more than your income statement. It tells you how much of the cash balance is already spoken for. A maintenance agreement is a promise with a dollar value attached. Your books need to show both sides of that promise.

What a Maintenance Agreement Actually Is on Your Books

On your books, a maintenance agreement is a service contract. The customer pays before your team completes the promised work, so the unearned amount belongs in deferred revenue, also called a contract liability.

Deferred revenue is one piece of a bigger structure. How HVAC accounting should be set up shows where it sits alongside everything else.

That liability isn't debt in the same sense as a bank loan. It represents service you owe. When a customer prepays, you've received consideration before transferring the service. The liability remains until you satisfy the related performance obligation.

The accounting entry is straightforward:

  • Debit Cash for the amount collected.

  • Credit Deferred Revenue for the unearned amount.

When your technician completes the promised visit, you release the earned portion:

  • Debit Deferred Revenue for the amount earned.

  • Credit Maintenance Agreement Revenue for the same amount.

The income statement improves only when your team has delivered the service. That keeps revenue connected to production instead of collection timing.

The liability is operational information

A balance-sheet liability answers a question your bank balance can't. How much of this cash belongs to work that hasn't happened yet?

Annual plans are usually recognized over the contract term, monthly across a 12-month agreement, or as each scheduled visit is completed. Your policy needs to match what the agreement actually promises, and then stay consistent.

Don't treat deferred revenue as a compliance checkbox. Treat it as a trust account in your operating model. If the balance is understated, you'll overestimate profit and available cash. If it's accurate, you can plan labor, scheduling, and renewals with a clear view of what customers have already purchased.

How Deferred Revenue Works Month by Month

Use one agreement to test your process. A homeowner prepays $400 for an annual plan with two tune-ups, scheduled for June and October. If the plan's service value is split evenly between the visits, each completed visit releases $200 to revenue.

The cash enters in March. Nothing is earned in March, April, or May because neither visit has occurred. June releases $200. October releases the remaining $200.

MonthCash CollectedDeferred Revenue BalanceRevenue Recognized
March$400$400$0
April$0$400$0
May$0$400$0
June$0$200$200
July$0$200$0
August$0$200$0
September$0$200$0
October$0$0$200

The schedule ties. Total cash collected equals $400. Total revenue recognized equals $400. The ending liability reaches zero only after both promised visits are complete.

For a straight-line agreement, divide total contract value by the number of service months. Use that method when the contract provides a continuous stand-ready benefit or when the service pattern supports even recognition.

The mistake is not choosing one method over the other without thought. The mistake is posting the entire payment immediately and never tracking the remaining obligation.

What It Looks Like Across Your Whole Book

The portfolio math is simple. Active agreements times average agreement value equals total contracted value. A shop carrying 1,000 active agreements at an average of $400 is sitting on real money that customers have already paid for work nobody has done yet.

That figure isn't your deferred revenue balance, though. Subtract the revenue you've already earned on completed visits. What's left is the unearned portion of every active contract, which is what belongs on the balance sheet.

Why most shops show zero

Many HVAC companies have maintenance agreements in ServiceTitan, but no corresponding deferred revenue liability in QuickBooks. The owner sees membership sales reports, bank deposits, and revenue totals. The balance sheet says none of that cash remains committed.

That's not a harmless presentation choice. It inflates earned revenue in the sale month and hides the future labor obligation. The larger your membership base becomes, the more misleading the P&L gets when the liability is missing.

A practical schedule should include the customer, agreement start date, agreement end date, total value, promised visits or coverage, completed service, revenue recognized, and remaining deferred balance. The schedule gives your bookkeeper a controlled bridge from the field system to QuickBooks.

You don't need a complicated model to start. You need a complete one. If your current books show zero deferred revenue, compare the active agreement report to the work already delivered. The difference is where the liability is hiding.

The Number That Is Wrong in Almost Every Set of Books

The number that usually fails is the relationship between your ServiceTitan membership count and your QuickBooks deferred revenue balance. ServiceTitan tracks the operational agreement. QuickBooks tracks the accounting liability. Those systems won't tie unless someone defines the bridge and reviews it every month.

Four causes create most mismatches:

  1. Sales posted directly to income. The integration sends membership invoices to a revenue account instead of deferred revenue.

  2. Canceled agreements left active. QuickBooks continues carrying a balance after the field system has closed the contract, or the reverse occurs.

  3. Completed visits aren't released. Technicians finish work, but the accounting schedule never reduces the liability.

  4. Timing and mapping errors. Deposits, refunds, discounts, renewals, and journal entries land in different periods or accounts.

The monthly reconciliation

Start with the ServiceTitan agreement report. Filter for active plans, payments, scheduled visits, completed visits, cancellations, and refunds. Then compare the operational total to the QuickBooks deferred revenue schedule and general-ledger balance.

Your roll-forward should follow this logic:

Beginning deferred revenue + new cash billed or collected − revenue released − cancellations or refunds = ending deferred revenue.

Investigate every difference. Don't plug it with a journal entry just to make the reports agree. Find the customer, date, or mapping error that caused it. A clean reconciliation turns two competing numbers into one reliable operating figure.

How to Set It Up in QuickBooks

Create a dedicated liability account in QuickBooks called Deferred Revenue, Maintenance Agreements. Don't bury it inside generic sales or accounts payable. The account needs to be visible on the balance sheet and easy to compare with your agreement schedule.

Set the transaction flow

When the customer pays, post the receipt to cash and credit the liability account. If your invoice workflow requires an invoice first, map the maintenance agreement item to deferred revenue rather than maintenance income.

At month-end, release the earned amount with a journal entry:

  • Debit Deferred Revenue, Maintenance Agreements

  • Credit Maintenance Agreement Revenue

For a visit-based plan, release the portion tied to the completed visit. For a straight-line plan, release the calculated monthly amount. Keep the supporting schedule attached to the close file.

Assign ownership

Your bookkeeper should post and reconcile the entries. Your service manager should confirm completed visits and cancellations. You, as owner, should review the ending liability and ask whether it makes sense against the active membership base.

Add this to the close checklist:

  • Export the ServiceTitan membership activity.

  • Update the deferred revenue schedule.

  • Post the release entry.

  • Reconcile the schedule to QuickBooks.

  • Investigate exceptions.

  • Approve the ending liability balance.

If your field data and books don't connect cleanly, review ServiceTitan and QuickBooks Online integration before changing account balances manually.

What This Does to Your Cash Plan

Membership cash belongs in your forecast, but not in the category you probably use today. Put renewal receipts into the 13-week cash forecast when you realistically expect collection. Put the technician hours and related labor cost into the week when the visits will occur.

Those dates won't always match. That's the point.

A March renewal can improve your cash position in March while creating labor demand in June and October. If your forecast shows only the receipt, it overstates free cash. If it shows only the labor, it understates near-term liquidity. You need both lines.

Build the forecast in two layers

Receipts: Include expected membership collections, renewal timing, payment method, and known cancellations. Use realistic collection dates, not invoice dates.

Delivery costs: Schedule the expected tune-up labor, vehicle use, parts, and any related payroll impact in the service month. The accounting release and the cash forecast answer different questions, so don't force them into one line.

Your forecast should also show taxes, payroll, vendor payments, and capital purchases separately. Then you can see whether the cash from renewals supports a genuine surplus or merely bridges a future service commitment.

Use this 13-week cash flow forecast approach for an HVAC company to build the receipt and delivery views into one operating rhythm. The owner's decision is not “Can I spend the cash?” It's “What portion remains available after I fund the work already promised?”

Why a Buyer Looks at This First

Recurring revenue attracts buyers because it can make future operations more predictable. But recurring revenue only supports value when the contracts, service history, billing records, and accounting agree.

A buyer's diligence team will compare your membership report to bank deposits, revenue accounts, deferred revenue, cancellations, and completed work orders. If those records conflict, the buyer has to question more than maintenance accounting. They may question the reliability of your entire reporting system.

That creates an advantage for the buyer. They can demand cleanup, hold back part of the purchase consideration, or reduce the earnings figure used in valuation. The issue isn't that every mismatch destroys a transaction. The issue is that messy deferred revenue gives the buyer a reason to distrust the numbers. A good broker finds this before a buyer does, which is part of what you are paying one for.

Carry the value correctly

A proper liability schedule shows:

  • What customers have paid.

  • What service remains.

  • What revenue has been earned.

  • What cancellations or refunds changed.

  • Why the ending balance ties to QuickBooks.

That record supports the quality of your recurring customer base. It also helps a buyer distinguish genuine contracted service from revenue recognized early.

Read the broader framework for home services business valuation before you talk to a buyer. Your membership base can contribute to value, but only when your accounting carries the obligation accurately.

When It Is a CFO Job

A bookkeeper can enter transactions. A CFO makes sure the operating system explains what those transactions mean. I laid out where each role starts and stops in bookkeeper vs controller vs fractional CFO.

You need CFO involvement when the owner can't answer three questions quickly:

  1. How much deferred revenue do we carry today?

  2. Which scheduled visits create future labor demand?

  3. Why does ServiceTitan disagree with QuickBooks?

At that point, add a monthly scorecard with active agreements, cash collected, revenue recognized, ending deferred revenue, completed visits, cancellations, and forecasted service labor. Link it to the close process, not a year-end cleanup project.

That's the work I do with clients: accrual accounting, balance-sheet cleanup, ServiceTitan-to-QuickBooks integration, and 13-week cash forecasting. The useful engagement produces a reconciled schedule, an owner-readable scorecard, and a recurring meeting where decisions get made from the same numbers.

Don't hire a CFO to explain a broken report after the season ends. Hire one to make the report usable before you commit cash, labor, or valuation expectations.

Questions Owners Ask

Should maintenance agreement payments count as revenue when collected?

No. The unearned portion is deferred revenue until the related service is delivered. A two-visit plan releases revenue as each visit occurs.

How do I set up deferred revenue for service agreements in QuickBooks?

Create a dedicated liability account. Post collections there, then release earned revenue with a journal entry tied to completed visits or the contract's monthly recognition method.

Why doesn't my ServiceTitan membership count match my books?

Usually because of direct-to-income postings, canceled agreements, unreleased completed visits, or timing and mapping errors. Reconcile the operational report to the QuickBooks liability schedule every month.

Do maintenance agreements increase what my business is worth?

They can support business value when the agreements are active, serviced, documented, and accounted for correctly. A buyer will discount the story when the membership report and deferred revenue balance don't tie.


If your deferred revenue balance is a guess, that's usually where I start. Schedule a call and bring your membership report and last month's balance sheet.

Real Talk.
Real Profits.

A weekly show built for blue-collar entrepreneurs in the trades who want to grow, profit, and build something that lasts.

You’ll only hear from us when new episodes drop.
No spam, ever!

GET STARTED

Want to see what your numbers are actually telling you?

 Two ways to start. Pick whichever fits.

No pressure either way. Let’s chat!

Latest Podcast Episodes:

More Great Articles: