CRM QuickBooks Integration
The useful version of this integration is narrow: a won deal creates an invoice, and payment status comes back so your salespeople can see what is unpaid. Attempting more than that is where these projects get into trouble.
Discuss your projectTwo one-way flows, not a two-way sync
Clients usually ask for a two-way sync between CRM and QuickBooks. What they almost always need is two one-way flows with clear ownership, and it is a considerably more robust design.
The CRM owns the pipeline, the contact and the relationship. QuickBooks owns everything financial: invoice status, payments, credit terms, balances. So deals flow one way into QuickBooks as invoices or estimates, and payment and invoice status flow back the other way into read-only CRM fields. Neither system overwrites what the other owns.
A genuine bidirectional sync, where both sides can edit the same invoice, invites conflicts with real financial consequences — a salesperson changing an amount that has been filed, or two edits racing and one silently winning. We would push back on it unless there is a specific reason, and in several years of these integrations we have rarely found one.
The customer record is the one place that needs care in both directions, which is where matching comes in.
What we build
Deal to invoice or estimate
A won deal creating a QuickBooks invoice with line items mapped to the right income accounts and tax codes — as a draft awaiting approval while the integration is new.
Payment status back to the CRM
Paid, part paid, overdue and days outstanding, on read-only CRM fields. This is what stops salespeople chasing new business from a customer who has not paid for the last order.
Customer matching
On an identifier stored in both systems rather than on company name, which gets edited and abbreviated. Near matches go to a review queue instead of merging automatically.
Products and pricing
Items and service codes aligned so a CRM quote and a QuickBooks invoice describe the same thing at the same price.
Credit position visible in the CRM
Balance and overdue amount, so a salesperson has the information before they promise delivery terms.
Reporting on actual revenue
Closed pipeline reconciled against invoiced and collected revenue, which are three different numbers most companies cannot compare.
The QuickBooks specifics that cause problems
These are the technical details behind most support calls on an otherwise working integration.
- The mapping comes first. Which income account, which tax code, whether classes or locations are mandatory, and how your bookkeeper wants partial payments handled. Build before this conversation and you will post a month of transactions wrongly.
- SyncToken: every QuickBooks record carries one and an update must send the current value, so you read before you write rather than updating a cached copy.
- Sparse updates: send a partial record without flagging it as sparse and QuickBooks clears the fields you omitted. A destructive default.
- Refresh tokens expire after a period of disuse, so an integration idle over a quiet season loses authorisation silently. We alert on token age rather than discovering it from a failed sync.
- Request throttling per company file, so bulk operations are batched and paced rather than looped.
- Records are voided or deactivated rather than deleted, which your reconciliation logic has to account for.
- QuickBooks Desktop is a different and more awkward integration than QuickBooks Online, needing a connector with access to the company file. We quote it honestly rather than treating it as equivalent.
Common questions
Tell us what you need
Describe the problem and we will come back with scope, timeline, and a rate. No obligation to proceed.
Get in touch