Currency Mismatch in Structured Data: $ and £ Explained

The Structured data tab of ClueTrove’s Store or Product Technical Checker flags a currency mismatch when the sign on your page cannot stand for the code in your data. A shared sign like $ or £ matches any currency it can…

Published:

Updated:

Why the Structured data tab flags a currency mismatch for $ or £

The Structured data tab of ClueTrove’s Store or Product Technical Checker flags a currency mismatch when the sign on your page cannot stand for the code in your data. A shared sign like $ or £ matches any currency it can stand for.

So the tab cannot tell AUD from CAD when your page shows “$”. A currency outside the sign’s set, like SAR with “$”, is flagged.

The short answer

When you see Structured-data currency does not match the shown currency, the tab found a currency sign, word or code next to a number on the page, and your priceCurrency is not one of the currencies that sign stands for. The tool itself says the matching is approximate. In our tests:

  • A shared sign matches any currency in its set. AUD, CAD, NZD, USD or SGD data with a “$49.00” price gave no finding. EGP or GBP data with “£49.00” gave none either.
  • A currency outside the set is flagged. SAR data with “$49.00” gave the high-priority mismatch finding. So did USD data with “49.00 ريال” and EUR data with “£49.00”.
  • Signs and codes that name one currency are stricter. “A$” points only to AUD, so CAD data with “A$49.00” was flagged. “US$” points only to USD, so AUD data with “US$49.00” was flagged.
  • A bare number is not compared. A price like “49.00” with no sign or code gets no currency verdict, only the low-priority note Price and availability were not matched against the page.
  • A bad code in the data gets its own finding. A lowercase “aud”, a withdrawn code or a non-shop code gives Currency code is not valid, with the reason shown.
The Structured data tab of the Store or Product Technical Checker after a check of a synthetic product page whose data currency is AUD and whose price is shown as $49.00: the summary line reads “Findings: 0. Checks with no problem found: 5. Checks that could not be done: 0.” and the expanded list shows five checks, from “Product structured data exists” to “Data matches what the page shows”, each marked “No problem found”.
A correct page that shows $ for an Australian-dollar price is not flagged.
The Structured data tab after a check of a synthetic product page whose data currency is SAR and whose price is shown as $49.00: the summary line reads “Findings: 1. Checks with no problem found: 4. Checks that could not be done: 0.” and one finding, “Structured-data currency does not match the shown currency”, marked High priority and “You can fix it”, with the evidence “the data currency is SAR; currencies that appeared: $ (USD/AUD/CAD/NZD/SGD...)”.
A genuine mismatch: the data says SAR while the page shows a dollar sign.

How do I check a product page?

  1. Open the Structured data tab of the checker.
  2. Paste the address into the Store link or product page link box.
  3. Press Check: Structured data.
  4. Read the summary line. A clean result looks like Findings: 0. Checks with no problem found: 5. Checks that could not be done: 0. That means only that nothing was found, not that your data is correct.
  5. If the currency mismatch finding appears, read its evidence line. It shows the data currency and the currencies that appeared on the page.
  6. Compare the priceCurrency in your JSON-LD with the price shown on the page, then fix whichever is wrong. The finding is marked You can fix it.

What should you do when the finding appears?

  • Data says SAR, page shows $: decide the real price currency. Then change the data code or the displayed sign to match.
  • Data says USD, page shows riyal: same fix. One of the two is wrong.
  • No finding with a $ price: do not relax. The tab accepts AUD, CAD, NZD, USD and SGD alike, so check the code yourself.
  • Only a bare number: add a sign or code next to the price so the tab has something to compare.
  • “Currency code is not valid”: use an uppercase three-letter code from the current list.

What must priceCurrency contain, and why can one word mean several codes?

In its merchant listing structured data documentation, Google describes Offer.priceCurrency as “The currency used to describe the product price, in three-letter ISO 4217 format.” Your data needs a code, not a sign. The page may show a sign, a word or a code.

Several currency names share one word:

A shared word cannot point to a single code. That is why the tab treats a sign such as $ as a set of possible currencies, not one answer.

What did our test show?

These are results of ClueTrove’s own test of its tool, live build 1.7.0, on 2026-10-10. We ran a local copy of the live 1.7.0 files fetched from tools.cluetrove.com, served from 127.0.0.1 with every outside request blocked. The tester replaced the server fetcher with a stub that returned synthetic product pages on example.test. The browser was headless Microsoft Edge 154.0.4258.62, driven by playwright-core 1.63.0.

We analysed 50 synthetic product pages with the shipped code on both the Arabic and the English page, for 100 engine runs. 41 pages were written for this topic and 9 were older ones. Both languages gave the same finding ids for all 50, with wording that differed only in language. The expected results of 6 of the 41 new cases were corrected after the first run, which was on build 1.6.5, because we had left out the note “Price and availability were not matched against the page”.

  • T1, shared signs (15 pages): “$49.00” with AUD, CAD, NZD, USD and SGD. “£49.00” with EGP and GBP. “49.00 ريال” with QAR, SAR and OMR. “49.00 درهم” with MAD and AED. “4.900 دينار” with KWD. “¥4,900” with JPY and “¥490.00” with CNY. All 15 gave no finding, and the check “The currency {cur} matches a currency symbol shown on the page” passed in 30 of 30 runs.
  • T2, mismatches (8 pages): SAR with “$49.00”, USD with “49.00 ريال”, EUR with “£49.00”, GBP with “€49.00”, AED with “49.00 SAR”, AUD with “US$49.00”, CAD with “A$49.00” and KWD with “£4.900”. Each gave exactly one high-priority finding in 16 of 16 runs. For “$” the evidence read “the data currency is SAR; currencies that appeared: $ (USD/AUD/CAD/NZD/SGD…)”. For “US$” or a code, it named the single currency, for example “currencies that appeared: USD”.
  • T3, single-currency signs and codes (9 pages): “A$49.00” with AUD, “C$49.00” with CAD, “US$49.00” with USD, “49.00 SAR” and “49.00 ر.س” with SAR, “49.00 AOA” with AOA, “₺49.00” with TRY, “49.00 kr” with NOK and “₹49.00” with INR. No finding in 18 of 18 runs.
  • T4, several currencies or none (3 pages): “49.00 SAR” plus “about $13.07” with SAR data gave no finding. “$49.00” plus a shipping line “20 SAR” with AUD data gave no finding. A bare “49.00” with SAR data gave only “Price and availability were not matched against the page”, low priority, “Not enough information”, with the evidence “No number near a currency symbol appeared in the text to compare with the price.”
  • T5, invalid codes (6 pages): lowercase “aud” gave “Currency code is not valid” (written in lowercase), medium priority. “BGN” gave the same finding with the reason “a code that was valid and has been withdrawn from the current ISO 4217 list”. “XXX” gave “an ISO code for a metal, fund or test purpose, not a shop price currency”. “ZZZ” gave “not in the current ISO 4217 list”. AOA and BTN, both valid current codes, gave no such finding.
  • T6, through the real tab: 9 scenarios on each language page, 18 runs in total, using the link box and the “Check: Structured data” button. AUD with “$49.00”, EGP with “£49.00”, QAR with “49.00 ريال”, and SAR with both “49.00 SAR” and “about $13.07” gave “Findings: 0. Checks with no problem found: 5. Checks that could not be done: 0.” SAR with “$49.00” and USD with “49.00 ريال” gave “Findings: 1. Checks with no problem found: 4.” with the high-priority finding. The bare-number page gave 1 finding and lowercase “aud” gave 1 finding. “BGN” gave 2 findings. There was no horizontal scroll at 390 px (2 of 2 runs), and 0 blocked requests, page errors or console messages in all 20 page runs.

What are the limits?

  • No finding does not mean your data is correct. A match means only that the data currency is one of the currencies the sign stands for.
  • The matching is approximate, as the tool states. It reads a sign, word or code next to a number in the page text. A bare number is not compared.
  • For a shared sign, the evidence line lists only the first five currencies of the set, followed by an ellipsis.
  • Only the signs, words and codes listed above were tested.
  • Prices written by JavaScript after the page loads are not read. The tool reads the page source only.

Not covered: real URLs fetched through the ClueTrove server (private addresses, redirects, rate limits), real store or platform output, microdata and RDFa, rich-result eligibility (no Rich Results Test was run), other browsers and phones, screen readers, very large pages and repeat runs; the live pages were only re-fetched and compared by hash.

Related tools

This article covers only the currency comparison in the Structured data tab. To run the check on your own page, open the Structured data tab of the Store or Product Technical Checker and paste your product page link.

Questions and answers

Why is my AUD or CAD data with a $ price not flagged?

The tab treats “$” as a sign that several currencies share, including AUD, CAD and USD. Any currency in that set counts as a match. Verify the code yourself, because a missing finding does not confirm it.

Why is SAR data with a $ page price flagged?

SAR is not one of the currencies the tab links to “$”. It gave the high-priority finding with the evidence “the data currency is SAR; currencies that appeared: $ (USD/AUD/CAD/NZD/SGD…)”. Fix the data code or the displayed sign.

What happens if my page shows only a number?

The tab does not compare a currency with a bare number. You get the low-priority note “Price and availability were not matched against the page”, marked “Not enough information”, and no currency verdict. Add a sign or code beside the price.

Why does lowercase “aud” say “Currency code is not valid”?

Lowercase “aud” gave the finding with the reason “written in lowercase”. Use uppercase, as in AUD. Withdrawn, test-purpose or unknown codes give the same finding, each with its own reason.

Does a mismatch finding affect Google rich results?

Treat it as a data-quality warning, not a verdict. Google asks for priceCurrency as a three-letter ISO 4217 code, so correct the code to match your displayed price.

All sections All articles

Latest articles