Back to the blog

October 19, 2026 · 11 min read

Bookkeeping for Pool Service Companies: Recurring Routes and Chemical Costs

By 909 Bookkeeping

How to track recurring pool routes and chemical costs in QuickBooks Online. Keep plan income apart from one time cleanups, tie each chemical and each mile to the route that used it, and match every plan payment to the bank so your real margin shows for each route. Plain English from 909 Bookkeeping.

Trade illustration for this bookkeeping guideA flat illustration of a pool with a skimmer and a chemical bottle, showing routes and chemical costs tracked for a pool service company.LEDGER

What pool service books need to track

A pool service stop is not one number. It is the plan payment that came in, the chlorine you poured, the mile you drove, the time the tech spent on the deck, and the invoice you sent. Each one needs its own line so the profit per route is real.

When you track all of it by route and by plan, you can see which routes pay and which ones cost more than they bring in. When you do not, you get one big pile of jobs and no way to tell whether the weekly plans or the one time cleanups were the good work.

Most pool service shops run both sides at once. Some days a tech services ten pools on a weekly plan. Some days a tech does a one time green pool cleanup or a filter swap. The plan side runs on set schedules and steady income. The one time side runs on phone calls and heat waves. Each side has its own margins. Each side has its own costs. When the books tie the two apart, the business makes sense. You can read more about how we keep these lines tied on our bookkeeping page.

Here is what a clean route looks like.

LineWhat it means
Plan income, route oneThe payment for the pools on that route
Chemicals, route oneThe chlorine and acid the tech poured that day
Mileage, route oneThe miles the truck drove that route
Tech time, route oneThe hours the tech spent on the stops
Net pay, route oneThe plan income minus the chemicals and the drive

When each line ties to the route and the plan, the margin is real. When they sit in one pile, you are guessing.

How recurring plans show up in your books

A pool service plan is contract work. A pool owner signs up for weekly service. You show up every week. The owner pays every month or every quarter. The income is steady and the schedule is set.

The clean way is to set up a recurring invoice in QuickBooks Online for each plan. The invoice goes out on the right day. The amount is set. When the owner pays, the payment ties to the invoice and the income lands on the right line. You can see which plans paid on time and which ones are late.

The messy way is to write a new invoice from memory each month. Some months you forget. Some months the amount is off. Some months the pool was closed for a repair and you still sent the bill. Now the plan income is hard to track and the late payers hide in the pile.

Here is how to keep plan billing clean.

  • **Set up a recurring invoice for each plan: ** so it goes out on the right day.
  • - **Match each payment to the invoice it pays: ** so the income ties to the plan.
  • - **Watch for closed pools: ** a pool down for a repair should not get a bill.
  • - **Watch for late pays: ** a plan that pays late every month is worth a closer look.
  • - **Review the plan list each quarter: ** so you know which ones renew and which ones drop.

When the recurring invoices run on their own, the plan side stays clean. When you write them by hand, the gaps show up at month end.

How a route day shows up in your books

A route day is the heart of a pool service shop. A tech loads the truck, drives to ten pools, tests the water, pours the chemicals, skims the surface, checks the filter, and drives home. Each part of that day needs a line in the books.

The clean way is to book each route day as one batch. The plan income for the pools on that route goes to an income line. The chemicals used that day go to a chemical cost line. The miles driven go to a mileage line. The tech hours go to a labor line. When you run the profit and loss by route, you can see which route was the good one and which one ate the chemicals.

The messy way is to book the plan income to one general sales line and all the costs to one general expense line. Now every route looks the same. You can not tell if the north route pays and the south route loses money. You can read more about how we handle these route days on our bookkeeping page.

Here is how to keep route days clean.

  • **Book each route day as one batch: ** so the income and the costs sit together.
  • - **Tag each route to a route name or class: ** so you can sort by route.
  • - **Log the chemical used that day: ** not at the end of the month from memory.
  • - **Log the miles driven that day: ** the truck log is your proof.
  • - **Log the tech hours per route: ** so labor lands on the right line.

When each route day sits on its own batch, the margin per route is real. When it sits in one pile, every route looks the same.

How chemicals and supplies tie to the route

Chemicals are the biggest cost on a pool service route. Chlorine, acid, algaecide, tablets and shock all add up. The way you tie them to the route changes what your books show.

The clean way is to hold bulk chemical buys in a supplies account first. When a tech pours product on a route, the cost moves to that route. When a tech uses it on a one time cleanup, the cost moves to that cleanup. The same goes for test kits, nets, poles and filter parts. Each one ties to the work that used it.

The messy way is to book every chemical buy to one flat supplies line and leave it there. Now your supply cost looks the same every month, even though some months you did twice the stops. You can not tell if one product is eating your margin. You can read more about how we track supplies for a trade in our pest control bookkeeping guide. The same idea works for pool chemicals.

Here is how to keep the costs clean.

  • **Hold bulk chemical buys in a supplies account: ** until a tech uses them.
  • - **Move the cost to the route that used it: ** not to one flat line.
  • - **Track test kits and nets the same way: ** they are part of the job cost.
  • - **Watch for product price changes: ** a higher chlorine cost changes your margin.
  • - **Compare routes at month end: ** see which one eats more chemical per dollar.

When the costs tie to the route, your margin per route is real. When they sit in one pile, the routes all look the same.

How to keep one time cleanups apart from plan work

A pool service shop runs two kinds of work. The plan side is steady. The one time side is busy when the water turns green or the filter dies. The two need their own lines.

A one time cleanup is a call. A pool owner phones about green water or a swamp after a storm. You send a tech, shock the pool, vacuum the floor, and bill the job. The price changes by the job. The pay is often same day. The margin per call is higher but the work is less steady.

A plan stop is a route visit. The owner pays on a schedule and the tech shows up every week. The margin per stop is lower but the income is steady and the route is set.

The clean way is to tag each invoice and each cost to the side it belongs to. Plan income goes to a plan income line. One time income goes to a one time line. When you run the profit and loss by class, the two sides show side by side and you can see which one pays the bills and which one pays the growth.

The messy way is to book both sides to one general sales line. Now you can not tell whether the plans are worth keeping or whether the one time cleanups are where the money really is.

Here is how to keep the two apart.

  • **Set up one class for plans and one for one time cleanups: ** no more than that to start.
  • - **Tag every invoice to the right side: ** so the income lands on the right line.
  • - **Tag every chemical buy to the right side: ** so the cost lands on the right line.
  • - **Run the profit and loss by class each month: ** so the two sides show side by side.
  • - **Watch the mix over time: ** see if the plan side is growing or shrinking.

When the two sides sit apart, you can read the business. When they sit together, the story is lost.

How the month end close works

At month end, every route needs its lines added up. The plan income, the chemicals, the mileage and the tech time all pull together into one route total. The income for the route sits next to it. The difference is the profit for the route. When the routes roll up by class, you see the plan side and the one time side side by side.

We start with the bank. We match each plan payment to the deposit that landed. We match each one time invoice to the payment that paid it. We tie each chemical buy to the route that used it. We tie each mile to the route that drove it. Then we add up the month by route and by class. We send you the profit and loss report, a balance sheet, and a cash summary. The two sides sit inside the report.

Here is a simple month end check.

  • **Match each plan payment to the bank: ** every deposit cleared.
  • - **Match each one time invoice to the payment: ** no orphan income.
  • - **Confirm each route carries a class tag: ** plan or one time.
  • - **Tie chemicals and mileage to the right route: ** so the margins are real.
  • - **Run the profit and loss by class: ** so the two sides show side by side.

When the close runs every month, the business stays clear. When it skips a month, the routes stack up and the next month is harder to close.

A situation we clean up

The routes that all looked the same

A pool service shop runs weekly plans and one time cleanups at the same time. Every plan payment lands in one general sales line. Every chemical buy lands in one flat supplies line. Every mile is logged but never tied to a route. At month end, the owner can not tell whether the plans pay or whether the green pool cleanups are where the money is. The owner can not tell which route to keep and which one to drop.

Here is how we handle it. We set up two classes in QuickBooks Online, one for plans and one for one time cleanups. We go back through the open months and tag each invoice to the side that earned it. We tie each chemical buy to the route that used it. We split the mileage by route. When we are done, the owner can run the profit and loss by class and see the two sides side by side. We set up a rule so the next invoice carries the right tag from the start.

Mistakes we fix

  • Every plan payment booked to one general sales line with no class tag
  • Every chemical buy booked to one flat supplies line
  • Mileage logged but never tied to a route
  • A plan for a closed pool that still got billed
  • A one time cleanup paid in cash that never made the books
  • No route name or class on any line
  • No profit and loss by class run at month end
  • A chlorine price change that no one noticed until the margin slipped

Common questions

How do I keep plans and one time cleanups apart? Set up one class for plans and one for one time cleanups in QuickBooks Online. Tag every invoice and every chemical buy to the side it belongs to. When you run the profit and loss by class, the two sides show side by side.

How do I track chemicals by route? Hold bulk chemical buys in a supplies account first. When a tech pours product on a route, move the cost to that route. Log it the day it was used, not at the end of the month from memory. When the cost ties to the route, your margin per route is real.

How do recurring plan payments show up in my books? Set up a recurring invoice for each plan. The invoice goes out on the right day. Match each payment to the invoice it pays. A plan is steady income, so the recurring invoice keeps it clean without you writing a new one by hand each month.

How does a route day show up in my books? Book each route day as one batch. The plan income for that route goes to an income line. The chemicals, the mileage and the tech time go to cost lines. Tag the batch to a route name so you can sort by route and see which one pays.

Ready for books that close on time?

Free 20-minute call. We reply with a fixed quote within one business day.

Book a callCall