Skip to content

Guide 51 · Ecommerce · GA4 + Tag Manager

Ecommerce in multiple currencies: send the currency charged, and let the property convert for its reports

Checked 11 November 2026 · Verification: reference file checked in Python (figures recomputed from the worked example) · Steps traced to Google's developer docs and Analytics Help, opened 11 November 2026 · 5-minute read

A store that charges in more than one currency sends one currency per event — the one the customer paid in — and the property reports everything in its own reporting currency.

Expected signal

After the events flow, the reports show every order in the property's reporting currency. In the worked example below, the same 72.05 USD order sent with currency CAD reads 99.43, and a 10,000 yen order is sent as 10000 with no decimal part.

Download the reference: the multi-currency-ecommerce reference (JSON) (698 bytes, MD5 09e0f503ff3da2efe647c528aa638129). It holds the event parameters, the worked example, and the recomputed figures.

What you need

  • Orders in more than one currency. The worked example is Google's two-item order, 72.05, charged once in USD and once in CAD at the example rate of 1.38.
  • The property's reporting currency. The setting lives in Admin, then Property details, under Currency displayed as. The worked property reports in USD.
  • The Google tag on the site. The currency is set where the event is sent; the install guide covers the tag.

The trace

  1. Send the currency the customer was charged in, with the matching value. The amount and the code have to come from the same order. The worked order charged in USD is sent as value 72.05 with currency USD. The same order charged in CAD is sent as value 99.43 with currency CAD, because 72.05 × 1.38 = 99.43 at the example rate of 1.38. Taking the value from one currency and the code from another produces a number that errors nowhere and means nothing.
  2. Set currency at the event level on every event that carries value. Google's rule is the same for every ecommerce event: currency sits at the event level when value is sent, and it is the primary currency for the transaction. A currency set on an item object has no effect. The purchase, the add_to_cart, and the begin_checkout for one order must all carry the same currency.
  3. Let the property convert into its reporting currency. Analytics converts each transaction into the property's reporting currency using the previous day's exchange rate, and reports revenue in that currency. The worked property reports in USD, so the CAD order is converted back into USD for the report. Changing the reporting currency reconverts historical data as well as future data, so a change rewrites the numbers in reports that were already sent.
  4. Send zero-decimal currencies with no decimal part. Japanese yen, Korean won, and several others have no minor unit. A 10,000 yen order is sent as value 10000 with currency JPY, never as 100.00. Dividing a zero-decimal amount by 100 understates the order a hundredfold.
  5. Check it in DebugView, one currency at a time. Turn on debug mode, place one order in each currency, and open DebugView (Admin, then Data display, then DebugView). Select each purchase event and check the value and the currency together: 72.05 with USD, 99.43 with CAD. A value that does not match its currency is the fault to look for first when converted revenue looks wrong.

Dead ends

DEAD END — THE VALUE FROM ONE CURRENCY AND THE CODE FROM ANOTHER. A value of 99.43 sent with currency USD records a 99.43 dollar order, not a 99.43 Canadian dollar order. The amount and the code come from the same order record, together, or the report is wrong in a way no later step can detect.

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.

DEAD END — CHANGING THE REPORTING CURRENCY TO FIX A MONTH. Changing the property's reporting currency reconverts historical data too, so it rewrites every report already sent. The reporting currency is a property setting to choose once — the currency the business reports in — not a lever to pull per month.

End state

Every order sends the currency it was charged in, at the event level, with the matching value: 72.05 USD, or 99.43 CAD at the example rate of 1.38. Zero-decimal currencies are sent whole — 10000 JPY, not 100.00. The property converts everything into its reporting currency for the reports, and DebugView shows each order's value and currency together the same minute.

Sources

Checked 11 November 2026. The rules above are the ones in Google's ecommerce developer guide and the purchase tutorial, both opened 11 November 2026. The conversion figures were recomputed in Python at the example rate stated on the page: 72.05 × 1.38 = 99.43. The reporting-currency behaviour is from Google's Currency reference, opened 11 November 2026: Analytics converts using the prior day's exchange rate, and changing the reporting currency reconverts historical data. 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.