Google Shopping price format: how to write price and sale_price
Google expects price as a number with a decimal point, a space and the ISO 4217 currency code – for example 19.99 EUR. Values like “19,99 €”, “€19.99” or a price without currency are reported as errors. The price must match your landing page and, outside the US and Canada, include VAT.
Upload your feed or shop export – the validator checks every price and writes a corrected file.
Open the feed validatorThe rules for price
- Format: number + space + currency code, e.g. 19.99 EUR (text and CSV feeds) – no currency symbols.
- Decimal point, at most two decimals; Google rounds extra digits.
- Currency as a 3-letter ISO 4217 code (EUR, USD, GBP, CHF …), the same currency the landing and checkout page show.
- The amount must match the price on the landing page and in the checkout.
- Tax: in the US and Canada (USD, CAD) without sales tax; in Germany, Austria, the UK and most other countries including VAT/GST.
What the validator says about typical values
The same checks the feed validator runs on your file, for common ways prices end up in exports (missing currency filled with EUR, as set in the tool):
| Value in the feed | Result | Corrected file |
|---|---|---|
| 19.99 EUR | OK | unchanged |
| 19,99 € | price not in Google’s format | 19.99 EUR |
| 19.99 | price without currency | 19.99 EUR |
| €19.99 | price not in Google’s format | 19.99 EUR |
| EUR 19.99 | price not in Google’s format | 19.99 EUR |
| 1.299,00 EUR | price not in Google’s format | 1299.00 EUR |
| 19.99EUR | price not in Google’s format | fix by hand |
| 0.00 EUR | Price is 0 | fix by hand |
sale_price: the reduced price
For a sale, keep the regular price in price and put the reduced price in sale_price – in the same format and the same currency. A sale price that is not lower than price is an error; the optional sale_price_effective_date limits the sale to a period.
Fixing a whole feed
Most price errors come from shop exports and spreadsheets: comma decimals, currency symbols, or no currency at all (Shopify and WooCommerce exports never contain one). The feed validator checks every row and its corrected CSV rewrites recognisable prices into Google's format. Values it cannot read safely – like a currency code glued to the number – are listed for a manual fix.
Worked examples: price 19.99 EUR, sale_price 24.99 EUR
A product where regular and sale price were swapped during an import.
- Result
- Sale price not lower than price
- price
- 19.99 EUR
- sale_price
- 24.99 EUR
- Fix
- price 24.99 EUR, sale_price 19.99 EUR
The validator catches swapped prices before Google disapproves the product – check sale prices especially before Black Friday.