Guide 43 · Ecommerce · GA4 + Tag Manager
Currency and value: the pair that makes revenue appear, and the rule that breaks it when they split
Value without currency is a number Analytics cannot place. Send the two together, at the event level, in the currency the customer was charged in.
After step 3, DebugView shows the purchase event with value 30.03 and currency USD side by side. After about 24 hours, the standard reports show item revenue 30.03 and total revenue 30.03 for the order.
Download the reference: the currency-and-value reference (JSON) (965 bytes, MD5 a73d07a6c5349c8b38baeafbc42ae875). It holds the event parameters, the worked example, and the recomputed figures.
What you need
- The Google tag on the site. The event is sent through the Google tag; the install guide covers it.
- Access to the website source code, or a Tag Manager container. The currency and value are set where the event is sent.
- The currency the customer was charged in. The worked order is Google's own: 30.03 in USD, tax 4.90, shipping 5.99.
The trace
- Set currency at the event level whenever you send value. Google's ecommerce guide states the rule plainly: set currency at the event level when sending value data, because it is the primary currency for the transaction and is used for standard reporting. The purchase call is
gtag("event", "purchase", { transaction_id: "T_12345_1", value: 30.03, tax: 4.90, shipping: 5.99, currency: "USD", items: [...] }). - Make value the sum of price times quantity. The value is the items total: 10.01 × 3 = 30.03. Tax and shipping are separate parameters and are not part of value, so the amount charged, 30.03 + 4.90 + 5.99 = 40.92, is a different number from the value. Google's tutorial states that one click of the Purchase button populates item revenue 30.03 and total revenue 30.03 — both from value, not from the charged total.
- Send currency as a three-letter ISO 4217 code. The code is
USD,CAD,EUR, and so on. A code the system does not recognize, or a full name such asdollars, leaves Analytics unable to place the money. Take the code from the order record, not from a fixed string in the code, so a second market does not inherit the first market's currency. - Check it in DebugView. Turn on debug mode, trigger the purchase, and open DebugView (Admin, then Data display, then DebugView). Select the event and check that value reads 30.03 and currency reads USD. A value with no currency next to it is the fault to look for first when revenue is missing from the reports.
- Confirm the reports after about 24 hours. Item revenue and total revenue for the order should both read 30.03, and ecommerce purchases should read 1. If the event is in DebugView with a value but the reports show no revenue, the currency is the first thing to compare.
Dead ends
DEAD END — CURRENCY ON THE ITEM, NOT THE EVENT. A currency set on an item object has no effect: Analytics reads currency from the top-level event parameters only. An event with value 30.03 and currency only inside the items array reports no revenue.
DEAD END — VALUE AS A STRING. value: "30.03" is text, and Analytics needs a number. The event arrives, DebugView shows it, and the revenue metrics stay at zero. Send the number without quotes.
DEAD END — THE HARD-CODED CURRENCY. A fixed currency: "USD" is correct until the day the store opens a second market, and on that day it becomes wrong for every order from the new market. The currency must come from the order, with the value it belongs to.
End state
Every event that carries a value carries its currency at the event level, as a three-letter code from the order record, and the value is the sum of price times quantity (10.01 × 3 = 30.03). Tax 4.90 and shipping 5.99 stay outside value, and the charged total is 40.92. DebugView shows the pair the same minute, and after about 24 hours the reports show item revenue 30.03 and total revenue 30.03.
Sources
- Google Analytics developer docs — Measure ecommerce — the currency rule, the value definition, and the recommendation to set currency at the event level
- Google Analytics developer docs — Set up a purchase event — the worked order values and the three metrics one click populates
Checked 11 November 2026. The rule above is the one in Google's ecommerce developer guide and the purchase tutorial, both opened 11 November 2026. No step was run inside a live Analytics property, because that needs a Google sign-in and this site does not sign in as anyone. The figures were recomputed in Python: 10.01 × 3 = 30.03, and 30.03 + 4.90 + 5.99 = 40.92. The reference file was checked the same way.