Connect Salesforce to QuickBooks
Close a deal in Salesforce and have the invoice waiting in QuickBooks Online, with the customer matched and the line items carried from the opportunity. When the invoice is paid, the opportunity shows it. No rekeying, no month-end surprises, and an approval step for anything unusual. Every entry is an ordered run.
Why teams connect Salesforce and QuickBooks
Sales works in Salesforce. Finance works in QuickBooks. Without a link, someone re-types every closed deal into QuickBooks as an invoice, the customer name is spelled three ways, and the AE has to ask finance whether the customer has paid before starting the renewal conversation.
- A closed-won opportunity creates a QuickBooks invoice with the products, quantities, and prices from the opportunity line items
- Customers are matched, not duplicated, on a stored QuickBooks ID, falling back to a normalized name and email
- When QuickBooks records a payment, the opportunity shows paid, partially paid, or overdue, so sales and CS see it without asking
- An approval step can hold any invoice over a threshold, or with a non-standard discount, before it posts
Worked example
The quote-to-cash flow most teams turn on first.
A closed-won Salesforce opportunity becomes a QuickBooks invoice, payment status back
Triggered on the stage change, idempotent on the opportunity ID.
- Trigger: Salesforce opportunity reaches
StageName = Closed Won, carrying the account, the owner, and theOpportunityLineItemrows. - Resolve customer: find the QuickBooks customer by
Account.QuickBooks_Customer_Id__c. If empty, search by normalized name and billing email, and on a match write the ID back to the account. - Idempotency: query QuickBooks for an invoice whose
DocNumberor private note holds the opportunity ID. If one exists, stop. - Map lines: for each line item, resolve the QuickBooks item by product code, carry quantity and unit price, and apply the QuickBooks tax code from a lookup.
- Approval: if the amount is over the threshold or the blended discount exceeds the limit, pause for finance approval. Otherwise continue.
- Create invoice: QuickBooks
Create Invoicewith the lines, the customer, the terms from the account, and the opportunity ID in the private note. - Write back: set
Opportunity.Invoice_Number__candInvoice_Status__c = Sent. A later QuickBooksPaymentfor that invoice updates the status to Paid or Partially Paid.
Field mapping
The starting map for the opportunity to QuickBooks Invoice step.
| Salesforce | QuickBooks Online | Notes |
|---|---|---|
Opportunity.Id | Invoice.PrivateNote (contains ID) | Idempotency key. Queried before creating so a re-fired trigger does not double-invoice. |
Account.QuickBooks_Customer_Id__c | Invoice.CustomerRef | Match key. Written back on first match if only name and email matched. |
OpportunityLineItem.Quantity | Invoice.Line.SalesItemLineDetail.Qty | One line per product. |
Product2.ProductCode | Invoice.Line.SalesItemLineDetail.ItemRef | Resolved to the QuickBooks item ID. Unmapped codes fall back to a generic "Services" item and flag for review. |
OpportunityLineItem.UnitPrice | Invoice.Line.SalesItemLineDetail.UnitPrice | Override, so QuickBooks price rules do not restate the quoted price. |
Opportunity.CurrencyIsoCode | Invoice.CurrencyRef | Currency gotcha: only on a multi-currency QuickBooks company, and it must match the customer's currency or the create fails. |
Account.Payment_Terms__c | Invoice.SalesTermRef | Mapped through a lookup from Salesforce terms to QuickBooks term records. |
QuickBooks Payment.TotalAmt vs Invoice.Balance | Opportunity.Invoice_Status__c | Return path. Paid when balance is zero, Partially Paid otherwise, Overdue past the due date. |
What syncs, each direction
- Invoices. A closed-won opportunity creates an invoice with mapped items, quantities, prices, terms, and tax. (Salesforce to QuickBooks)
- Customers. A new or changed account creates or updates the QuickBooks customer, matched on a stored ID. (Salesforce to QuickBooks)
- Payment status. Payments and credit memos update the opportunity's invoice status and paid date. (QuickBooks to Salesforce)
- AR aging (optional). A nightly roll-up writes total open AR and days overdue onto the account for the CS and collections view. (QuickBooks to Salesforce)
Governance and audit
The same controls apply to this sync as to every other Neblex workload.
- Ordered run log. Every invoice records the opportunity, the resolved customer, the mapped lines, and the QuickBooks response. Replay without re-posting.
- Approval steps. Invoices over a threshold, or with a non-standard discount, pause for a named approver, so finance sees anything unusual before it is booked.
- Scoped access. Salesforce uses a connected app limited to Opportunity, Account, and Product objects. QuickBooks uses an OAuth grant to one company file.
- Environments. Build against a Salesforce sandbox and a QuickBooks sandbox company, then promote the same flow to production.
Frequently asked questions
How is this different from Breadwinner, DBSync, or the QuickBooks apps?
Those are capable Salesforce-QuickBooks connectors and plenty of teams are happy on them. Neblex fits when the invoice step is part of a bigger flow, for example the same run also provisions the account and notifies CS, and you want one run log, an approval step you control, and the same governance across every integration.
Does it create the invoice automatically or wait for a person?
Your choice. The default creates it on closed-won. You can add an approval step so a person confirms first, either always or only above a threshold.
How are duplicate customers avoided?
It matches on a QuickBooks customer ID stored on the account. The first time, when only name and email match, it writes the ID back so every later run matches directly.
Can it handle recurring or subscription billing?
For simple renewals, yes, by creating a new invoice per term from the opportunity. True subscription billing usually belongs in a billing system, and Neblex can sit between that and QuickBooks instead.
What if a product is not set up in QuickBooks?
The line falls back to a generic item and the run is flagged for review, rather than failing the whole invoice or guessing at an account.
Does payment status really come back to Salesforce?
Yes. QuickBooks payment and credit-memo events update the opportunity's invoice status, paid date, and balance, so sales and CS never have to ask finance.
Connectors on this page
Salesforce
CRM
- Operations
- 1,296
- Typed outputs
- 57.9%
- Change triggers
- 95 (poll)
- Authentication
- OAuth2
QuickBooks
Accounting
- Operations
- 50
- Typed outputs
- 100%
- Change triggers
- Poll or inbound webhook
- Authentication
- OAuth2
Bring one real integration
We will build it with you against your own systems, with the run log open.