CROSS·Cross-Source·warning

GTM-Ads Currency Code Consistency

The currency code sent by your GTM conversion tags does not match the currency configured on the matching Google Ads conversion action. Same conversion, two different currency labels. Google Ads will accept the hit, but the revenue numbers in Ads will not line up with the revenue numbers in your commerce backend, and every multi-currency ROAS calculation on this account is built on a quiet conversion error.

CL
By Christopher LandaverdeCreator of AdLint · ad-tech tracking specialistUpdated

Why It Matters

Google Ads requires every conversion with a value to carry an ISO 4217 currency code (USD, EUR, GBP, etc). When the tag does not send a currency, Google Ads infers the account default. When the tag sends a different currency than the action expects, Google Ads converts the value using its own exchange rate at the time of the hit. That conversion is silent. The dashboards still show numbers. The ROAS column still populates. The numbers are just no longer comparable to anything else. A 100 EUR order recorded as USD becomes 100 USD in the Performance report, and the commerce backend that recorded it as 100 EUR will show roughly 110 USD for the same transaction. Multi-currency accounts can have reported Ads revenue diverge from real revenue by 10 to 30 percent depending on the mix. The usual cause is a tag built off a hardcoded `currency: "USD"` string that was never updated when the business expanded to other markets, or a Data Layer Variable that resolves to the user's locale instead of the order currency.

How To Fix It

  1. List the currencies that appear in your GTM conversion tags and the currencies recorded on the corresponding Google Ads actions. AdLint surfaces both.
  2. Decide whether the account is single-currency or multi-currency. For single-currency, hardcode the correct ISO 4217 code in the GTM tag and confirm Google Ads matches.
  3. For multi-currency, source the currency code from the order object via a Data Layer Variable so each transaction carries its own currency. Do not source from the user's browser locale.
  4. Verify in Tag Assistant that the currency field on a real transaction matches both the order in your commerce backend and the action setup in Google Ads.
  5. Wait one full reporting cycle and reconcile a sample of transactions across Ads and the commerce backend.

Example

Configuration
GTM value parameter: 129.99
GTM currency parameter: 'USD'
Ads action expects: EUR
Result: Google Ads converts 129.99 USD to roughly 119 EUR silently.
For Your Client Report

This account has GTM conversion tags sending currency codes that do not match the currencies recorded on the corresponding Google Ads conversion actions. Per Google's conversion-value documentation, Google Ads accepts any ISO 4217 currency code on the hit and silently converts to the account or action currency using its own exchange rate. Multi-currency accounts therefore see Ads-reported revenue diverge from commerce-backend revenue without any warning, and Target ROAS strategies optimize against the converted values rather than the real transaction values. The typical root cause is a hardcoded currency string in the tag or a Data Layer Variable sourced from the user locale rather than the order currency. Fix: source the currency from the order object, verify in Tag Assistant that the tag currency matches the commerce backend, and reconcile a sample of transactions across both surfaces after one reporting cycle. Source: support.google.com/google-ads/answer/2998565.

Drop this paragraph into your client deliverable. Sources back to the canonical platform documentation linked below.

References

Audit your own files for this check

AdLint runs this check (and 177 others) against your GTM, Google Ads, Meta, TikTok, LinkedIn, Pinterest, Twitter/X, and Snapchat exports. Everything stays in your browser. No uploads, no accounts.

Run a free audit