· 12 min read

Salesforce QuickBooks Integration: Options, Setup and Pitfalls

A Salesforce QuickBooks integration should turn a closed-won deal into a customer and an invoice in QuickBooks Online, then show sales whether that invoice was paid. For most small and mid-size teams, an AppExchange app such as Breadwinner or DBSync does this in days. Use an iPaaS when QuickBooks is one of many systems, and a custom API build when your billing logic is unusual.
A CRM window and an accounting ledger connected by two arrows, with an invoice and a coin between them, illustrating a Salesforce QuickBooks integration
Connecting Salesforce and QuickBooks?Tell us how deals turn into invoices today. We’ll map the data flow and edge cases, build the integration and support it after launch.
Map my quote-to-cash sync

What a Salesforce QuickBooks integration should do

Sales lives in Salesforce. Invoices, payments and taxes live in QuickBooks. Without a connection, someone in accounting retypes every closed deal, and a sales rep emails finance to ask whether a customer paid.

The integration closes that loop, usually called quote-to-cash:

  1. Deal closes in Salesforce. The opportunity is marked Closed Won, with products and amounts.
  2. QuickBooks gets a customer and an invoice. The account becomes a customer (or matches an existing one), and the opportunity lines become invoice lines.
  3. Payment status comes back. When the customer pays, all or part, Salesforce shows the balance and status on the account and opportunity.

Everything else is optional. Teams that try to mirror all of QuickBooks inside Salesforce spend months on it and end up with two sets of books.

Quote-to-cash between Salesforce and QuickBooks Online Salesforce Account Opportunity (Closed Won) Opportunity products Invoice and payment records, read-only Integration layer app, iPaaS or custom stores IDs, logs errors QuickBooks Online Customer Invoice Payment Products and services, tax deal invoice paid? status Stays in QuickBooks only: general ledger, chart of accounts, journal entries, bank feeds, payroll
Deals flow one way, payment status flows back. Accounting data that sales doesn’t need never leaves QuickBooks.

Your integration options compared

Neither Intuit nor Salesforce offers its own connector for QuickBooks Online today. Intuit’s own Salesforce connector for QuickBooks Online is no longer listed in the QuickBooks app store, so the choice is between third-party products and your own build. That leaves four routes:

OptionWhat syncsDirectionCost levelEffortLimits
AppExchange app (Breadwinner, DBSync, eShopSync and others)Customers, invoices, payments, items, credit memos; some apps add estimates and sales receiptsTwo-way, with QuickBooks data stored as Salesforce recordsLow to medium: monthly subscriptionDays to a few weeks, mostly configurationYour process has to fit the app’s model; per-user or per-file pricing grows with you
No-code automation (Zapier, Make)Whatever you build: usually “closed won → invoice”One-way flows, chained togetherLowHours to daysFragile with multi-line invoices, partial payments and duplicate matching; errors land in an inbox
iPaaS (Workato, Celigo, Boomi)Anything both APIs expose, plus other systems in the same flowTwo-way, event-driven or scheduledHigh: annual platform licenseWeeks, needs an integration ownerWorth it only when QuickBooks is one of several connected systems
Custom build on the QuickBooks Online APIExactly what you defineTwo-way, real time via webhooksMedium to high: one-time build plus maintenanceWeeks to a few monthsYou own monitoring, token renewal and API changes

A quick note on the main apps. Breadwinner is a Salesforce-native app: according to its AppExchange materials, it creates invoices from accounts, opportunities, orders or custom objects and brings payment status back in real time. DBSync connects Salesforce with both QuickBooks Online and Desktop, and runs syncs from Salesforce buttons or on a schedule. Both list on AppExchange; check the current listing, reviews and pricing before you buy, because plans change often.

A fifth route exists if QuickBooks is already straining: replace it with an accounting system built on Salesforce, such as Accounting Seed. That is a finance migration, not an integration project, and needs your accountant’s buy-in.

Which Salesforce QuickBooks integration fits you?

QuickBooks Online vs QuickBooks Desktop

Most of this guide is about QuickBooks Online, because that is where new US companies are. According to Intuit, new US subscriptions to QuickBooks Desktop Pro Plus, Premier Plus and Mac Plus stopped after September 30, 2024; existing subscribers can renew, and Desktop Enterprise is still sold.

QuickBooks OnlineQuickBooks Desktop (Enterprise)
How apps connectCloud REST API with OAuth 2.0A local connector (such as Intuit’s Web Connector) on the machine or server where the company file lives
Real-time updatesWebhooks and a change data capture endpointScheduled polling; the file’s host must be online
Integration choicesWide: apps, Zapier, iPaaS, customNarrow: DBSync and a few others; Intuit offers a Salesforce CRM connector powered by DBSync as a paid add-on subscription for Enterprise Diamond
Typical trapAPI limits and token renewalThe sync stops when the server sleeps or the file is open in single-user mode

If you are on Desktop and planning a move to Online within a year, build the integration after the migration. Rebuilding mappings twice costs more than waiting.

Object and field mapping

Every reliable integration starts with one decision per object: which system is the system of record, the one where edits happen. The other system gets a read-only copy.

SalesforceQuickBooks OnlineDirectionSystem of record
Account (plus billing contact)CustomerSalesforce → QuickBooks on first invoice; billing address changes both ways only if agreedSalesforce for name and owner; QuickBooks for terms and tax status
Opportunity (Closed Won) or OrderInvoice (or Estimate, Sales Receipt)Salesforce → QuickBooks, onceQuickBooks after creation
Opportunity Product / Order ProductInvoice lineSalesforce → QuickBooksQuickBooks after creation
Product2Product or service itemQuickBooks → SalesforceQuickBooks (it carries the income account)
Custom Invoice object or the app’s invoice objectInvoice status, balance, due date, numberQuickBooks → SalesforceQuickBooks
Custom Payment objectPayment (applied to invoices)QuickBooks → SalesforceQuickBooks
Account field “QuickBooks Customer ID”Customer IdWritten back after createThe link itself; never edited by hand

The last row matters most. Matching by name or email works until two customers share one. Store the QuickBooks ID on the Salesforce account, and the Salesforce account ID on the QuickBooks customer if your tool allows a custom field, and every later sync is exact.

How to set up the integration, step by step

These steps follow the most common path, an AppExchange app with QuickBooks Online. The order is the same for iPaaS and custom builds.

  1. Agree on ownership with financeSit down with your accountant or controller for an hour. Decide which object each system owns (use the table above), what triggers an invoice (Closed Won, an approved order, a signed contract) and who fixes sync errors.
  2. Clean both sides firstMerge duplicate accounts in Salesforce and duplicate customers in QuickBooks. Make the Salesforce product list match the QuickBooks products and services list, or plan to pull products from QuickBooks. Dirty data copied by an integration becomes twice the cleanup.
  3. Create a dedicated integration userDon’t connect the app with an admin’s personal login. In Salesforce, use a dedicated user; supported editions such as Enterprise, Unlimited and Performance come with a limited number of free API-only Salesforce Integration user licenses, according to Salesforce. Give it a permission set with only the objects the sync touches. In QuickBooks, authorize the app with a company admin account that finance controls.
  4. Install in a sandbox and connect a test companyInstall the app in a Salesforce sandbox and connect it to a QuickBooks Online test company, not your live books. Load a copy of a few real customers and products.
  5. Map customers and matching rulesMap account fields to customer fields, and set the rule for existing customers: match on the stored QuickBooks ID first, then on an exact field you trust, and send everything else to a review queue instead of creating a new customer.
  6. Map invoices, lines, items and taxMap opportunity products to QuickBooks items, set terms and due dates, and let QuickBooks calculate sales tax. Decide what happens to discounts and to products that don’t exist in QuickBooks yet.
  7. Set up the return flowBring invoice number, status, balance and due date back to Salesforce, plus payments. Put them on the account and opportunity page layouts, read-only.
  8. Test the awkward casesRun ten real deals through the sandbox: a new customer, an existing one, a deal with five lines and a discount, a tax-exempt customer, a foreign-currency customer, a partial payment, a credit memo. Have finance check each invoice in QuickBooks.
  9. Go live in stepsConnect production, sync only new deals from a cut-off date, and watch the error log daily for two weeks. Backfill old invoices only if sales really needs the history.

Built by Gilzor

Results we’ve shipped

70+products launched
98%delivered on time
85%clients come back
Art Scherbakov, Co-FounderAndrew Laminsky, CTOYuri Rudenya, Head of Mobile Development at GilzorAlena Timofeeva, Product Marketing Lead

Talk to the people who build it. Tell us about your project and get a free estimate of scope, timeline and cost.

See how we’d approach yours

What not to sync

An integration that copies everything is slower, costs more API calls and leaks financial detail to people who don’t need it. Leave these in QuickBooks:

  • The general ledger and journal entries. Sales doesn’t need debits and credits, and posting accounting entries from a CRM is how books get corrupted.
  • The full chart of accounts. The income account belongs on the QuickBooks item. Salesforce only needs to pick the right item.
  • Bills, vendors, payroll and bank feeds. None of it helps a sales rep, and some of it is sensitive.
  • Tax calculations. Send the customer’s address and tax-exempt status; let QuickBooks calculate the tax.
  • Historic invoices beyond what sales uses. Twelve to twenty-four months of history is usually enough for renewals and collections.

Pitfalls and how to fix them

ProblemWhy it happensFix
Duplicate customersThe sync matches by name, and “Acme Inc” and “Acme, Inc.” look different. QuickBooks also requires a unique display name across customers, vendors and employees, so a customer named like a vendor fails with a duplicate name error.Match on the stored QuickBooks ID. Route unmatched accounts to a review queue. Add a suffix rule for clashing display names.
Nobody owns customer master dataSales edits the account name, finance edits the customer, each sync overwrites the other.One owner per field. Usually Salesforce owns name and owner; QuickBooks owns billing terms, tax status and balance.
Sync loopsA two-way field update triggers a sync back, which triggers another.Sync each field in one direction only. Skip updates made by the integration user.
Wrong sales taxTax amounts pushed from Salesforce disagree with what QuickBooks calculates.Let QuickBooks calculate tax. Sync addresses and exemption status, not tax amounts.
Product mismatchA Salesforce product has no matching QuickBooks item, so the invoice fails or lands on a generic item.Make QuickBooks the source for products; block closing deals with unmapped products.
Multi-currency errorsA customer created in USD can’t invoice in EUR. According to Intuit, a customer’s currency can’t be changed once it has transactions, and multicurrency can’t be turned off once enabled.Set the currency on the first sync from the Salesforce account or opportunity currency. Test before enabling multicurrency in QuickBooks.
Partial payments shown as paidThe sync reads only a “paid” flag, or applies one payment to one invoice.Sync the invoice balance, not just status. Show amount paid and amount due. Handle one payment across several invoices.
Sync silently stopsThe QuickBooks connection expires or is revoked; errors go to an ex-employee’s inbox.Use a dedicated integration user, send errors to a shared channel, and review the error log weekly.
API limits during backfillLoading years of invoices at once hits the QuickBooks Online limit, which Intuit documents as 500 requests per minute per company for each app, with batch requests capped separately.Backfill overnight in batches; sync only changed records after that.

When a custom integration makes sense

Apps fit most teams. A custom integration on the QuickBooks Online API pays off when:

  • Billing follows rules an app can’t express: milestones, usage-based lines, prepayments, revenue split across several QuickBooks companies.
  • Volume is high enough that per-user app pricing costs more each year than a build.
  • Salesforce is heavily customized, and the deal data lives in custom objects the apps don’t support well.
  • You need the same quote-to-cash logic in other systems, such as a customer portal or a billing platform.

A typical custom build covers OAuth 2.0 with automatic token refresh (Intuit now caps refresh tokens at five years and rotates them, so the service must always store the newest one), a customer matching service, invoice creation with idempotency so a retry never creates a second invoice, QuickBooks webhooks for payments, a retry queue, and an error dashboard for finance.

2–6 wksTypical app or iPaaS rollout, including sandbox testing
6–12 wksTypical custom quote-to-cash integration, one QuickBooks company
500/minQuickBooks Online API request limit per company and app, per Intuit’s documentation
15–25%Of the build per year for maintenance and API changes

For cost ranges by integration type, see our API integration cost guide. Building a larger data platform around the CRM? Read the cost of data integration.

Salesforce Xero integration in brief

Xero follows the same pattern: closed-won deal to invoice, payment back to Salesforce. The options are similar too. Breadwinner for Xero is listed in both AppExchange and the Xero app store; Zapier, Make and the iPaaS platforms have Xero connectors; and the Xero API supports custom builds.

Two differences to plan for. Xero’s API limits are tighter per organization: Xero’s developer documentation lists 60 calls per minute and 5,000 per day per connected organization on paid app plans, and 1,000 per day on the free Starter plan introduced in March 2026, so large backfills take days. And Xero calls customers “contacts”, shared with suppliers, so the same duplicate and ownership rules apply.

Go-live checklist

Salesforce QuickBooks go-live readiness

FAQ

Can Salesforce integrate with QuickBooks?
Yes. Salesforce and QuickBooks Online connect through AppExchange apps such as Breadwinner and DBSync, through no-code tools like Zapier, through integration platforms such as Workato or Celigo, or through a custom integration on the QuickBooks Online API. Neither Salesforce nor Intuit currently offers its own free connector for QuickBooks Online, so every option is a third-party product or a build.
Does QuickBooks Online have a native Salesforce integration?
No. Intuit’s own Salesforce connector for QuickBooks Online is no longer listed in the QuickBooks app store, so today the options are third-party apps, most of them on AppExchange. The closest thing to “native” is an AppExchange app that stores QuickBooks data as Salesforce records, which is how Breadwinner describes its product. QuickBooks Desktop Enterprise Diamond has a separate Salesforce CRM connector, sold as a paid add-on.
What is the best Salesforce QuickBooks integration app?
It depends on who will run it. Breadwinner suits teams that want invoices and payments visible inside Salesforce with little setup and no integration staff. DBSync supports both QuickBooks Online and Desktop and suits teams with someone who can configure workflows. If you already pay for Workato, Celigo or Boomi, use their connectors. Shortlist two, install both in a Salesforce sandbox and test your real invoice cases before buying.
How do I sync invoices from QuickBooks to Salesforce?
Create invoices from a closed-won opportunity (or an order) through your integration app, store the QuickBooks invoice ID on the Salesforce record, and let the app pull invoice balance and status back on a schedule or through QuickBooks webhooks. Show the invoice as a related list on the account and opportunity. Keep the invoice read-only in Salesforce so edits only happen in QuickBooks.
Can Zapier connect Salesforce and QuickBooks Online?
Yes. Zapier has ready templates that create a QuickBooks Online invoice when an opportunity is closed won and that create or update Salesforce records from new QuickBooks invoices. It works well for low volume and simple invoices. It struggles with multi-line invoices built from opportunity products, partial payments and keeping customers free of duplicates, so most growing teams move to an app or iPaaS later.
How much does a Salesforce QuickBooks integration cost?
No-code automations cost tens of dollars a month in tool fees. AppExchange apps usually run from under a hundred to several hundred dollars a month, often priced by users or company files, and some vendors quote on request. Enterprise iPaaS licenses tend to start in the five figures per year. A custom integration is a one-time build plus maintenance; our API integration cost guide shows typical ranges.

Next steps

Connecting more than QuickBooks? The Salesforce integration guide covers the patterns that repeat across every system, and the Salesforce NetSuite integration guide covers the move up when QuickBooks no longer fits.

If your billing logic needs more than an app, Gilzor’s engineers can map the data flow between Salesforce and QuickBooks, build the integration and support it after launch. See our Salesforce integration services.

No sales pitch

Get a straight answer for your project

Tell us what you’re building. We’ll reply with options, a rough cost and timeline. If we’re not the right fit, we’ll say so.

Next, a few optional questions so the first call is useful. We use your details only to reply to your request. Privacy Policy

Yuri Rudenya
Written byYuri Rudenya

Head of Mobile Development at Gilzor. Leads iOS and Android delivery and the mobile app audits, from release process to architecture.

LinkedIn →

Gilzor · Web Development partner

Need a team for your web product?

95%referred by business partners
70+successful launches
85%repeat business
98%delivered on time

The team behind them

Art Scherbakov
Art ScherbakovCo-Founder
Andrew Laminsky
Andrew LaminskyCTOLinkedIn
Yuri Rudenya
Yuri RudenyaHead of Mobile Development at GilzorLinkedIn
Alena Timofeeva
Alena TimofeevaProduct Marketing LeadLinkedIn
Tell us what you’re buildingOptions, a rough cost and timeline for your project. No commitment.

More insights