GA4 Refund Tracking: How to Keep Revenue Data Accurate
Most GA4 e commerce implementations track purchases but ignore refunds. The result is a systematic over reporting of revenue that gets worse over time, especially in categories with high return rates like fashion and electronics. Refund tracking is straightforward to implement and has an outsized impact on ROAS accuracy.
How GA4 handles refunds
GA4 uses a refund event to record returns. When you send a refund event with the same transaction_id as the original purchase, GA4 subtracts the refunded amount from revenue totals. This keeps your revenue figures net of returns rather than gross.
A full refund uses the same transaction_id with the full value. A partial refund includes the items array with only the returned products and their quantities.
GA4 will deduct only the value of the returned items from the original order.
Implementing refund events via Measurement Protocol
Because refunds happen in your backend (not the browser), they must be sent via the GA4 Measurement Protocol, a server to server API.
When your returns system processes a refund, trigger an API call to GA4's collect endpoint with the refund event payload.
The minimum payload for a full refund: event name "refund", transaction_id matching the original order, and value set to the refund amount.
Include your GA4 Measurement ID and API Secret (generated in Admin → Data Streams → Measurement Protocol API secrets).
Note that Measurement Protocol hits are not visible in DebugView, test by checking the revenue figures in the Revenue report after a few hours.
If you use GTM Server-Side, you can trigger refund events from your server container using the GA4 tag with the refund event type. This is often cleaner than writing a custom Measurement Protocol integration.
Why refund tracking matters for ROAS
If you're importing GA4 conversions into Google Ads for Smart Bidding, and those conversions include purchases that were later refunded, your ROAS figures are inflated.
Smart Bidding optimises toward the conversion value you report, if 15% of your orders are returned and you never deduct them, your bidding algorithm is systematically over valuing conversions and over spending.
For high return rate categories, the impact is significant. A clothing retailer with a 25% return rate and no refund tracking is reporting ROAS that's roughly 33% higher than the true figure.
Correcting this often reveals that previously "profitable" campaigns are operating at a loss.
Ready to audit your GA4 property?
Run a full GA4 audit in under 10 minutes. Free to start.
Start Free Audit