Short answer. When the prices Google Merchant Center shows are off by two decimal places — 100 times too high, or 100 times too low — the same price is written two different ways somewhere between your store and Google. Check the two places Google reads a price from: the price in your feed, which Google documents as a number with a decimal point and an ISO 4217 currency code, like 15.00 USD; and the price in your product page's structured data, which Google can use to update the price it shows. Both should say the same number, with a full stop as the decimal point.
A factor of exactly 100 is a clue in itself: it is the gap between an amount in major units (12.99) and the same amount in cents (1299), or between a decimal point and a digit that stopped being one. Below are the places to look, and the format each one should use.
1. The price in your feed
Google's price attribute specification asks for a number plus a currency in ISO 4217 format, and gives 15.00 USD as the example: a full stop before the decimals, the three-letter code after a space. It also says not to give more than two digits after the decimal point; more are rounded automatically to the nearest acceptable value. And it asks for an amount and currency that match the price on your landing page and at checkout.
Things to check in the file itself:
- A comma as the decimal separator,
12,99 EUR, from a spreadsheet or an export set to a European number format. - A thousands separator,
1.299,00or1,299.00, where the documented format has none. - An amount in minor units,
1299for 12.99, from a system that stores prices in cents and an export that copies the number without dividing it. - A currency symbol instead of a code,
€12.99, where Google asks for the ISO code.
2. The price in your product page's structured data
Google's merchant listing structured data takes the price in Offer.price as a plain number, in examples like "price": 39.99, with the currency in a separate priceCurrency property. For the number itself it points to schema.org's price guidelines, which say to use a full stop rather than a comma to indicate a decimal point, to avoid those symbols as readability separators, and to put the currency in priceCurrency rather than a symbol in the value.
To see what your page says, open the product page, view its source and search for "price" inside the application/ld+json block. A theme that prints the price there in cents, or with a comma, disagrees with a feed that has it right.
3. Automatic item updates can move the price for you
With automatic item updates, Google reads the structured data and other product data on your store and can change the price in your ads and free listings to the one the page shows — Google's example is a product uploaded at 4 USD whose page says 3 USD, updated to 3 USD. It can update strikethrough prices too. So a price that is right in your feed and wrong in your structured data can reach Google as the page's number. Google also notes that the automation may not work for products whose price changes more than once a day, and that a product may be disapproved instead of updated when it detects a mismatch — which is where a price mismatch begins.
How to find which side is wrong
- Pick one affected product. Write down three numbers: the price in your store's admin, the
pricein your feed file for that product, and thepricein the page's structured data. - The one that differs from the other two by a factor of 100 is the one to fix, at its source: the export setting that writes the feed, or the theme or app that writes the structured data.
Where FeedRobin fits
The feeds FeedRobin builds write every price as a number with two decimals, a full stop and the ISO code — 12.99 EUR — whatever format your store keeps it in. The free feed check opens a sample of your product pages, reads the price in their structured data and compares it with the price in your feed, which is the fastest way to see which of the two numbers moved. For an empty or zero price, see Missing value [price].
Sources
Google Merchant Center Help: price [price] (format, decimals, matching the landing page) and automatic item updates (prices read from the page, frequent changes, disapprovals). Google Search Central: merchant listing structured data (Offer.price, priceCurrency). Schema.org: price (decimal point, separators, currency).