Why ecommerce reports do not match: the direct answer

Your ecommerce reports do not match because each system is usually answering a different question. Your store platform may count placed orders. Your accounting export may count booked revenue. Your ad platform may count attributed conversions inside its own attribution window. Your analytics tool may count tracked website purchases. Your marketplace report may count settlements after fees and payout timing. Your spreadsheet may apply another layer of filters, joins, formulas, or manual edits.

That means one dashboard is not automatically wrong. The mismatch often comes from different rules for date basis, revenue recognition, attribution, refunds, discounts, tax, shipping, order status, marketplace settlement, POS syncs, SKU mapping, currency, timezone, or spreadsheet transformations.

Operator answer: do not start by asking, “Which dashboard is correct?” Start by asking, “Which business decision am I making?” Then choose the report whose definition matches that decision.

If you are deciding whether yesterday’s sales were down, start with raw commerce orders. If you are closing the month, use finance or accounting-recognized revenue. If you are tuning Meta or Google campaigns, review platform-attributed campaign data but do not treat it as total store revenue. If you are investigating refunds, separate refund date from original order date. If you are analyzing products, reconcile SKU, variant, bundle, and return logic before trusting the product table.

Which ecommerce report should you trust?

The report to trust depends on the decision. A single “master dashboard” can still mislead you if it blends incompatible definitions of revenue, orders, refunds, AOV, ROAS, and customer value.

Decision you need to makeBest starting sourceWhyWhat not to mix in
How many orders were placed?Commerce platform or order databaseIt contains transaction-level order records, statuses, timestamps, discounts, customer IDs, and line items.Ad platform conversions or analytics sessions.
How much revenue should finance book?Accounting, payment, or finance exportIt is closer to settlements, refunds, tax, shipping, fees, and recognized revenue rules.Gross sales dashboards without refund and fee treatment.
Which campaign should get more budget?Ad platform plus blended store-level performanceAd tools show platform-attributed outcomes; store data shows whether total revenue and margin support the spend.Do not compare ROAS from one attribution window to revenue from another source.
Why did conversion rate change?Analytics tool and commerce checkout dataAnalytics explains traffic and site behavior; checkout/order data confirms completed purchases.Do not use order exports alone to diagnose traffic quality.
Which products are causing the issue?Order line-item table, product catalog, returns dataProduct diagnosis needs SKU, variant, bundle, discount, fulfillment, and refund context.Do not rely only on aggregate revenue by product name.
Are customers coming back?Cohort, customer, or lifecycle reportingRetention, repeat purchase, and LTV depend on identity resolution and customer-level history.Do not use simple order count without customer matching rules.

The safest rule is to keep metric families together. Reconcile revenue from one definition, orders from one status policy, refunds from one timing rule, and ROAS from one attribution model. Mixing definitions creates false precision.

Report mismatch map: where ecommerce numbers usually diverge

Use this map to locate the mismatch before rebuilding your entire reporting stack.

Mismatch bucketSymptom operators seeLikely causeFirst thing to inspect
Date basisRevenue matches over a month but not by day.One report uses order date, another uses payment date, fulfillment date, refund date, payout date, or local timezone.Timestamp field, timezone, and date filter logic.
Revenue basisOne report is higher than another even with the same order count.Gross revenue, net revenue, total sales, tax, shipping, discounts, refunds, or fees are treated differently.Revenue formula and included components.
Order inclusionOrder counts differ across dashboards and exports.Cancelled, unpaid, partially paid, test, fraud, draft, subscription, exchanged, or POS orders are included in one place but excluded elsewhere.Order status filters.
Refund and return handlingRefund totals do not tie to revenue reports.Refunds are counted by refund date in one tool and original order date in another; partial refunds and returns may be separated.Refund timestamp, refund amount, return status, and original order ID.
Attribution logicMeta, Google Ads, GA4, and store revenue all show different numbers.Each platform uses different tracking, attribution windows, click/view rules, modeled conversions, and deduplication.Attribution window and conversion source.
Customer identityRepeat purchase, retention, and LTV do not match.Email, phone, customer ID, marketplace ID, guest checkout, and POS identity are stitched differently.Customer matching rule.
Product and SKU mappingProduct reports disagree with sales reports.Variants, bundles, renamed SKUs, aliases, kits, exchanges, or returns are mapped inconsistently.Line-item SKU, variant ID, bundle logic, and product catalog history.
Marketplace and POS settlementMarketplace payout does not match marketplace order revenue.Fees, holds, chargebacks, shipping adjustments, settlement date, and payout timing are included differently.Payout report and settlement date.
Currency and timezoneInternational revenue changes depending on report.Reports use different exchange rates, transaction currencies, store currency, or timezone cutoffs.Currency conversion field and reporting timezone.
Spreadsheet transformationsManual report disagrees with every dashboard.Pivot tables, lookup errors, duplicated rows, excluded statuses, stale exports, or formula changes modify the source data.Raw export row count, formulas, joins, and refresh date.

A practical workflow for reconciling ecommerce reports

Do not reconcile every metric at once. Start from the symptom and follow the shortest path to the likely definition mismatch.

Start here if total revenue differs

  1. Freeze one date range and one timezone.
  2. Export raw orders for that exact range from the commerce platform or order database.
  3. Separate gross revenue, discounts, shipping, tax, refunds, fees, and net revenue into different columns.
  4. Check whether each report uses order date, payment date, fulfillment date, refund date, or payout date.
  5. Compare revenue before refunds and revenue after refunds separately.

If order count is the same but revenue differs, the issue is usually revenue basis. If revenue matches over a longer period but not by day, the issue is usually timing.

Start here if order counts differ

  1. List the order statuses included in each report.
  2. Check whether cancelled, unpaid, partially paid, draft, test, fraud, exchanged, subscription, POS, and marketplace orders are included.
  3. Compare total orders, paid orders, fulfilled orders, and refunded orders separately.
  4. Look for duplicate order IDs created by exports, joins, or subscription renewals.

Do not use ad conversions or analytics purchases as the source of truth for order count. They are tracking outputs, not the order ledger.

Start here if ROAS differs

  1. Write down the attribution window for each platform.
  2. Separate click-attributed, view-attributed, modeled, and tracked purchases where possible.
  3. Compare platform-attributed revenue to total store revenue, not as a replacement for it.
  4. Check whether returns, cancellations, taxes, shipping, and discounts are included in the revenue used for ROAS.
  5. Use blended measures alongside platform ROAS when budget decisions affect the whole store.

Ad platforms are useful for campaign diagnostics, but they should not be treated as the only source for company-level revenue or profit decisions.

Start here if product performance differs

  1. Export order line items, not only product summary rows.
  2. Map product ID, variant ID, SKU, product name, bundle parent, and bundle component.
  3. Check whether renamed SKUs or merged products changed historical reporting.
  4. Separate revenue sold from revenue kept after refunds and returns.
  5. Look at contribution margin if product decisions involve profitability, not just sales volume.

Product reports often disagree because one system reports what was sold, another reports what was fulfilled, and another reports what was retained after refunds.

Start here if refund totals differ

  1. Separate refund amount from return status.
  2. Compare refunds by original order date and refunds by refund processed date.
  3. Check for partial refunds, shipping refunds, tax refunds, exchanges, store credit, and chargebacks.
  4. Confirm whether refunded orders are removed from revenue or shown as negative transactions.

A refund report can be correct and still not match a revenue report if one uses the refund date and the other adjusts the original order date.

Start here if marketplace numbers differ

  1. Keep marketplace order revenue separate from marketplace payouts.
  2. Reconcile fees, reserves, holds, shipping adjustments, returns, chargebacks, and payout date.
  3. Compare order date revenue to settlement date cash movement.
  4. Document marketplace-specific caveats instead of forcing them into the same formula as direct-to-consumer orders.

Marketplace settlement reports are cash and payout tools. They are not always clean substitutes for order-level revenue reports.

Build a cleaner revenue-leak workflow

If your team is still stitching orders, refunds, ad spend, product performance, and retention data in spreadsheets, create a SignalOps account to start building a more repeatable audit workflow around the numbers operators actually use.

Analyze your order export

Metric definition matrix: revenue, orders, refunds, AOV, ROAS, and LTV

Before you compare dashboards, define the metric. Most reporting fights are definition fights disguised as data problems.

MetricWorking definitionCommon sourcesCommon mismatch reasonRecommended source of truth
Gross revenueProduct revenue before discounts, refunds, tax, shipping, and fees, depending on platform setup.Commerce platform, order export, BI dashboardSome reports include shipping or discounts; others do not.Order line-item export with documented formula.
Net revenueRevenue after discounts and refunds, with tax, shipping, and fees treated according to your finance policy.Commerce platform, accounting, finance exportRefund timing and fee treatment differ.Finance-approved revenue report.
Total salesPlatform-specific sales total that may include product sales, discounts, returns, shipping, and tax.Store dashboardThe label sounds universal but the formula is platform-specific.Use only after documenting included components.
OrdersAll order records created in the store.Commerce platform, order databaseDraft, test, cancelled, unpaid, or marketplace orders may be included.Commerce order table.
Paid ordersOrders with completed or captured payment.Commerce platform, payment processorPayment status filters differ from order status filters.Commerce or payment export with payment status.
Fulfilled ordersOrders shipped or marked fulfilled.Commerce platform, warehouse, 3PLPartial fulfillment, split shipments, and cancellations create timing gaps.Fulfillment or warehouse system for operations decisions.
RefundsMoney returned to customers through full or partial refunds.Commerce platform, payment processor, accountingRefund date versus original order date; partial refunds; shipping and tax refunds.Payment or commerce refund export, with timing rule documented.
ReturnsItems requested, approved, received, or processed through a return workflow.Returns platform, support tools, warehouseReturn status is not the same as refunded money.Returns system for return operations; finance export for refunded value.
DiscountsPromo, automatic, code-based, or manual reductions from price.Commerce platform, order exportLine-item versus order-level discount allocation.Order line-item export with allocation rule.
ShippingShipping charged to the customer, or shipping cost to the merchant, depending on report.Commerce platform, carrier, 3PL, accountingShipping revenue and shipping cost are often confused.Commerce for shipping charged; accounting or 3PL for shipping cost.
TaxSales tax, VAT, or other tax collected.Commerce platform, tax software, accountingSome reports include tax in revenue; others exclude it.Tax or accounting system.
AOVAverage order value, usually revenue divided by order count.Commerce platform, analytics, spreadsheetDifferent revenue numerator or order denominator.Define formula from order export and reuse it.
Conversion ratePurchases divided by sessions, users, visitors, or another traffic denominator.Analytics tool, ecommerce dashboardDifferent traffic denominator, consent limits, tracking loss, or session rules.Analytics tool for site behavior, validated against order count.
ROASAttributed revenue divided by ad spend.Meta Ads, Google Ads, analytics, attribution toolsAttribution windows, modeled conversions, view-through credit, and revenue basis differ.Ad platform for platform optimization; blended store data for business decisions.
MERTotal revenue divided by total marketing spend.Finance, ad platforms, spreadsheet, BI dashboardRevenue and spend sources may use different dates or include different channels.Finance-approved revenue and complete spend export.
Repeat purchase rateShare of customers who purchase more than once in a defined period.Cohort tool, customer table, lifecycle platformCustomer identity and time window differ.Customer-level order history with documented identity matching.
Retention rateShare of customers who continue buying or remain active across a defined cohort window.Cohort reporting, lifecycle analyticsCohort start, active definition, and purchase window differ.Cohort tool or customer table with stable cohort rules.
LTVCustomer value over a defined period, often revenue or margin per customer.Cohort tool, BI, finance modelGross revenue, net revenue, contribution margin, and time horizon are mixed.Finance-approved cohort model.
Product revenueRevenue assigned to products, variants, bundles, or SKUs.Order line items, product dashboardBundles, variants, renamed SKUs, and returns are mapped differently.Order line-item table with SKU mapping rules.
Contribution marginRevenue remaining after selected variable costs such as COGS, payment fees, shipping, discounts, and sometimes ad spend.Finance model, BI dashboard, product profitability toolCost allocation rules differ.Finance-approved margin model.

Common mismatch scenarios and what to audit first

Shopify or WooCommerce revenue does not match GA4

The likely explanation is that your commerce platform is reporting order records while GA4 is reporting tracked website events. GA4 can be affected by consent settings, tracking gaps, session rules, attribution, duplicate event handling, and transaction ID collection.

Check first: transaction IDs, purchase event firing, timezone, refunds, tax, shipping, discounts, and whether the same order date range is used. Do not use: GA4 as the sole ledger for order revenue.

Meta Ads or Google Ads revenue does not match analytics

The likely explanation is attribution. Ad platforms, analytics tools, and your store apply different rules for click credit, view credit, conversion windows, modeled conversions, deduplication, and channel assignment.

Check first: attribution window, conversion action, purchase event, revenue value passed, and whether returns or cancellations are adjusted. Do not use: one platform’s attributed revenue as total business revenue.

Order exports do not match dashboard orders

The likely explanation is a filter mismatch. The dashboard may exclude cancelled, test, unpaid, or archived orders while the export includes them, or the export may include POS, marketplace, subscription, draft, or duplicate rows from line items.

Check first: order status, payment status, sales channel, test orders, and whether each row is an order or a line item. Do not use: row count as order count unless each row is one order.

Refund totals do not match revenue reports

The likely explanation is timing. One report may apply the refund to the original order date, while another shows the refund on the date money was returned. Partial refunds, store credit, tax refunds, shipping refunds, chargebacks, and exchanges can also cause gaps.

Check first: refund date, original order date, refund amount, refund reason, payment processor record, and return status. Do not use: returns requested as a proxy for refunded revenue.

AOV changes depending on the report

AOV changes when the numerator or denominator changes. One tool may use gross sales divided by all orders. Another may use net revenue divided by paid orders. Another may exclude tax, shipping, refunds, discounts, or cancelled orders.

Check first: revenue numerator and order denominator. Do not use: AOV from mixed revenue and order definitions when evaluating pricing, bundles, or promotions.

Product reports disagree with sales reports

The likely explanation is product mapping. Product dashboards often group by current product name, while order exports may preserve historical SKU, variant, bundle, or line-item details. Refund and return handling can also move product performance after the sale.

Check first: SKU, variant ID, bundle logic, renamed products, deleted products, and refunded line items. Do not use: product name alone as the product key.

Marketplace payouts do not match order revenue

The likely explanation is that order revenue and payout cash are different concepts. Marketplace payouts may include fees, reserves, advertising charges, shipping adjustments, tax handling, chargebacks, and settlement delays.

Check first: settlement date, payout report, fees, holds, returns, and marketplace-specific adjustments. Do not use: payout amount as clean product revenue.

Manual spreadsheets disagree with dashboards

The likely explanation is spreadsheet logic. A stale export, hidden filter, broken lookup, duplicate join, pivot-table setting, overwritten formula, or manual exclusion can change the result even when the original data was correct.

Check first: raw row count, unique order IDs, formula ranges, lookup keys, pivot filters, export timestamp, and any manual edits. Do not use: a spreadsheet total until it reconciles back to raw source rows.

How to assign a source of truth by decision type

A source of truth is not just a tool. It is a documented rule that says which system, metric definition, date window, and filter policy your team will use for a specific decision.

For each important metric, document these fields:

  • Metric name and business use.
  • Primary source system.
  • Date basis: order date, payment date, fulfillment date, refund date, settlement date, or cohort date.
  • Reporting timezone.
  • Included and excluded order statuses.
  • Revenue basis: gross, net, total sales, booked revenue, or contribution margin.
  • Tax, shipping, discount, refund, fee, and chargeback treatment.
  • Attribution window and conversion source, if marketing-related.
  • Customer identity rule for retention, repeat purchase, and LTV.
  • SKU, variant, bundle, and product mapping rules.
  • Marketplace, POS, subscription, and wholesale caveats.
  • Metric owner and refresh cadence.

Practical takeaway: create an Ecommerce Report Reconciliation Matrix with one row per metric and columns for source system, definition, date basis, revenue basis, refund handling, tax and shipping treatment, attribution window, order status inclusion, SKU mapping, known caveats, owner, and recommended source of truth.

Once this is documented, reporting disagreements become easier to resolve. Instead of debating which dashboard “feels right,” the team can ask whether the report follows the approved rule for that decision.

Operator audit script: how to prevent mismatches from recurring

Run this script before major budget changes, merchandising decisions, monthly reporting, retention planning, or refund analysis.

  1. Freeze the date range. Use exact start and end dates, one timezone, and one refresh timestamp.
  2. Export raw orders. Pull order-level and line-item-level data before relying on summaries.
  3. Compare gross and net revenue separately. Do not reconcile one blended revenue number until discounts, refunds, tax, shipping, and fees are separated.
  4. Separate refunds by two dates. Build one view by original order date and another by refund processed date.
  5. Verify order statuses. Document whether cancelled, unpaid, partially paid, test, fraud, exchanged, subscription, POS, and marketplace orders are included.
  6. Check attribution windows. Record the conversion source, attribution window, click/view rules, and modeled conversion settings for each ad or analytics report.
  7. Reconcile SKU aliases and bundles. Map SKU, variant ID, product ID, bundle parent, bundle component, and historical product names.
  8. Compare marketplace settlements separately. Reconcile order revenue to payout reports only after fees, holds, reserves, returns, and settlement timing are identified.
  9. Inspect spreadsheet transformations. Check row counts, unique order IDs, lookup keys, pivot filters, formula ranges, and manual edits.
  10. Document the source-of-truth rule. For every metric used in a decision, write down the approved source, formula, timing rule, and owner.

The goal is not to make every platform show the same number. The goal is to know why the numbers differ, which one fits the decision, and where mismatches may be hiding a revenue leak.