What Is PriceCurrency in Product Schema?
PriceCurrency is the three-letter ISO 4217 code that identifies the currency of a price inside an Offer, AggregateOffer, or PriceSpecification.
Primary definitions: Schema.org priceCurrency. Product-search requirements vary by experience; the Google product structured-data documentation distinguishes those requirements.
The property turns an ambiguous number into a commercial amount. A price of 49.99 cannot be interpreted reliably without knowing whether it is USD, CAD, AUD, EUR or another currency. The value should travel with the exact price it describes and match what the customer sees and can pay.
- Frame the decision raised by What Is PriceCurrency in Product Schema.
- Read the primary property definition and expected value type.
- Compare markup with the visible price and commercial terms.
- Correct the source catalog or template without inventing a value.
- Validate the rendered page and recheck it after pricing changes.
| Visible price | price | priceCurrency |
|---|---|---|
| $49.99 US | 49.99 | USD |
| C$49.99 | 49.99 | CAD |
| A$49.99 | 49.99 | AUD |
| €49.99 | 49.99 | EUR |
- Use an uppercase three-letter ISO 4217 code.
- Keep the numeric amount free of currency symbols.
- Place currency beside the price it qualifies.
Use the free backlink checker while reviewing linked commerce pages.
PriceCurrency makes a product price meaningful by attaching one unambiguous currency code to the same commercial node.
Why Does PriceCurrency Matter for Ecommerce SEO?
PriceCurrency matters because it prevents pricing ambiguity and helps keep the page, structured data, feeds, shipping costs, checkout, and market targeting aligned.
It does not produce rankings by itself or guarantee a rich appearance. Its business value is truthfulness. The dollar symbol is shared by multiple currencies, and a converted price can differ materially from the catalog base amount. Missing or conflicting currency creates a stronger error than a formatting issue because the same number represents a different value.
- Evidence for Why Does PriceCurrency Matter for Ecommerce SEO must come from the exact page and pricing context.
- Locate the Offer or PriceSpecification node that contains the property.
- Confirm the currency, price boundaries, tax treatment and eligibility context that apply.
- Compare rendered structured data with catalog, checkout and visible page terms.
- Retain a fresh validation result and the URL where the value was observed.
| Mismatch | Risk | Response |
|---|---|---|
| USD code on CAD page | Price is materially misrepresented | Fix market mapping |
| Currency missing | Amount is ambiguous | Add verified ISO code |
| Page converted, JSON-LD base | Visible and structured prices conflict | Generate from one pricing context |
| Shipping currency differs | Total offer context fragments | Align offer components |
- Identify the market and customer-facing currency.
- Compare page, Offer, feed and checkout.
- Trace the code to a governed pricing source.
- Repair the mapping at source.
- Verify a real localized session.
Currency therefore belongs in every price-quality audit, especially for US sites that also serve Canada or Australia.
Reliable currency data protects click intent by ensuring the price promise means the same thing throughout the purchase journey.
Which ISO 4217 Currency Code Should You Use?
Use the active ISO 4217 alphabetic code for the currency customers are shown and charged, such as USD, CAD, AUD, EUR, or GBP.
Do not use symbols, country codes, locale codes or informal abbreviations. “US,” “en-US,” and “$” answer different questions and cannot replace USD. Zero-decimal or multi-decimal currency behavior also belongs in price formatting and payment logic; the three-letter code itself remains the same.
- Frame the decision raised by Which ISO 4217 Currency Code Should You Use.
- Read the primary property definition and expected value type.
- Compare markup with the visible price and commercial terms.
- Correct the source catalog or template without inventing a value.
- Validate the rendered page and recheck it after pricing changes.
| Input | Valid? | Correction |
|---|---|---|
| USD | Yes | US dollar |
| $ | No | Choose USD, CAD, AUD or actual code |
| US | No | Country code is not currency |
| en-US | No | Locale is not currency |
| usd | Normalize | Use uppercase USD |
- Maintain a controlled list of supported currencies.
- Reject unknown codes during imports.
- Separate market, language and currency fields.
- Review retired or changed currencies when expanding markets.
The correct code comes from the transaction context, not from the user's browser language alone.
Use one current ISO 4217 alphabetic code and never substitute a symbol, country, or locale identifier.
Where Should PriceCurrency Appear in JSON-LD?
PriceCurrency belongs on the same Offer or PriceSpecification node as its price, or on AggregateOffer beside lowPrice and highPrice.
Scope is the central rule. A Product can have several Offers in different currencies, so a currency placed at the Product root cannot describe them accurately. When the active price is nested in UnitPriceSpecification, its currency should be nested there as well. Avoid publishing a second conflicting active price at Offer level.
- Evidence for Where Should PriceCurrency Appear in JSON-LD must come from the exact page and pricing context.
- Locate the Offer or PriceSpecification node that contains the property.
- Confirm the currency, price boundaries, tax treatment and eligibility context that apply.
- Compare rendered structured data with catalog, checkout and visible page terms.
- Retain a fresh validation result and the URL where the value was observed.
| Pricing node | Amount field | Currency field |
|---|---|---|
| Offer | price | priceCurrency |
| UnitPriceSpecification | price | priceCurrency |
| AggregateOffer | lowPrice and highPrice | priceCurrency |
| Product | No direct offer price scope | Do not detach currency here |
- Map the Product.
- Identify each Offer and pricing node.
- Pair the amount and code at one level.
- Remove duplicate conflicting active prices.
- Validate the rendered graph.
A simple example is "price":49.99,"priceCurrency":"USD" within the same Offer.
Currency must remain beside its amount so every pricing node can be interpreted independently and correctly.
How Should Multi-Currency Product Pages Be Marked Up?
Multi-currency pages should expose the currency and price actually rendered for the current market or URL, with separate Offers when several currencies are simultaneously represented.
A currency switcher changes more than a symbol when conversion is real. The amount, currency, taxes, shipping rules, rounding and sometimes seller can change. If a localized URL has a stable USD price, its structured Offer should use that exact USD amount. If one URL varies solely by cookies or geolocation, crawl consistency and caching require additional care.
- Frame the decision raised by How Should Multi-Currency Product Pages Be Marked Up.
- Read the primary property definition and expected value type.
- Compare markup with the visible price and commercial terms.
- Correct the source catalog or template without inventing a value.
- Validate the rendered page and recheck it after pricing changes.
| Architecture | Markup approach | Primary risk |
|---|---|---|
| Separate market URLs | Local Offer on each URL | Wrong market template data |
| Currency query parameter | Match selected canonical strategy | Duplicate or unstable indexing |
| Cookie-based switcher | Render deterministic default | Crawler sees different currency |
| Several prices visible together | Separate clearly scoped Offers | Amounts and codes become mixed |
- Choose a deterministic default currency.
- Align canonical and localized URL behavior.
- Do not infer currency only from IP.
- Test cached pages from multiple markets.
Currency architecture should be designed with internationalization, checkout and canonicalization together rather than patched inside JSON-LD.
Multi-currency markup is trustworthy when each rendered market context produces a stable, matching Offer.
How Should Currency Conversion and Rounding Work?
Converted structured prices should use the same exchange rate, rounding policy, taxes and effective time as the customer-facing price and checkout.
Do not convert only the JSON-LD amount or reuse a stale daily rate while the page uses a live commerce price. Currency conversion is a pricing decision, not a display transformation. Psychological rounding, minimum margins and tax-inclusive markets may produce amounts that cannot be reconstructed from a raw rate alone.
- Evidence for How Should Currency Conversion and Rounding Work must come from the exact page and pricing context.
- Locate the Offer or PriceSpecification node that contains the property.
- Confirm the currency, price boundaries, tax treatment and eligibility context that apply.
- Compare rendered structured data with catalog, checkout and visible page terms.
- Retain a fresh validation result and the URL where the value was observed.
| Pricing component | Required alignment | Failure example |
|---|---|---|
| Exchange rate | Same source and timestamp | Page and markup differ |
| Rounding | Same decimal policy | 49.99 versus 50.00 |
| Tax treatment | Same included or excluded basis | Checkout adds unexpected amount |
| Promotion | Same eligibility and timing | Converted sale remains after expiry |
- Read the final commerce price, not a raw catalog base.
- Store currency with the calculated amount.
- Apply governed rounding.
- Generate page and markup from one result.
- Test checkout without completing a purchase.
See priceValidUntil for time-bounded converted promotions.
Converted currency data is correct only when the exact payable amount and structured price share one calculation.
How Should PriceCurrency Work With Shipping and Returns?
Shipping charges and monetary return costs should use currencies compatible with the Offer's market and must not silently introduce a different currency into the same purchase context.
A USD product price paired with an unlabeled or CAD shipping rate makes the total ambiguous. Shipping rules can vary by destination, but the monetary component still needs an explicit code. Refund fees, restocking amounts and thresholds deserve the same treatment when represented as structured monetary values.
- Frame the decision raised by How Should PriceCurrency Work With Shipping and Returns.
- Read the primary property definition and expected value type.
- Compare markup with the visible price and commercial terms.
- Correct the source catalog or template without inventing a value.
- Validate the rendered page and recheck it after pricing changes.
| Component | Currency rule | Audit check |
|---|---|---|
| Offer price | Use Offer currency | Match visible product price |
| Shipping rate | Use compatible purchase currency | Match destination quote |
| Free shipping | Zero with explicit currency context | Confirm threshold eligibility |
| Return fee | State monetary code | Match policy and checkout market |
- Join shipping rules to the correct market Offer.
- Keep thresholds and fees in the same currency context.
- Do not copy USD shipping amounts to every locale.
- Retest after logistics or tax configuration changes.
Review OfferShippingDetails schema and Merchant Return Policy schema for the surrounding models.
Every monetary component in an Offer should preserve a coherent market currency from product price through delivery and returns.
What PriceCurrency Schema Mistakes Are Common?
Common mistakes include using symbols instead of codes, labeling CAD or AUD prices as USD, separating currency from its amount, and allowing localized pages, feeds, shipping, or checkout to disagree.
Another frequent error is formatting the numeric price with commas or a currency symbol inside the price field. Human display formatting belongs in page copy, while structured values should keep a machine-readable number and separate ISO code. Defaulting every page to USD can conceal a failed localization pipeline.
- Evidence for What PriceCurrency Schema Mistakes Are Common must come from the exact page and pricing context.
- Locate the Offer or PriceSpecification node that contains the property.
- Confirm the currency, price boundaries, tax treatment and eligibility context that apply.
- Compare rendered structured data with catalog, checkout and visible page terms.
- Retain a fresh validation result and the URL where the value was observed.
| Mistake | Root cause | Durable fix |
|---|---|---|
| “$” as currency | Display symbol exported | Map to ISO 4217 |
| USD default globally | Missing market context | Generate from transaction currency |
| “$1,299.00” as price | Formatted string exported | Use numeric amount and code |
| Offer and shipping differ | Separate services | Share market context |
| Variant currency stale | Client selector updates partially | Update complete Offer |
- Extract amount and currency as a pair.
- Trace both to the commerce source.
- Fix market and formatting mappings.
- Regenerate affected Offers.
- Verify localized pages and checkout.
Syntax validation cannot determine whether a USD code describes a price actually charged in CAD.
Check the rendered page with the free website SEO checker, keep recurring evidence in Site Audit, and compare ongoing Novaverb plans when manual review no longer scales.
Currency errors require market-aware source corrections, not isolated text replacements in JSON-LD.