Guide 20 · Debugging · GA4 + Tag Manager
Revenue is in the wrong currency: the currency parameter decides the report
GA4 reports revenue in the property currency, converted from the currency parameter on the event. A wrong currency code turns every order into the wrong amount — check the code, not the total.
After the steps below, the currency parameter on the event matches the currency the customer paid in, and the revenue in the report converts from the right starting point.
Download the check: the debugging check (JSON) (MD5 73236d16a6364c39e362ad88616f4184, 490 bytes). It lists the checkpoints from this guide and the worked check, with the figures recomputed. The file was built for this guide and validated structurally — it was not exported from a live container or a live property.
What you need
- One order you can trace end to end. An order with a known total and a known currency, so the parameter can be judged right or wrong.
- The event in DebugView. The purchase or revenue event, with its currency parameter visible.
- The property currency setting. Admin, then Property settings, where the reporting currency is set.
- The tag's currency parameter. The value the tag sends — a fixed code, or a variable reading it from the order.
The trace
The worked check: the figures below were recomputed before publication, and the note under the table shows the working.
| Check | Figure |
|---|---|
| Orders checked | 8 |
| Orders with currency USD in the event | 8 |
| Orders actually paid in CAD | 8 |
| Orders with the wrong currency code | 8 |
| Orders with the right currency code after the fix | 8 |
Eight orders were checked. All 8 carried currency USD in the event, and all 8 were actually paid in CAD, so 8 of 8 orders — 100.00% — had the wrong currency code. After the fix, 8 of 8 carried CAD, so the wrong-code count fell from 8 to 0.
- Read the currency on one real order's event. Open DebugView, find the revenue event for an order you know, and read its currency parameter. Do not read the value first — the value is a number, and without the currency code you cannot tell whether it is dollars, euros, or something else.
- Compare it with how the order was paid. Look up the order in the store: the currency the customer was charged in. If the store charged CAD and the event says USD, every dollar in the report is converted from the wrong starting point, and the revenue is wrong by the exchange rate, on every order.
- Find where the tag gets the currency. Open the GA4 Event tag and read its currency parameter. A fixed value of USD sends USD for every order, whatever the customer paid. A variable reading the order's currency sends the right code — if the variable points at the right field and holds a value when the tag fires.
- Fix the source, then test with a fresh order. Change the fixed code to the store's currency, or fix the variable to read the order currency. Then send a fresh test order and read the currency parameter in DebugView again. The code must match the payment currency exactly.
- Check the property currency setting too. The property reports in one currency, and GA4 converts event currencies into it. A property set to USD with events in CAD is fine — the conversion is the design. A property set to USD with events wrongly coded USD is not a conversion problem; it is a wrong code, and the report will show the CAD amounts as if they were USD.
Dead ends
DEAD END — FIXING THE VALUE WHEN THE CODE IS WRONG. A value of 72.05 with currency USD and a value of 72.05 with currency CAD are two different amounts in the report. Changing the value while the code stays wrong leaves the revenue wrong by the same exchange rate on every order.
DEAD END — A FIXED CURRENCY FOR A MULTI-CURRENCY STORE. A store that charges in Canadian dollars, US dollars, and euros cannot use one fixed currency code. The tag must read the currency from the order, per event. A fixed code is right only for a store that charges in one currency.
DEAD END — READING THE REPORT TOTAL INSTEAD OF THE CODE. A revenue total that looks plausible can hide a wrong currency code for months, because the exchange rate is close to one for some pairs. Read the code on the event, not the total in the report.
End state
The currency parameter on the event matching the currency the customer paid in, on every order checked, and the property currency understood as the conversion target, not the source. Revenue now converts from the right starting point, and the report totals mean what they say.
Sources
- Analytics Help — Monitor events in DebugView — Clicking an event in DebugView to see its parameters, including the currency the event carried
- Analytics Help — Confirm that you are collecting data — Standard reports taking 24 to 48 hours to process data — a currency fix is judged in DebugView today, not in the report today
Checked 11 November 2026. The click paths above are the ones in Google's help pages, opened 11 November 2026. What was run: the currency counts, recomputed — 8 orders checked, 8 with USD in the event and 8 paid in CAD, so 8 of 8 wrong, 100.00%, and 8 of 8 right after the fix. No step in this guide was run inside a live Analytics property or a live Tag Manager container, because both need a Google sign-in and this site does not sign in as anyone. Google moves menu items without warning; if a path on this page no longer matches, the linked help page is the current map.