Connecting QuickBooks

Connecting QuickBooks turns end-of-month bookkeeping from a 6-hour manual entry session into a 15-minute review. Every invoice, payment, refund, and customer flows from Exoserva to QuickBooks Online automatically — your accountant gets clean books, you stop dual-entering, and the chance of a transposed digit goes to zero. This guide walks the OAuth flow, the field-mapping decisions you’ll make once, and the reconciliation rhythm that keeps everything aligned.

Estimated time: 7 minutes (plus a 30-minute reconciliation pass week one)

Before You Begin

  • Owner or Tenant Administrator role on Exoserva (Roles, Permissions, and Security)
  • QuickBooks Online subscription (Simple Start or higher; Desktop is not supported)
  • QuickBooks Online admin login for the OAuth handshake
  • A clean Chart of Accounts — at minimum: Service Revenue, Product Revenue, Sales Tax Payable, Bank Deposit Account
  • (Optional) Your bookkeeper or accountant on a 30-min call for the first sync — they’ll catch mapping issues you’ll miss

Step 1: Open Integrations

Press ⌘K to open Settings, then click Integrations under Operations. Direct URL: /settings/integrations. Click the QuickBooks card. The page navigates to the QuickBooks integration view, with a Connect to QuickBooks button.

Step 2: Run the OAuth flow

Click Connect to QuickBooks. You’re redirected to Intuit’s OAuth consent screen:

  1. Sign in to your QuickBooks Online account — must be the admin
  2. Pick the company file — if you have multiple QuickBooks companies, select the one for this Exoserva tenant
  3. Review requested scopes — read/write access to Customers, Invoices, Payments, Items, Tax Rates
  4. Click Connect — Intuit redirects you back to Exoserva, which now shows Connected

Tip: Use a separate Chrome profile or Incognito window for the OAuth dance. If you’re signed into multiple Google accounts that auto-suggest QuickBooks accounts, the wrong one can sneak through.

Step 3: Map your Chart of Accounts

After connection, Exoserva shows a Field Mapping page. Each Exoserva concept needs a QuickBooks counterpart:

  • Service Revenue — pick the QB Income account where labor revenue lands
  • Product / Parts Revenue — separate account for material sales (lets your accountant track GP per category)
  • Sales Tax Payable — Liability account where collected sales tax accrues until you remit
  • Discounts Given — usually an Income account (negative) for tracking promotional/loyalty discounts
  • Bank Deposit Account — your operating checking account where Stripe payouts land

Save mapping. Exoserva will use these accounts for every invoice/payment going forward.

Warning: Map carefully on day one. Re-mapping after 100 invoices have synced creates messy reclassification work. If you don’t know which QB account to pick, ask your bookkeeper before saving — 5 minutes of their time saves 5 hours of cleanup.

Step 4: Decide on customer sync direction

Two options on the customer-sync setting:

  • One-way (Exoserva → QB) — Exoserva is the source of truth. Customers created in Exoserva flow to QB. Customers created in QB don’t appear in Exoserva.
  • Two-way — both systems can create/edit customers; conflicts resolve based on most-recent-edit timestamp.

Most contractors pick one-way (Exoserva → QB) — keeps the customer-creation path clean (jobs always start in Exoserva, customers follow). Two-way invites duplicate-customer messes if your bookkeeper enters customers manually in QB.

Step 5: Run a test sync

Before turning on auto-sync for live data, run a manual test:

  1. Create a test customer in Exoserva: “Test Customer ZZ”
  2. Create a test invoice for $1.00 with Service Revenue line
  3. Mark it Paid manually
  4. In Exoserva → Integrations → QuickBooks → click Sync Now
  5. Open QuickBooks and verify: customer appears, invoice appears, payment appears, account balances move correctly

If anything looks wrong, fix the mapping before enabling auto-sync. Delete the test records from both sides after.

Tip: Always test with $1.00, never $0.00. Some QB versions reject zero-dollar invoices outright; $1 lets you trace every step.

Step 6: Turn on auto-sync

Once test sync looks clean, flip the Auto-Sync toggle on. Exoserva now pushes new invoices, payments, refunds, and customer creates to QB in real-time (typically <30 seconds delay).

What syncs:

  • New invoice → QB Invoice
  • Payment received → QB Payment + Bank Deposit
  • Refund issued → QB Refund Receipt
  • Customer created → QB Customer (one-way mode)

What does NOT sync:

  • Job records (Exoserva-only concept; QB has no Jobs)
  • Estimates (Exoserva-only — though you can manually create QB Estimates if your accountant wants)
  • Internal notes (privacy: stays in Exoserva)
  • Custom forms / photos (file attachments require manual workflow)

Step 7: Watch the Sync Status

The Integrations page shows a Sync Status dashboard:

  • Last successful sync — timestamp
  • Pending — records waiting to sync (should be ~0 most of the time)
  • Failed — records that couldn’t sync; click to see why

Common failures and fixes:

  • “Customer name conflict” — duplicate customer in QB; either merge in QB or rename in Exoserva
  • “Invalid tax rate” — tax rate not configured in QB; create matching rate, retry
  • “Account not found” — your Chart of Accounts changed; re-run Step 3 mapping

Warning: Don’t ignore the Failed counter. Each failed record is a transaction that didn’t land in QB — your books will be off by exactly that amount until fixed. Set a Notification (Configuring Notifications guide) for QuickBooks sync failures so you catch them within hours, not weeks.

Step 8: Monthly reconciliation rhythm

End of every month, do a 15-minute reconciliation:

  1. Compare Exoserva totals to QB totals — Revenue, Expenses, Receivables. Should match within $1.
  2. Check the Stripe → QB deposit alignment — bank deposit dates should match Stripe payout dates within 1-2 business days.
  3. Investigate discrepancies — usually one of: a manually-entered QB record without an Exoserva equivalent, a sync failure, or a refund that didn’t fully reverse.

The first month after setup will likely show a 1-2% discrepancy from cleanup; by month 3 you should be reconciling within $5.

Step 9: Disconnect (if you ever need to)

If you switch accountants or change QB plans, disconnect:

  1. Settings → Integrations → QuickBooks → Disconnect
  2. Confirm — Exoserva revokes the OAuth token at Intuit
  3. Existing synced records stay in QB; future records stop syncing

The disconnect is reversible — re-Connect re-establishes the link, but historical un-synced records won’t backfill automatically. Plan disconnect timing for end-of-month, not mid-month.

Real-World Example

You’re a 3-tech HVAC shop closing your first quarter on Exoserva + QuickBooks. Before the integration, your bookkeeper spent 6-8 hours/month doing manual entry from Exoserva CSVs. After: she logs into QB monthly, runs the Sync Status check (5 min), reconciles bank deposits to Stripe (10 min), and is done. You save 5 hours of bookkeeping time × 12 months = 60 hours/year, plus lower error rate. At her $90/hour rate that’s $5,400/year recovered — multiple times the cost of QuickBooks itself.

What’s Next?


Need help? Post in the Tech Support category or contact support@exoserva.com.