Pool Runs Docs
BillingSetups

Pool Runs + QuickBooks

How billing works end-to-end when QuickBooks Online is your accounting system. Invoices, payments, refunds, and Stripe payouts all sync automatically — Pool Runs runs the operation, QBO keeps the books.

Pool Runs + QuickBooks

Current Pool Runs interface for this workflow

This is the full billing lifecycle for businesses that keep their books in QuickBooks Online. Pool Runs is the system of record for service work — routes, work orders, chemical readings, invoices. QBO is the system of record for accounting — chart of accounts, P&L, balance sheet, tax. The integration keeps both sides current automatically.

If you're not sure which setup applies to you, see Choose Your Billing Setup.

How the Two Systems Divide Up the Work

Pool Runs handlesQuickBooks handles
Quotes, work orders, routesChart of accounts
Invoice creation and sendingIncome categorization (via QBO Items)
Stripe-side payment processingP&L, balance sheet, cash flow reports
Manual payment entrySales tax tracking and remittance
Customer profiles & propertiesYear-end accountant reports
Refunds, voids, adjustmentsBank reconciliation
Stripe payouts (visible)Stripe payouts as Bank Deposits

You operate in Pool Runs every day. You (or your bookkeeper) open QBO weekly or monthly to reconcile and review.

The End-to-End Flow

Quote  →  Work Order  →  Invoice (PR)  →  syncs to QBO
                              ↓
                        Customer pays
                              ↓
                  Stripe charge OR Manual entry
                              ↓
                     Payment recorded (PR)  →  syncs to QBO
                              ↓
                  Stripe payout (~2 days)  →  QBO Bank Deposit
                              ↓
                Reconcile bank statement in QBO

Steps that happen automatically are filled in by the integration. You don't trigger them.

Setup Sequence

Connect Stripe and QuickBooks before you start invoicing — both have setup steps that get harder to clean up after the fact.

  1. Connect Stripe — Settings → Payment Settings. Verify your business with Stripe so charges can be processed. See Stripe Overview: Connecting Stripe.
  2. Connect QuickBooks — Settings → Integrations → QuickBooks Online. Authorize Pool Runs against your QBO company. Run the six-step setup wizard. See Setting Up QuickBooks.
  3. Verify your QBO Items — make sure each Pool Runs part, chemical, and work order type maps to the right QBO Item with the right income account. This is the most important step for clean P&L breakdown later.
  4. Import or match your customer list — the wizard handles this. Sub-customers in QBO become properties in Pool Runs.
  5. Set the default Route Service Item, Fee Item, and Deposit Item — these are catch-alls for invoice lines without a specific product mapping.

Once setup is done, billing runs on autopilot for the most part.

Lifecycle Step 1: Quote → Invoice

A customer requests a repair quote. You draft it in Pool Runs and send it. They approve and e-sign. You click Generate Invoice.

  • In Pool Runs: a new invoice is created in draft status, line items pulled from the quote, deposit applied if there was one.
  • In QBO: nothing yet. Quotes don't sync — only finalized invoices do.

When you finalize the invoice (move it from draft to generated or sent), Pool Runs queues the sync to QBO. Within seconds, the invoice appears in QBO with:

  • Customer (matched to the QBO customer record)
  • Property as the ship-to address
  • Each line mapped to its QBO Item
  • Tax computed by Pool Runs and applied as the QBO tax code
  • Due date and terms

See Quotes → Invoices and QuickBooks Overview: How Items, Accounts, and Invoices Connect.

Lifecycle Step 2: Work Order → Invoice

A technician completes a repair work order. The office clicks Create Invoice from the work order detail page.

  • Line items pre-populate from the work order (parts, chemicals, services, fees).
  • Each line is mapped to its QBO Item based on the part / chemical / work order type matching set up in the wizard.
  • You review, finalize, and send.

Within seconds, the invoice is in QBO. Same flow as quote-to-invoice from QBO's perspective.

Lifecycle Step 3: Routes → Bulk Invoice

Monthly. The Invoice Generator sweeps every completed route stop, chemical add-on, and installed part for the date range and produces a batch of invoices — one per customer (or per property, if you have multi-property customers configured that way).

  • Each generated invoice syncs to QBO as it's finalized.
  • Per-stop billing, per-month flat-rate billing, and chemical add-ons all work.
  • Pool Runs prevents double-billing — once a route stop is on an invoice, it won't show up in the Generator again.

See Invoice Generator.

Lifecycle Step 4: Customer Pays Online via Stripe

Most residential customers pay through the Stripe payment link in their invoice email.

  1. Customer clicks Pay Now on the email or public payment page.
  2. They enter card or bank details. Apple Pay / Google Pay show up automatically on supported devices.
  3. Stripe processes the charge.
  4. Stripe notifies Pool Runs (typically within seconds).
  5. Pool Runs records the payment as succeeded, updates the invoice to paid (or partial), and stamps the paid date.
  6. Within a few seconds, the payment syncs to QBO as a Payment against the matching invoice.
  7. The customer gets a Stripe-hosted receipt email.

About 2 business days later, Stripe sends the funds to your bank as a payout. If you've enabled payout sync (recommended), Pool Runs creates a Bank Deposit in QBO with:

  • The full payout amount in the deposit account you configured
  • A negative line for Stripe processing fees in the fee expense account you configured
  • A reference to the Stripe payout ID

This is what makes month-end bank reconciliation in QBO actually painless.

See Stripe Overview and What Syncs to QuickBooks: Payment Sync.

Lifecycle Step 5: Customer Pays by Check, Cash, Zelle, Venmo

Commercial customers and a chunk of residential customers pay outside Stripe. Office staff records these manually.

  1. The check arrives. (Or the cash. Or the Zelle hits your business bank account.)
  2. Open the invoice → Record Payment.
  3. Method: Check / Cash / ACH / Other (with reference for Zelle/Venmo/CashApp). Reference: check number or transaction ID.
  4. Save → invoice flips to paid (or partial).
  5. Within seconds, the payment syncs to QBO as a Payment against the invoice.

The bank deposit for these manual payments does not flow through Stripe — you (or your bookkeeper) record the bank deposit in QBO directly when the funds clear.

See Manual Payment Recording.

Lifecycle Step 6: Refunds

Customer disputes a charge or you agree to a partial credit.

  1. Open the invoice → find the payment row → Refund.
  2. Enter the refund amount and reason.
  3. Pool Runs:
    • For Stripe payments: requests the refund from Stripe.
    • For manual payments: records a negative payment.
  4. Pool Runs creates a Refund Receipt in QBO that reduces the original invoice's revenue.
  5. Stripe processing fees are not refunded by Stripe and remain as expenses in QBO.

See Handling Payment Issues: Refunds.

Lifecycle Step 7: Voids and Adjustments

OperationWhat happens in Pool RunsWhat happens in QBO
Void invoice before any paymentStatus flips to void.Voided in QBO too (preserves the invoice number for audit).
Cancel invoice before sendingStatus flips to cancelled.If it had already synced, marked void in QBO.
Discount added to invoiceNew adjustment line on the invoice.Pushes as a DiscountLineDetail line.
Fee added to invoiceNew line item.Pushes as a regular line mapped to the Fee/Surcharge Item.
Credit applied to a future invoiceCredit balance recorded against customer.Credit Memo or Applied Credit, depending on your setup.

See Invoice Adjustments.

Where Sales Tax Lives

Tax is calculated on the Pool Runs side using tax zones (typically ZIP-based). When the invoice syncs:

  • The pre-tax amounts and tax total push to QBO.
  • QBO applies its tax code (you map Pool Runs tax zones → QBO tax codes during the wizard).
  • QBO's sales tax module handles remittance — Pool Runs does not file taxes.

For multi-jurisdiction sales tax, QBO's sales tax features do the heavy lifting. Pool Runs just provides the taxable basis.

See Tax Zones and QuickBooks Overview: How Items, Accounts, and Invoices Connect.

Month-End Reconciliation Checklist

This is the routine for a bookkeeper closing the month with the QBO sync running:

  1. Settings → QuickBooks Online → Sync Health — confirm zero errors. Fix anything in error before closing.
  2. In QBO, run a Bank Reconciliation for your operating account. Stripe payouts + manual deposits should match your bank statement.
  3. Review the Stripe Fees expense account — should match your Stripe Dashboard's monthly fee total within a few cents.
  4. Run a P&L by Item / Service — this is where the QBO Item → income account mapping pays off. Filter Clean, Acid Wash, Maintenance, Equipment Install all show as separate lines.
  5. Run an A/R Aging Report in QBO — Pool Runs doesn't have one, but QBO does. Use this for collections follow-up.
  6. Check for UNMAPPED items — if any invoices have UNMAPPED lines in QBO, your P&L is wrong. See QuickBooks Overview: UNMAPPED Items.

Reports You'll Run Where

ReportWhere to run it
Open invoices / unpaid balancePool Runs Invoices filtered by status, or QBO A/R Aging
Revenue by service typeQBO P&L by Item
Revenue by customerQBO Customer P&L
Stripe processing fees by monthQBO P&L (Stripe Fees account)
Refunds and voids historyPool Runs invoice list filtered + QBO Refund Receipts
Sales tax owed by jurisdictionQBO Sales Tax Liability
Per-customer payment historyPool Runs Customer Profile
Per-property service historyPool Runs Property detail page

Pool Runs is for "who, where, when" questions. QBO is for "how much money where" questions.

Common Issues in This Setup

  • Sync errors — usually a duplicate name, an unmapped item, or a missing income account. See Sync Errors & Reconciliation.
  • Double-recorded payments — operator manually records a Stripe payment that already auto-recorded. Always check the invoice's Payments tab first.
  • Stripe payout doesn't match QBO Bank Deposit — Stripe's fee account isn't configured. Settings → Integrations → QuickBooks → Payment sync.
  • Bookkeeper creates an invoice directly in QBO — Pool Runs won't know about it. Always create invoices in Pool Runs.
  • Customer pays in QBO directly — does flow back to Pool Runs (QBO → Pool Runs payment sync), but reconciliation is cleaner if all invoicing originates in Pool Runs.

FAQ

Q: Do I have to use Stripe to use QBO sync? No. The QBO sync works fine without Stripe — you'd just record every payment manually. But almost every Pool Runs customer connects Stripe within their first week because the collections difference is huge.

Q: What if I prefer QuickBooks Payments over Stripe? You can. Payments collected through QuickBooks Payments flow back to Pool Runs via the QBO → Pool Runs payment sync. The Pool Runs Stripe integration and QuickBooks Payments are not mutually exclusive — pick whichever you prefer per invoice (most operators pick one and stick with it).

Q: Will old QBO invoices come into Pool Runs? No — the integration is one-way for new invoices (Pool Runs → QBO). Historical invoices stay in QBO; only edits to existing synced invoices flow back. Always create new invoices in Pool Runs.

Q: What if my bookkeeper changes the invoice amount in QBO? With "Pool Runs wins" conflict resolution (the default), Pool Runs overwrites the QBO change on the next sync. With "QuickBooks wins," QBO's change pulls back into Pool Runs. Pick the policy that matches your workflow during setup.

Q: Do quotes sync to QBO? No — only finalized invoices. Quotes are sales/proposal artifacts, not GL transactions, and stay in Pool Runs.

Q: Can I run this setup without payout sync (Stripe payouts → QBO Bank Deposits)? Yes — payout sync is optional. If you don't enable it, you'll record bank deposits manually in QBO when reviewing your bank statement. Most operators turn it on because it cuts ~30 minutes off month-end reconciliation.

On this page