Connect QuickBooks Online
Mobile Service Sync syncs one-way to QuickBooks Online: customers, invoices, payments, sales receipts, refunds, and (optionally) employees + time activities flow from the CRM into QBO. We don't pull anything back from QBO — the CRM stays the source of truth for what happened in the field.
Once connected, sync happens automatically on every relevant action (customer created → push customer; invoice issued → push invoice; payment recorded → push payment). If a sync fails, you'll see an error on the affected record and can retry from the same surface.
What syncs to QuickBooks
| CRM event | QBO record |
|---|---|
| Customer created | Customer |
| Customer updated | Customer (existing record updated) |
| Invoice issued (not marked paid) | Invoice |
| Invoice + payment in one step (paid at door) | Sales Receipt |
| Standalone payment on an open invoice | Payment linked to existing Invoice |
| Refund issued | Refund Receipt (for sales receipts) or Refund (for invoices) |
| Tax category | Class or Item Tax depending on your QBO setup |
| Time entry (clock in/out) | TimeActivity (only if the teammate is linked to a QBO employee) |
| Service type | Item |
What we don't push: vehicles, addresses, work orders, internal notes, and anything that's CRM-only metadata.
Set it up
You'll need a QuickBooks Online subscription — any tier from Simple Start and up will work.
Open Settings → Integrations → QuickBooks
From the sidebar, click Settings, then Integrations, then QuickBooks.
Click "Connect to QuickBooks"
You're sent to QuickBooks to sign in. Pick the company file you want to sync to (if you have more than one), then authorize Mobile Service Sync.
You're back
After authorizing, you're returned to the integration page with the connection marked Active. The first push happens within a minute — the system queues all your existing customers, invoices, and payments into QBO.
Initial sync
The first time you connect, the system pushes everything historic to QBO in a background job. Depending on volume:
- ~100 customers → ~30 seconds
- ~1,000 invoices → ~5 minutes
- ~5,000+ records → up to an hour
You can keep working in the CRM during the initial sync. Records that have already synced are matched to their existing QBO entries on later edits, so you won't end up with duplicates.
Per-invoice push & retry
Every invoice has its own QuickBooks card on the detail page. It shows the push status of the invoice itself plus each payment recorded against it, and surfaces an inline Push or Re-push button per row. Use it when:
- An invoice was created while QBO was disconnected and you want to push it now without waiting for Reconcile.
- A payment didn't auto-push (token expired, network blip) and you want to retry it from the same screen you're already on.
- You want to confirm a specific invoice landed in QuickBooks — the card shows the QBO id once the push completes.
Push order matters: payments need their parent invoice to exist in QBO first, so the Push button on a payment row is disabled until the invoice itself has a QBO id.
Reconcile and per-row retry
The Reconcile page (Settings → Integrations → QuickBooks → Reconcile) is the bigger hammer: it lists every record in the CRM that should-but-doesn't have a QBO id and offers Push all to retry the lot. Below that, a Recent failures table shows the last 25 push errors from the audit log, each with its own Retry button so you can re-issue a single push without bulk-retrying everything.
Some kinds (credit memos, refund receipts) don't store a stable source id with the log row — those Retry buttons are disabled, and you should re-issue the push from the originating record (the invoice that was voided, the payment that was refunded).
Troubleshooting
"Token expired" or "Disconnected"
The QuickBooks connection expires after 100 days of inactivity. If you see a yellow banner on the integration page, click Reconnect to sign back in. Pushes that fail while you're disconnected retry automatically once the connection is restored, and the Reconcile page surfaces anything still missing.
"Customer not found in QBO"
Means a previous customer push failed (rare; usually because the customer's email collides with an existing QBO entry). Open Reconcile — the Recent failures table shows the underlying error with a Retry button per row. Or push from the customer's detail page directly.
"Mismatched amounts"
If your QBO totals don't match the CRM, the most common culprit is a payment that was recorded on the CRM side but never pushed (because the parent invoice wasn't yet in QBO). Open the invoice's QuickBooks card, push the invoice if it isn't synced, then push each payment in turn. The Reconcile page does the same thing in bulk.
Disconnecting
To stop syncing, click Disconnect on the integration page. Existing pushed records stay in QBO; new CRM events stop pushing. Reconnecting later picks up where you left off — the link to each previously pushed record is preserved.
Disconnecting doesn't delete anything. It just pauses the sync. Reconnecting is non-destructive.