Purchase revenue is the GA4 metric that adds up the value of every purchase event your site or app sends, minus the value of any refunds you record. It is only as accurate as the value, currency and refund data your ecommerce tracking passes in, so it rarely matches your shop’s sales figure exactly.
How purchase revenue works
GA4 does not read your order system. When a customer completes checkout, the confirmation page or your server sends a purchase event carrying a value, a currency code, a transaction ID and the items bought. GA4 totals those values and reports them as purchase revenue, broken down by channel, campaign, landing page, product or any other dimension you choose.
Refunds come off the total only if you send a refund event with the matching transaction ID. GA4 also offers gross purchase revenue, which ignores refunds, and total revenue, which adds subscription and advertising revenue on top. Which of these you report should be a deliberate choice, written down, rather than whichever one a dashboard happens to show.
The currency parameter matters more than most people expect. GA4 converts every purchase into the property’s currency using daily exchange rates, and if the currency code is missing the value may not be counted as revenue at all. A UK shop should send “GBP” with every purchase and set the property currency to pounds sterling.
Why it matters for a UK shop
Purchase revenue feeds the figures budget decisions rest on: revenue per channel, the conversion value Google Ads and Meta bid against, and return on ad spend. If it is inflated by duplicated orders or reduced by missing ones, bidding and budgets follow the error.
VAT is the UK-specific trap. Prices to consumers are shown including VAT, and many shop platforms send that VAT-inclusive total by default, sometimes with delivery added. Your accounts usually look at sales net of VAT. Neither approach is wrong, but they must not be mixed. At the standard 20% rate, VAT-inclusive revenue reads 20% higher than the net figure, so a break-even ROAS worked out on net margin will make every channel look healthier than it is.
Common mistakes
- Never deciding whether the value includes VAT and delivery, so different developers, plugins or platforms send different things.
- Firing the purchase event every time the confirmation page reloads without a unique transaction ID, which counts orders twice.
- Missing or wrong currency codes, such as a pound sign instead of “GBP”, or prices sent as text.
- Never sending refunds, so purchase revenue drifts above real takings in categories with high returns, such as clothing and footwear.
- Comparing GA4 purchase revenue directly with Shopify or WooCommerce sales without allowing for visitors who declined cookies, ad blockers and time zone differences.
- Leaving staff test orders in the data.
How to act on it
Write one sentence that defines your purchase value, for example “basket total after discounts, including VAT, excluding delivery”, and make every tag and platform follow it. Then compare a handful of real orders in GA4 against the order system, line by line, to confirm the values, currency and transaction IDs arrive as intended.
After that, compare a month of purchase revenue with your shop platform’s sales. A gap that stays steady from month to month is normal and mostly reflects consent and blocking. A gap that suddenly widens points to a tracking change. I set this up and check it when running Facebook and Instagram ads for online shops, because both Meta and Google bid against the values you send them.
