← All posts

Measurement

Why Shopify, GA4 and Stripe never agree on revenue — and which number to trust

By the IntelliCart team · November 4, 2026 · 3 min read

Open three tabs on a Monday morning: your store admin, Google Analytics 4 and your payment processor. Last week's revenue is $48,200 in the first, $41,700 in the second and $46,900 in the third. Someone asks which one goes in the board update, and the meeting turns into a debate about tracking.

None of these tools is broken. They are measuring different things, at different moments, with different rules. Once you know the rules, the gaps become predictable — and you can pick one number with confidence.

Where the gaps come from

1. Orders vs. payments

Your store counts an order when it is placed. Stripe counts money when a charge succeeds. Pay-later methods, failed retries, manual orders and partial captures all land on different days — or only in one system.

2. Refunds and cancellations

Store reports often show gross sales by default; Stripe nets out refunds on the day they happen, not the day of the original order. A busy returns week can make last month's revenue “shrink” in one tool and not the other.

3. Tracking loss in GA4

GA4 only sees a purchase if the browser fires the event: ad blockers, consent banners that are declined, and shoppers who close the tab on an off-site payment page all disappear. A 10–20% shortfall versus the store is common and has nothing to do with your sales.

4. Tax, shipping and currency

Is revenue with or without tax? With or without shipping? Converted at today's rate or the rate on the order date? Each tool picks a default, and they rarely match.

5. Time zones

“Yesterday” ends at midnight in your store's time zone, in UTC for some exports, and in your ad account's time zone for campaign reports. Late-evening sales move between days.

How to settle it

Pick one source of truth per question, write the definition down, and make every dashboard use it.

  • “How much did we sell?” — use store orders, net of refunds and cancellations, excluding tax, in the store's time zone.
  • “How much cash came in?” — use the payment processor's net payouts.
  • “Which channel drove it?” — use GA4 or ad platforms for shares of revenue, then apply those shares to the store number instead of quoting GA4's total.
Rule of thumb: tracking tools are for proportions, the store is for totals, the processor is for cash.

Make the definition travel

The real fix is to stop re-defining revenue in every report. Define “net revenue” once — which statuses count, how refunds are handled, which time zone — and point every chart at that definition. When someone asks why a number changed, you can answer with the orders behind it instead of a theory about tracking.

That is exactly how IntelliCart models revenue: one definition, visible on every chart, with a click-through to the underlying orders.

Answer this for your own store

IntelliCart connects your store data and lets you ask these questions in plain English.

Book a demo →