AnalyticScan
KO
← All posts

13 September 2026·2 min read

When purchase has no value or currency, and ROAS never appears

Purchase counts arrive but revenue reads zero and ROAS is blank in your ad reports. Why GA4 refuses to calculate the money, and how to confirm and fix it in DebugView in five minutes.

GA4EcommerceConversionsChecksCV-03PR-05

Symptom

The ROAS column in your ad dashboard is empty. GA4 shows purchase counts perfectly well, and revenue on the same row reads zero. Nobody can answer what this month's campaigns actually earned.

The reason this persists is simple: GA4 does not treat it as a fault. No warning, no red badge. The number is just zero.

Cause

For GA4 to read a purchase as revenue, two parameters have to arrive with it: value (the amount) and currency (the code). Miss either one and GA4 counts the event but calculates no revenue.

Three shapes turn up often in real scans.

What was sent What GA4 does with it
No value, currency: "USD" 1 purchase, 0 revenue
value: "$39.00" Not a number, so 0 revenue
value: 39, currency: "usd" Code not recognised, 0 revenue

The third is the frustrating one. The amount is right there, but the currency code was sent in lowercase, or as a $ symbol, and the whole thing is discarded. GA4 accepts only a three-letter uppercase ISO 4217 code.

How to check in GA4

1) Is it missing everywhere? Open Reports → Monetisation → Ecommerce purchases. Purchases present with total revenue at zero settles it.

2) Is it missing on only some of them? This is the more common case — one payment method, or the mobile app path, sends no amount. Compare the purchase count against the number of purchases that carried revenue. Past roughly a fifth missing, the metric is not usable.

3) See the cause with your own eyes. Turn on Admin → DebugView, run one test checkout, and click the purchase event. The parameters actually sent appear in the right-hand panel, so a missing value or a quoted one shows up immediately.

How to fix it

In GTM, add value and currency to the GA4 event tag's event parameters and wire them to data layer variables. Sent directly through gtag, it should look like this.

gtag("event", "purchase", {
  transaction_id: "T-12345",
  value: 39.0,         // a number — no currency symbol, no thousands separator
  currency: "USD",     // three uppercase letters, ISO 4217
  items: [{ item_id: "SKU-1", item_name: "Basic tee", price: 39.0, quantity: 1 }],
});

value conventionally carries the amount actually charged, net of shipping and tax. If the site only ever sells in one currency, currency can be a constant.

If the amount is right but per-product revenue still looks empty, check the items array. With item_id or item_name blank you will get a correct total and never learn which products produced it.

Once fixed, run the checkout again in DebugView, then confirm a day later that revenue appears in the Ecommerce purchases report. GA4 does not recompute past data, so ROAS for the blank period does not come back.

In one line

purchase exists to carry money, not to be counted. value as a number, currency as an uppercase ISO code, both together — get those two right and ROAS starts calculating.

Related posts

When purchase has no value or currency, and ROAS never appears