Almost every company that bills out of Salesforce and keeps its books in QuickBooks hits the same moment. The dashboard says one number for open receivables, the accounting report says another, and nobody can explain the gap without an afternoon in spreadsheets.

The gap is rarely one big mistake. It is usually a handful of small, predictable differences stacked together. These are the five we find most often, roughly in order of how much money they account for.

1. Draft invoices are being counted

Salesforce happily reports an invoice the moment the record exists. QuickBooks only knows about it once it has been released and synced. If your A/R report does not filter out drafts, every invoice still waiting for review inflates the Salesforce number.

Fix: define "billed" as a status, not as "the record exists," and apply that filter to every dashboard and aging report.

2. Sales tax is on one side and not the other

Many Salesforce reports total the invoice amount including tax, while finance compares against revenue net of tax, or the reverse. On a tax-heavy book of business that difference alone can run into the tens of thousands.

Fix: pick one basis, usually net of tax for revenue and gross for receivables, and label every report with it.

3. Payments were applied to the customer, not the invoice

When a payment lands on the customer record without being applied to specific invoices, QuickBooks shows it as unapplied cash. The invoices stay open in one system and look paid, or partly paid, in the other.

Fix: match payments to invoices automatically when the amount and reference agree, and send everything else to a short review queue instead of letting it sit unapplied.

4. Sync errors failed quietly

Integrations fail for ordinary reasons: a closed accounting period, a customer that was merged, an item that was renamed, a record that changed while the sync was running. If nobody is watching the error log, those records simply never arrive, and the two systems drift apart a few invoices at a time.

Fix: treat the sync error log as a work queue. Every error gets a root cause, not just a retry, and someone or something checks it daily.

5. Voids, credits and refunds were not mirrored

Credit memos, voided invoices and refunds often follow a different path than normal billing. If that path is manual, it is the first thing to be skipped during a busy close.

Fix: make voids and credits first-class actions in Salesforce that sync the same way invoices do, with the same audit trail.

How to find which one is yours

  1. Pick a cutoff date and export open invoices from both systems as of that date.
  2. Match on invoice number, not on customer or amount.
  3. Sort the differences into buckets: missing in QuickBooks, missing in Salesforce, amount mismatch, and status mismatch.
  4. Size each bucket. One of them will be most of the gap, and it will usually be one of the five causes above.

Once the gap is explained, the real goal is to stop it from reopening: one definition of billed, one tax basis, automatic payment matching, and a monitored sync. That is when the dashboard finally becomes something the owner, the controller and the bank all agree with.