Most shops we onboard are still copy-pasting from their ops tool into QuickBooks Online. The SalesThumb QBO sync replaces that work entirely. This is the setup playbook plus the common gotchas.
Step 1 — Connect QuickBooks Online
Settings → Integrations → QuickBooks Online → Connect. You'll OAuth into Intuit and authorize SalesThumb to read + write to your company file. The connection lasts 100 days before Intuit forces a re-auth — we email you a reminder at day 80.
If you have multiple QBO companies, pick the one tied to this SalesThumb org. If you have multi-location and run separate books per location, see the HQ rollout checklist — each location can wire to its own QBO file.
Step 2 — Map your chart of accounts
The default mapping covers 90% of shops:
- Service revenue → Sales of Product Income (or a sub-account per vertical: Tint, PPF, Ceramic Coating, Detail, Wrap)
- Tips collected → Tips Payable (a liability account if you pay tips out)
- Sales tax → Sales Tax Payable
- Stripe payouts → your Stripe clearing account (most shops call this "Stripe Holding")
- Refunds → Refunds and Allowances (contra-revenue)
- Materials / film cost → Cost of Goods Sold (sub-account: Film, PPF, Coatings, Detail Supplies)
You can edit each mapping at Settings → QuickBooks → Account map. Save and SalesThumb will use the new mapping on the next sync.
Step 3 — Pick your sync mode
Two modes:
- Real-time — every paid invoice posts to QBO within ~60 seconds. Good for shops that close books weekly.
- Daily batch — a single rollup posts at 11:59 PM in your time zone. Good for shops that only look at QBO monthly.
Most shops pick real-time. The batch is for accountants who hate seeing 80 individual invoices per day in their QBO feed.
Step 4 — Stripe payout reconciliation
The hardest part of any sync is matching Stripe deposits to the invoices that funded them. SalesThumb automates this:
- Each Stripe payout creates a corresponding deposit entry in your QBO Stripe Holding account
- Individual invoice payments are sub-entries that reconcile to that deposit
- Stripe fees post automatically to Stripe Fees expense
- When you import the bank feed in QBO, the deposits match cleanly
If your bookkeeper has been hand-keying Stripe fees for years, this alone saves 2-3 hours per month.
Step 5 — Inventory cost flow (optional)
If you want film + material cost to flow through to COGS automatically, enable inventory-cost sync at Settings → QuickBooks → Inventory. Each completed job posts a journal entry crediting Inventory Asset and debiting COGS based on the materials consumed.
This requires accurate inventory data (film roll inventory) and per-service material costs configured. Skip it if your bookkeeper does material cost manually quarterly — you won't get much value from the automation.
Common gotchas
- Sales tax in QBO must match SalesThumb tax rates. Mismatched rates cause every invoice to fail sync until corrected. Settings → Tax → match what QBO expects.
- Service items must exist in QBO the first time they sync. SalesThumb auto-creates missing items if you check the "Auto-create QBO items" box; otherwise you'll see sync warnings for unknown SKUs.
- Don't manually delete invoices in QBO. Cancel them via SalesThumb instead — the cancellation flows through and reverses the QBO posting.
- Bank deposits should not be manually entered. Let the sync create them. If you manually enter a deposit, you'll have a duplicate.
Sync status + troubleshooting
Settings → QuickBooks → Sync log shows every record sent in the last 30 days plus any failures. Common failure modes:
- "Customer not found" — usually because the customer email changed and QBO didn't match. Edit the QBO customer record to add the new email, retry sync.
- "Account closed" — your QBO subscription lapsed or the company file was archived. Re-auth.
- "Tax mismatch" — fix the tax rate (see above).