Guide · Revenue Operations

Our Salesforce numbers don't match finance. What do we do?

Why Salesforce pipeline, bookings and revenue reports disagree with finance and the ERP, a step-by-step way to find the gap, the fixes that make the numbers trustworthy again, and when a health check is worth it.

Author
Chris Gooding
Read time
7 min read
Published
October 29, 2026
Topic
Revenue Operations
On this page (6)

When Salesforce and finance disagree, start by agreeing what each number is supposed to measure, then trace the remaining gap deal by deal until you know whether it comes from definitions, data entry or the integration. Most gaps are several small errors, not one big one, and each leaves a trace you can find. Fix the definitions first, then the data, then the process that lets it drift.

Why don't Salesforce and finance report the same number?

Because they usually measure different events. Closed Won records a commercial commitment on a sales date. Finance reports what was invoiced and what accounting recognizes, which follows rules about when value is delivered.

  • Booked or closed: the signed commitment, often measured as contract value or annualized value, dated when the rep marks the deal Closed Won.
  • Invoiced or billed: the amount actually invoiced in a period, which may be a fraction of the deal if billing is monthly, annual or milestone based.
  • Recognized: what accounting counts as revenue, which lives in the ERP or a revenue subledger, not in Salesforce.

If sales says bookings and finance hears revenue, the two numbers will never match. Write each definition down, name the system of record for each, and label every report and dashboard with which one it shows.

What data problems make the gap worse?

Once definitions are agreed, the remaining gap is usually a data or process problem.

  • Close date and stage hygiene. Reps mark deals won before the contract is signed, or after the quarter ends, so the period in Salesforce differs from the contract date finance books against.
  • Duplicates. The same deal entered twice, or the same customer under two accounts, inflates bookings and breaks the match to ERP customer records.
  • Multi-currency. Salesforce converts amounts using the rates someone maintains in the org, while finance uses its own rates. Without dated exchange rates, closed deals can be valued at today's rate instead of the rate on the close date.
  • Splits and partial deals. Revenue splits should total the full deal value, while overlay splits are designed to exceed it. A report that sums the wrong split type double counts. Partial deals entered as one opportunity also break the match to separate orders.
  • Edits after close. Amounts, products or discounts changed on a Closed Won opportunity after finance has booked the order quietly move the CRM number away from the ERP.
  • Integration timing and sync gaps. Orders, invoices or payments that failed to sync, or that sync on a schedule, leave records in one system and not the other at month end.
  • Reports with different filters. Two reports labeled bookings can use different date fields, record types, currencies or owner filters, and both get shared as the number.
Symptom, likely cause and where to check
SymptomLikely causeWhere to check
Salesforce bookings are higher than finance every monthDuplicate opportunities, overlay splits counted as revenue, or renewals mixed into new businessDuplicate report on Opportunity and Account, split type used in the report, record type filters
Deals land in a different month or quarter than financeClose date set by habit, not by contract signatureField History Tracking on Close Date and Stage, close date vs contract or order date
A won deal has no matching order or invoice in the ERPSync error, missing required field, or a deal that never became billableIntegration error log, ERP order number field on the opportunity
Totals differ only for international dealsExchange rates out of date, or static rates where finance uses dated ratesCurrency setup, Advanced Currency Management settings, who maintains rates
The gap changes after the quarter is closedAmounts or products edited on Closed Won dealsField history on Amount and products, opportunity history report
Two dashboards show two bookings numbersDifferent filters, date fields or currenciesReport filters, date field used, report owner

How do we diagnose the gap, step by step?

Work in this order. Each step removes one class of difference.

  • 1. Pick one closed period and one number, such as last quarter's new bookings. Do not try to reconcile everything at once.
  • 2. Get both lists at the deal level: the Salesforce report and the finance or ERP extract, each with customer, amount, date and an ID that links them.
  • 3. Confirm both lists measure the same thing. If one is bookings and the other is invoiced revenue, stop and agree the definition first.
  • 4. Match deal by deal on the shared ID, such as the ERP order number stored on the opportunity. Sort the unmatched rows into three piles: in Salesforce only, in finance only, and in both with different amounts or dates.
  • 5. For each pile, find the cause using the table above: duplicates, close dates, currency, splits, edits after close, sync failures or report filters.
  • 6. Count how much of the gap each cause explains. That ranking tells you what to fix first.

If you cannot match deals because no shared ID exists, that is the first finding. A reconciliation without a key turns into guesswork every month.

How do we fix it so leadership trusts Salesforce again?

  • Shared definitions. Sales and finance leaders sign off one written definition each for pipeline, bookings, billings and revenue, plus the system of record for each. Label dashboards with the definition they use.
  • A reconciliation report. Store the ERP order or invoice number on the opportunity, then build a standing report of Closed Won deals with no matching order. Review it before every month-end close, not after.
  • Validation rules. Require the fields finance needs before a deal can be marked Closed Won, such as contract date, currency and products, and lock amount and product fields after close so changes go through an approval.
  • Field History Tracking. Track Stage, Close Date and Amount on Opportunity so you can see who changed what and when. How many fields you can track and how long history is kept varies by edition.
  • Duplicate rules and cleanup. Clean existing duplicate accounts and opportunities, then use duplicate rules to block or flag new ones at entry.
  • Integration ownership. Name one owner for the Salesforce and ERP sync, agree the system of record for each object, and have someone watch the error log. A sync with no owner fails quietly.
  • One official report. Retire competing bookings reports and keep one, owned by a named person, with its filters written in the description.

Adoption matters too. If half the team updates deals only at quarter end, no rule will make mid-quarter numbers line up. Keep required fields few and useful. One manufacturer we worked with had an org overcomplicated by several admins; after it was streamlined and NetSuite was integrated, all 99 reps were active within 30 days.

When should we bring in outside help?

Bring in help when your team has tried to reconcile and cannot explain the gap, when no one owns the ERP integration or understands how it was built, when the org has passed through several admins or partners, or when the reconciliation keeps working once and then drifting again. Those are signs the cause is in the build, not the habits.

A Salesforce health check is the usual first step. It checks whether dashboards reflect reliable data and traces gaps to causes such as duplicate or incomplete records, conflicting automation or a broken integration with your finance system. You get findings ranked by risk and effort, which you can fix yourself or with a partner.

How does Abstrakt help?

Abstrakt Solutions is a Salesforce consulting partner in St. Louis. We start with a health check that needs only read-only access and a short kickoff, then run org analysis and interviews with sales, RevOps and finance. If you want help carrying it out, we fix definitions, reports, validation rules and the ERP integration as an optimization or integration project, billed at $185 to $225 per hour with a written estimate after discovery. If you would rather start on your own, try the free org health self-assessment first.

Questions people also ask

Should Salesforce bookings ever match finance revenue exactly?

No. Bookings record a signed commitment on a sales date, while revenue follows accounting rules about when value is delivered. They can differ for good reasons. What should match is bookings in Salesforce against bookings or orders in finance for the same period, using the same written definition. If those disagree, look for a data or integration problem.

Which system should be the source of truth for revenue?

The ERP or accounting system. Invoices, payments and recognized revenue belong there, and Salesforce should show finance figures as read-only copies rather than retyped values. Salesforce stays the source of truth for the deal itself: who bought, on what terms, who approved the discount and when it closed.

How do we stop reps editing deals after they close?

Use validation rules to lock amount, product and discount fields once an opportunity is Closed Won, with an exception for a finance or admin role. Turn on Field History Tracking for the fields that matter, so any change that does get through is visible with who made it and when.

Our ERP integration was built years ago and nobody owns it. Where do we start?

Start by finding where it logs errors and who receives them. Then document which objects sync, in which direction and on what schedule, and name one owner. Many reconciliation gaps turn out to be records that failed to sync and sat unnoticed. A health check or integration review can map this for you.

Can a health check fix the problem on its own?

A health check finds and ranks the causes; it does not change your org. It tells you whether the gap comes from definitions, data, automation or the integration, and what to fix first. Some companies then fix items in-house, some run an optimization project with us, and some move to managed services.

Chris Gooding, President & CEO of Abstrakt Solutions
Chris Gooding
President & CEO, Abstrakt Solutions
LinkedIn →
Tech Talk · monthly newsletter

Valuable insights on technology, CRM and AI, once a month.

Written by the consultants who do the work. One email a month, and you can unsubscribe anytime.

We never share your email. See past issues →

Call (314) 916-4095 Book a consultation
Call (314) 916-4095 Book a call