This specific failure state is distinct from missing purchases entirely. Your GA4 Events report shows purchase event counts. The Conversions report shows conversions. But the Revenue metric shows zero. The Monetisation report shows purchased items counted but zero item revenue. This pattern has a small set of specific causes, all of which are diagnosable in DebugView within 10 minutes.
The definitive diagnostic: DebugView
Open GA4 Admin > DebugView. Add?debug_mode=true to your site URL or install the Google Analytics Debugger Chrome extension. Complete a test purchase on your site. Click the purchase event that appears in DebugView. Expand the event parameters. You will see either the specific problem immediately or confirm that parameters are correct. Our guide torunning GA4 debug mode in productioncovers the safer ways to do this on a live store.
Open DebugView and trigger a test purchase
Navigate to GA4 Admin > DebugView. Append ?debug_mode=true to your order confirmation URL, or use the GA Debugger Chrome extension. Complete a real test transaction so the purchase event fires.
Click the purchase event and inspect parameters
In DebugView, click the purchase event in the timeline. Expand the event parameters panel and look for value and currency. Both must be present.
Check the value parameter type
Confirm value is a number, not a string. A value of '49.99' (with quotes) or 0 (zero) will produce zero revenue. It must be a positive numeric value such as 49.99.
Check the currency parameter format
Currency must be a three-letter uppercase ISO 4217 code such as GBP or USD. Currency symbols (£, $) or lowercase codes (gbp) are not accepted and will cause revenue to be discarded.
Verify tag firing order
If using GTM, confirm the purchase tag fires after the dataLayer.push() that populates ecommerce data. A tag that fires before the data layer push reads empty values.
Most likely cause: missing or invalid currency parameter
GA4 requires a valid three-letter ISO 4217 currency code to process revenue. The event count is recorded regardless of whether currency is valid, but revenue is only processed when currency is valid. Our deeper guide onresolving GA4 currency mismatchescovers every format pitfall and how property-level conversion compounds the problem.
What to look for in DebugView:is the currency parameter absent? Is it set to a currency symbol like '$' or '£' rather than a code like 'USD' or 'GBP'? Is it set to the correct code but in lowercase ('usd' instead of 'USD')? Always send currency codes in uppercase as specified by ISO 4217 — GA4 documentation does not guarantee case-insensitive handling.
Fix:ensure the currency parameter is sent with every purchase event using the exact ISO 4217 code in uppercase.
Second most likely cause: value is zero, null, or a string
In DebugView, look at the value parameter. If it is absent, the value is 0, or the value is a string rather than a number (such as '49.99' with quotes rather than 49.99 without quotes), GA4 will record the event but report zero revenue.
This often happens when the GTM variable reading the order value from the data layer returns a string rather than a number. JavaScript variables in GTM read data layer values as strings by default unless you explicitly convert them. Use GTM's built-in variable type or a custom JavaScript variable to convert the string to a number: return parseFloat(window.dataLayer.find(item => item.ecommerce)?.ecommerce.purchase?.value || 0). For the full list of required and recommended fields, see ourGA4 purchase event parameters reference.
Want GA4 to flag revenue parameter issues automatically on every audit?
Third cause: event name variation
GA4 only processes revenue from events named exactly purchase. In DebugView, check that the event that fires on your order confirmation page is named purchase and not anything else. Some implementations name the event completed_order, order_success, transaction, or a custom variant. These events appear in your Events report and can be marked as conversions, but GA4 will never report revenue for them.
In GTM, find the tag responsible for the purchase event and verify the Event Name field contains exactly the text purchase with no spaces, no capital letters, and no additional characters. If the count looks plausible but the totals are still wrong, our walkthrough offixing missing revenue in GA4 purchase eventscovers what to check next.
Fourth cause: modify event rules altering parameters
GA4 Admin has a Modify Event feature under Events. If anyone has created a modify rule that affects the purchase event, check whether it is stripping or overwriting the value or currency parameters. Go to Admin > Events > Modify Event and look for any rules referencing the purchase event. A misconfigured modify rule that sets value to 0 or deletes the currency parameter would produce exactly this symptom.
Fifth cause: server-side tag not forwarding revenue parameters
If your GA4 data is routed through a server-side GTM container, check whether the server-side GA4 tag is configured to pass through the ecommerce parameters you need. Implementation-specific forwarding or mapping mistakes can produce events with no revenue in GA4.
In your sGTM GA4 tag, check the More Settings section for parameter forwarding configuration. If only specific parameters are whitelisted and value and currency are not in the list, add them.
Revenue zero: validate, fix, and watch
Validate
- Open DebugView and trigger a test purchase on your site
- Confirm the purchase event appears in DebugView
- Check that value is a positive number (not a string, not zero)
- Check that currency is a three-letter uppercase ISO 4217 code
Fix
- Ensure value is passed as a number not a string, use parseFloat() in GTM if reading from dataLayer
- Ensure currency matches your GA4 property currency setting and uses uppercase ISO format
- Ensure the purchase tag fires after the dataLayer.push() that sets ecommerce data
- If using sGTM, whitelist value and currency in the server-side GA4 tag parameter forwarding settings
Watch for
- value showing as "0" (string) vs 0 (number), both display the same in DebugView but behave differently
- Modify Event rules in GA4 Admin that silently overwrite value to 0 or strip currency
- Event named 'purchase' in GTM that fires before the dataLayer ecommerce object is populated
Revenue zero debugging checklist
- Open DebugView and place a test order
- Confirm the purchase event fires and appears in DebugView
- Verify currency is present as a three-letter uppercase ISO code
- Verify value is present as a numeric value greater than zero
- Verify event name is exactly purchase
- Check Admin > Events > Modify Event for any rules affecting the purchase event
- If using sGTM, verify the server-side tag forwards all ecommerce parameters
Related guides
Fix Missing Revenue in GA4 Purchase Events
Covers the broader class of revenue reporting issues, including missing purchase events entirely.
GA4 Purchase Event Parameters Reference
Full reference for required and optional ecommerce parameters in GA4.
GA4 E-commerce Tracking Checks
The complete checklist for auditing your GA4 e-commerce implementation.
GA4 Currency Mismatch Errors
How currency mismatches between your data layer and GA4 property settings cause revenue discrepancies.
Audit your GA4 e-commerce implementation
GA4 Audits checks value, currency, event naming, and parameter forwarding automatically across all purchase events.