See it in actionBook a demo →

Maintenance billing modes

How recurring maintenance jobs bill in Pool Founder: per visit, monthly or weekly flat rate, or externally — plus the Maintenance Billing worklist, recurring line items, priced tasks (charge extra for a task like a filter clean when it is checked off), queued one-off charges (including work orders added to the next maintenance invoice), chemical billing, and seasonal schedules.

Updated August 1, 2026

Every maintenance job has a billing mode

When you create a recurring maintenance job, you choose how it bills: per visit (the default), a monthly or weekly flat rate, or externally (no in-app billing). The mode, the billing schedule, and any extra charges all live on the job itself, so different customers — and even different jobs for the same customer — can bill differently.

Flat-rate jobs bill the base rate automatically on the job's billing anchor date even if there were zero completed visits that period. Per-visit jobs normally bill only completed visits — but if "Bill even without service" is turned on, a period with zero visits still bills the rate once so the invoice goes out on schedule.

The three billing modes

Billing modeHow it bills
Per Visit (default)Each completed visit is billed. Visits aggregate onto invoices according to the job's billing schedule. With "Bill even without service" on, a period with zero completed visits still bills the rate once on schedule.
Monthly / weekly flat rateThe flat base rate bills automatically on the job's billing anchor date — even if there were zero completed visits that period. Extra visits beyond the included count can bill as overage.
Bill ExternallyNo in-app billing for the job. Use this when the job is billed outside Pool Founder.

$0-rate jobs are allowed — for example, chemicals-only billing where the service rate is $0 and only chemical charges are billed.

Set up billing on a job

  1. 1On the job (the create form or the job's page), pick a billing mode from the tabs: Per Visit, Monthly (flat rate plus a "First Bill Date"), or Bill Externally.
  2. 2Choose a billing schedule: manual only, after a set number of visits, monthly from a start date, monthly on a fixed day, weekly from start, or weekly on a fixed day. The form previews "Next invoice: {date}" so you can confirm it before saving.
  3. 3In the Chemical Billing section, choose how chemicals bill: billed separately, all included, or partially included (with allowances).
  4. 4Use Add recurring charge to add recurring line items (e.g. "Chemical fee") billed "Per invoice" or "Per visit" alongside the base rate.

On an existing job, the top of the page shows the rate with how it is charged ("$175.00 per visit" or "per month") and when it bills (for example "Billed monthly on the 1st, next on 10/01/2026"). To change any of it, click the pencil beside the rate to open Rate & billing: set the Rate, pick When to invoice (Manual, By visits, Monthly, or Weekly), and for Monthly or Weekly choose under How the rate is charged between Per visit (the rate for each completed visit) and Flat rate (the full rate each month or week, no matter how many visits). A sentence at the bottom sums up the result before you click Save, and only what you change is saved. Bill-ahead jobs can only change the billing day, and externally billed or consolidated jobs can only change the rate here.

Billing mode is set per job. To switch many jobs at once, push it from their job template — which lets you send the billing change alone, so every pool keeps the price you negotiated for it.

The Maintenance Billing page: your worklist

The Maintenance Billing page (Billing → Maintenance in the sidebar) is a unified worklist of every maintenance job's billing state — not a period report. Each row is a job (or a consolidated customer rollup) with a status badge that tells you whether anything needs your attention:

BadgeWhat it means
Ready to invoiceA per-visit job with uninvoiced completed visits. Click Create Invoice — a confirm dialog shows the visits included and the total before anything is created.
Scheduled date + Auto-billedA flat-rate job that bills itself on the shown date — nothing to do. Jobs set to bill on zero completions also show a Bills without service badge.
SuspendedThe job is suspended, so scheduled billing isn't running.
No visits yetA flat-rate job with no completed visits this period (and "bill without service" off) — no invoice will generate.
ConsolidatedA customer-level rollup of enrolled jobs billing as one invoice — shown as one row with the jobs enrolled, and auto-billed. See consolidated billing.

Summary tiles at the top show the Pending total (charges ready to invoice now) and the Scheduled Monthly total (what auto-bills on schedule). Rows needing action sort first, and you can search by customer or job name.

Recurring line items

Recurring line items are flat recurring charges on a maintenance job — a monthly chemical fee, an equipment rental — billed per invoice or per visit alongside the base rate, and shown as their own line on the invoice. On an existing job, manage them through the Recurring line items dialog.

  • Job templates carry recurring charges too: open Job Templates, edit a template, and use the Recurring charges section.
  • Template recurring charges pre-fill on new jobs created from that template.
  • Apply changes to open jobs pushes the template's recurring charges to jobs linked to it. A template with no recurring charges leaves each job's own charges alone.

Queue a one-off charge on the next invoice

An ad-hoc charge — a repair, a part — can ride along as its own line item on a maintenance job's next invoice instead of going out as a separate one-time invoice.

  1. 1Open the customer's maintenance job page. In the top card, under Charges, find the Queued for next invoice row.
  2. 2Click the row's value (it reads None when nothing is queued), fill in a "Description" (e.g. "Acid wash, equipment swap") and an "Amount", then click Add charge.
  3. 3Queued charges are listed under the row, and the row's value shows how many are queued and their total. The trash icon beside a charge removes it before it bills.
  4. 4When the job's next invoice generates, the charges attach automatically as their own line items.

When the work was tracked as a work order, you do not have to retype it here. Open the completed work order and click Add to Next Maintenance Invoice — its charges are queued onto this job's next invoice for you, and they show up under this same Queued for next invoice row labelled From work order with a link back to it. Work order charges have no trash icon here; to take one off, open the work order and click Undo. See work order billing.

Adding a charge here only works on monthly- or weekly-billed maintenance jobs that are not archived, and a work order cannot be added to a per-visit job's invoice for the same reason. On other maintenance jobs the "Queued for next invoice" row appears only when there are task charges to list (see priced tasks below), with no way to add a charge. Adding a charge needs permission to create invoices; removing one needs permission to update invoices.

Priced tasks: charge for a task when it is done

A task on a maintenance job can carry its own price, for extra work you charge on top of the rate, like a $45 filter clean every 12 weeks. The charge is added to the job's next maintenance invoice only on the visits where the task is actually checked off.

  1. 1On the maintenance job's page, click Edit tasks on the Tasks tab (next to Visit history). The Edit Tasks dialog reads "Priced tasks are added to the next maintenance invoice when checked off."
  2. 2Type an amount in the $ box (it says "Price") beside the task's frequency (Every visit or every N weeks). Leave it blank for no charge. Prices can be $0 to $10,000.
  3. 3Click Save Tasks. The task shows its price in green, like "$45 · every 12 weeks", or just "$45" for an every-visit task.

The form for a new maintenance job has the same $ box on each task row. Prices can also come from a job template or task group: a job created from a template copies its task prices, and a group applied in Edit Tasks prices the tasks it adds (see task templates and groups). Seeing and setting prices takes the View invoices permission, and Edit Tasks also takes Edit jobs. Technicians never see prices in the mobile app: they just check the task off in the visit checklist.

How task charges bill

  • A charge is created only when the task is checked off on a visit, at the price the task had when that visit was recorded. A task left unchecked, like a skipped optional task, is not charged. Changing the price later does not change visits already recorded.
  • It goes on the job's next maintenance invoice as its own line with a Task badge, for example "Filter Clean - Weekly Service (Jun 20, 2026)".
  • Until it is invoiced, the charge is listed on the job page in the top card under Charges, in the Queued for next invoice row: the task name, "Task done" with the visit date, and the amount in green. The row appears on every billing mode when there is a task charge. On a job invoiced by hand, the line above Create Invoice also says "Includes $45.00 in task charges", and the Create Invoice confirmation lists each one under Task charges, so you can see what makes up the amount. Only people who can view invoices see these lines.
  • It works in every billing mode. On a flat monthly or weekly rate it is added on top and never sends an invoice of its own, and it never counts as a visit toward an "after a set number of visits" schedule. Customer-level consolidated invoices include it. On a job billed externally the charge is recorded but not billed.
  • Unchecking the task, or deleting the visit, before the visit is invoiced removes the charge. Checking a task off afterwards in Edit Completed Tasks on the job page adds it. Once the visit is invoiced, the charge stays.
  • Task charges are not taxed.

Each maintenance job keeps its own task prices, whether they were typed in Edit Tasks or came from a job template or task group, and pushing a template or group price change never overwrites a custom one. Seasonal schedule segments carry no task prices: when a seasonal schedule switches the task list, only tasks on both lists keep their price. Work orders have no task prices (they bill their line items). Logging a visit from the office with the job page's Log Completion button bills tasks too: the Log Past Completion page has a Tasks section, and checking off a priced task there adds its charge the same way (see log a past completion). Task charges also need Stripe connected, the same as parts logged on visits; visits not yet invoiced pick them up once it is.

Chemical billing options

  • Billed separately — chemicals used on visits are billed to the customer.
  • All included — chemicals are covered by the service rate.
  • Partially included — per-visit allowances, with usage beyond the allowance billed as overage.
  • Alternatively, charge a flat chemical fee as a recurring line item instead of billing by usage.

Customer-level consolidated billing

A customer can be switched to one consolidated invoice on a customer-level monthly or weekly schedule that rolls up their enrolled flat-rate jobs — useful when one customer has several jobs and you want a single bill. It's enabled per customer, with its own fee-passing and bill-without-visits options. Full walkthrough: consolidated billing.

Charge a specific card for one job (AutoPay override)

A maintenance job's page has an AutoPay row in the Invoicing group of the job card at the top. It shows which saved payment method autopays that job; click it to open the AutoPay card dialog. By default it's Use customer default — the customer's standing AutoPay card. Pick a specific saved card instead and only this job charges it, so one customer can pay different jobs (say, different properties) on different cards.

  • No card on file yet? The AutoPay row reads No card on file with an Add card button. It opens the same Add Payment Method dialog as the customer's page: Enter card to type the card in yourself, or Email customer to send a secure link where the customer saves their own card. When you enter the card, Enable AutoPay with this card starts checked if the customer's AutoPay is off. A card the customer saves from the emailed link turns AutoPay on automatically when it was off.
  • The AutoPay card dialog also has Add a new card at the bottom of the list. Closing the add-card dialog brings you back to the list, so you can pick the new card for this job.
  • Adding a card from the job page needs Stripe connected (onboarding finished) and the edit-invoices permission. Without them, the row shows the current AutoPay card or Off, with no add option.
  • A per-job card makes the job bill on its own schedule — it won't be combined into the customer's consolidated invoice.
  • If the customer's AutoPay is currently off, the chosen card takes effect once AutoPay is enabled for the customer.
  • Selecting Use customer default clears the override and the job goes back to the standing AutoPay card.

Seasonal schedules

Jobs can have seasonal rate and frequency segments across the year — for example, a higher rate and weekly visits in summer, and a lower rate with fewer visits in winter.

Frequently asked questions

Will maintenance bill automatically even if no visits happened?

Yes, for monthly or weekly flat-rate jobs — the base rate bills on the anchor date regardless of completions. Per-visit jobs bill only completed visits, unless "Bill even without service" is turned on — then a zero-visit period still bills the rate once on schedule.

Can I switch a job between per visit and flat rate?

Yes. On the job's page, click the pencil beside the rate at the top of the page, then in Rate & billing choose under "How the rate is charged": Flat rate or Per visit. Bill-ahead and externally billed jobs can't switch modes there (external billing has its own switch flow under Invoicing → Bill externally).

How do I charge a flat chemical fee or equipment rental separately from the rate?

Add a recurring line item on the maintenance job. It bills per invoice or per visit and shows as its own line.

Can I queue a repair charge on a per-visit job?

No — the "Queued for next invoice" row only exists on monthly- or weekly-billed maintenance jobs. Per-visit jobs don't have it, so Add to Next Maintenance Invoice is unavailable on a work order at a property that only has per-visit maintenance.

Can a repair work order be billed on the monthly maintenance invoice instead of its own invoice?

Yes. On the completed work order click Add to Next Maintenance Invoice; its charges are queued on the maintenance job you pick and appear under that job's Queued for next invoice row (Charges, in the top card) until the invoice generates. See work order billing.

Can I charge extra for a filter clean every 12 weeks on top of the monthly rate?

Yes. In the maintenance job's Edit Tasks dialog, set the filter clean task to repeat every 12 weeks, type a price in the $ box beside it, and click Save Tasks. The price is added to the job's next maintenance invoice, on top of the flat rate, only on visits where the tech checks the task off. Unchecking it before the visit is invoiced removes the charge, task charges are not taxed. To price the filter clean on every job from a job template, set it on the task in the template: new jobs copy it, and Apply changes to open jobs can push it to existing ones.

Can I have a job with a $0 rate?

Yes. $0-rate jobs are allowed — for example, chemicals-only billing where only chemical charges are billed.

Related articles

Make Monday easier than last Monday.

30-day free trial. No credit card required. Cancel anytime.