Currency and locale mismatches
Revenue breaks when monetary events mix currencies or send locale-formatted strings. A value like "1.234,56" (European format) or "$1,234.56" is not a number GA4 can sum, and reporting many currencies without per-event ISO codes makes totals meaningless. GA4 converts to a property base currency only when each event carries a valid currency. This page covers currency and locale formatting faults.
What this means
Locales format numbers differently: 1.234,56 in much of Europe equals 1,234.56 in the US. If a tag sends the value as a locale-formatted string, GA4 may parse it wrongly or reject it, distorting revenue. GA4 expects `value` as a plain number and `currency` as an ISO 4217 code.
When events carry valid currency codes, GA4 converts each to the property's base currency for aggregate revenue; without them, mixing currencies produces a meaningless sum.
Getting it right
Send `value` as a raw number using a dot as the decimal point and no thousands separators or symbols; set the correct per-event `currency`; and configure the property's reporting base currency intentionally. For multi-currency stores, never assume one currency — stamp each transaction with its own code so conversion is accurate.
- Send value as a plain number, dot decimal, no separators
- Stamp each event with its own ISO 4217 currency
- GA4 converts to the base currency per-event
How it appears in analytics and logs
Revenue that is implausibly large, small, or zero often means locale formatting (comma vs dot) or a missing per-event currency corrupted the value before GA4 summed it.
Diagnostic use case
Ensure monetary events send plain numeric values with correct ISO currency codes so GA4 can convert and aggregate across locales correctly.
What WebmasterID can help detect
WebmasterID's event validation can flag monetary values that arrive as formatted strings or without an ISO currency, catching locale corruption before it reaches revenue reports.
Common mistakes
- Sending locale-formatted strings as the value.
- Assuming a single currency across a multi-currency store.
- Letting comma vs dot separators corrupt the number.
Privacy and accuracy notes
Currency and locale are commercial and regional fields, not personal data, though locale can be a fingerprinting input; keep events to the value and ISO code only.
Related pages
- Missing currency or value on events
GA4 monetary events such as `purchase` need both a `value` and a `currency` field, and currency must be a valid ISO 4217 code. If currency is missing or invalid, GA4 may not credit the revenue; if value is missing, the event records but contributes nothing to monetary metrics. This page explains the requirement and the silent failure modes.
- Duplicate transactions in ecommerce data
Duplicate transactions occur when one purchase is counted more than once — usually because the order-confirmation page is reloaded, bookmarked, or shared, or because a retry resends the same event. GA4 deduplicates ecommerce purchases on `transaction_id`, so an absent or unstable ID is the root cause. This page covers detection and the deduplication key.
- PII leakage in URLs and reports
When URLs carry personal data — an email in a query string, a name in a path, a reset token after a redirect — analytics ingests that PII into page-path and page-location dimensions. Google Analytics policy prohibits sending PII, and once collected it is hard to remove. This page explains how leakage happens and how to redact before data is sent, as education rather than legal advice.
- Events documentation
Send clean numeric monetary values.
Sources and verification notes
Last reviewed 2026-06-24. Facts are checked against primary/official sources where available; uncertain specifics are marked “Data not yet verified” rather than guessed.