Ecommerce Revenue Discrepancy: Analytics vs Backend | Adslytics | Adslytics

Conversion Fix How-To Guide

Ecommerce Revenue Discrepancy: Why Analytics and Backend Disagree

By Muhammad Farooq · April 3, 2026 · 5 min read
Ecommerce Revenue Discrepancy: Why Analytics and Backend Disagree

Why Revenue Discrepancies Exist

Revenue discrepancies between GA4 and your backend order management system are nearly universal — the question is not whether they exist, but how large they are and where they come from. A 5-10% discrepancy is typical and expected. A 20%+ discrepancy signals a tracking problem that inflates or deflates your ROAS calculations.

Legitimate Sources of Discrepancy

Not all discrepancy is a bug. These are expected differences:

  • Refunds and cancellations: GA4 tracks the original purchase. If you do not send refund events to GA4, cancelled orders still appear as revenue. Your backend excludes refunded orders from net revenue.
  • Tax and shipping inclusion: GA4 'value' field may or may not include tax and shipping depending on how you implemented it. If GA4 value = subtotal but your backend tracks gross revenue, the numbers will differ by the tax/shipping amount.
  • Currency conversion: for multi-currency stores, if GA4 receives values in local currency but your reporting converts to base currency at different exchange rates, the totals will differ.
  • Attribution windows and time lags: GA4 reports on the event date; your backend records on the order date. For stores with delayed payment capture, these can differ.

Problem Sources of Discrepancy

GA4 LOWER than backend (undercounting):

  • Purchase events not firing for all orders (ad blockers, Safari ITP, tag failures)
  • Items array missing from purchase event → purchases recorded but with zero revenue
  • Users refreshing confirmation page causing duplicate detection to suppress second fire, but some orders were not tracked at all

GA4 HIGHER than backend (overcounting):

  • Purchase tag firing multiple times per order (page refresh without deduplication)
  • Purchase tag firing on pages other than the confirmation (trigger misconfiguration)
  • Test orders not excluded from GA4 data

Reconciliation Process

  1. Export GA4 transactions (GA4 → Monetisation → Ecommerce purchases → download transaction data)
  2. Export backend orders for the same date range
  3. Match transaction IDs — orders in backend but not in GA4 are undercounted; transaction IDs in GA4 not in backend are test orders or overcounting
  4. Calculate discrepancy percentages by category: missing orders, duplicate orders, value differences

Summary

Revenue discrepancies are expected to some degree (refunds, tax inclusion, currency). Focus on problem discrepancies: GA4 significantly lower than backend (undercounting due to pixel loss or missing items array) or GA4 higher than backend (overcounting from duplicates or trigger misconfiguration). Reconcile by matching transaction IDs between systems — this reveals which orders are missing or duplicated in analytics versus the backend ground truth.

See our Conversion Tracking Fix service for revenue discrepancy resolution.

Need revenue tracking reconciled? Contact Adslytics.

Need expert tracking setup?

Our Google Tag Manager experts have delivered 500+ tracking setups with a 98% success rate.

Get a Free Consultation →
← Back to Blog
Muhammad Farooq

Author

Muhammad Farooq GTM & Analytics Expert · Adslytics Founder

Tracking specialist with 10+ years of experience in Google Tag Manager, GA4, Server-Side Tracking, and Google Ads. Founder of Adslytics — a dedicated analytics agency with a 98% success rate across 232+ projects on Upwork.

Top Rated Plus LinkedIn Visit the author's profile →