Flat-Rate Packages & Subscription Billing: Tracking Included Visits and Catching Extras
Many pool companies sell all-inclusive packages — a "Full Care" plan, flat monthly maintenance, or an annual contract that covers opening, closing, weekly service, and standard chemicals for one set price. The customer is billed the same amount automatically (usually through QuickBooks recurring transactions or another payment platform) no matter how many visits happen that month.
That creates a common question: if the invoice is created outside POM, what do you do with all the jobs POM tracks — and how do you catch the work that ISN'T included?
This guide shows the recommended workflow. You keep full service and chemical history in POM, your flat rate keeps auto-billing in QuickBooks, and the only invoices you ever touch in POM are the true extras — a replacement skimmer basket, a repair, anything outside the plan.
How the workflow fits together- QuickBooks (or your payment platform) bills the flat rate automatically on schedule — this is the only place package revenue is invoiced.
- POM records every visit, checklist, chemical dose, and photo at $0 — your complete service record, with no invoice needed.
- The POM Billing page becomes your exception report: filter to your package jobs, and anything with a total above $0 is an extra that needs its own invoice.
The result: no more manually verifying $0 line items in QuickBooks, and no extras slipping through uncharged.
Step 1 — Create a dedicated service type for included visitsGo to Settings > Service Types > Create service type.
On the Service Details tab:
- Name it so it's clearly the pre-paid package visit, e.g. "Full Care - Weekly Visit (Included)".
- Set How is this service billed? to Fixed price and enter a Base price of $0.
- Use the description to remind your team: Example "Labor and standard chemicals are pre-paid through the customer's recurring plan — only invoice this job if extras are added."
On the Appointment Presets tab:
- Set Billing status to Pre-Paid. Every appointment created with this service type is automatically labeled Pre-Paid, so included visits never sit in your billing queue looking like unbilled work.
- Under Inventory Items, click Add inventory item and add the standard chemicals the package includes — then set each item's price to $0. Technicians still log usage, inventory still deducts, and the customer still sees the chemicals on their service report — but nothing generates a charge.
Create one of these for each included visit type in the package (weekly service, opening, closing) if you want cleaner reporting per visit type.
Step 2 — Schedule package customers with this service typeUse the new service type for those customers' recurring appointments. Technicians complete visits exactly as they do today — checklist, chemistry readings, dosing, photos. If they use something extra (a part, a non-included chemical), they add it to the service as usual at its real price.
Step 3 — Review the Billing page and catch the extrasOn your billing day, open Billing and set the Service type filter to your package type(s), with your date range.
- Total shows $0 — the visit was fully covered by the plan. Nothing to do: it's already marked Pre-Paid. (If you didn't use the preset, select the rows and use Bulk actions > Mark as Pre paid or Mark as Billed so they leave your queue.)
- Total is above $0 — something extra happened. Click Create invoice for that customer, and POM builds an invoice containing just those charges. Send it locally or push it to QuickBooks Online/Desktop like any other POM invoice — it arrives as a separate, real invoice for the extras only.
This is the whole trick: you never transfer $0 invoices to QuickBooks, because that revenue is already being collected by your recurring billing. The Billing page only surfaces the exceptions.
Step 4 — Set up the flat rate as a recurring transaction in QuickBooksIf you haven't automated the package charge itself yet, set it up in QuickBooks so it runs hands-free:
QuickBooks Online — Recurring transactions
- Click the Gear icon > Recurring transactions > New.
- Choose the transaction type: use Sales Receipt if you keep a card or bank account on file and want to charge automatically, or Invoice if the customer pays after receiving it.
- Set the Type to Scheduled, pick the interval (monthly, quarterly, annually), and the start date.
- Add your package as the line item (e.g. "Total Care Package — Monthly") at the agreed rate.
- For invoices, check Automatically send emails so the customer gets it without you touching it.
QuickBooks Desktop — Memorized transactions
- Create the invoice once, then with it open press Ctrl+M (Edit > Memorize Invoice).
- Choose Automate Transaction Entry, set How Often (monthly, quarterly) and the Next Date.
- QuickBooks will create the invoice on schedule; manage the list under Lists > Memorized Transaction List.
Should I push the $0 service invoices to QuickBooks for record-keeping?
We recommend not doing it. QuickBooks is your accounting record — the package revenue already lands there through the recurring transaction. POM is your operational record of what was done at the property. Pushing $0 invoices just creates clutter you have to verify by hand, which is exactly the bottleneck this workflow removes.
What if a package customer buys something extra mid-month?
That's Step 3 — the extra shows as a total above $0 on the Billing page, and you create a separate invoice for just that charge. The customer gets their normal flat-rate charge from QuickBooks plus one clean invoice for the extra.
Do I lose chemical tracking by setting items to $0?
No. Quantity, inventory deduction, and service-report visibility all work exactly the same — the $0 only means no charge is generated.
We already invoice packages quarterly in QBO — does this change that?
No. Keep billing the package on whatever schedule you agreed with the customer. This workflow only changes what you do inside POM: mark included visits Pre-Paid and invoice the exceptions.
Questions? Contact support at help@poolofficemanager.com or call 614-710-0074 ext 3.