Introduction
The "price mismatch" error is the #1 cause of disapproval on Google Shopping. It occurs when Google detects a difference between the price listed in your product feed and the price displayed on your product page at crawl time — and it can affect dozens of products at once, often without immediate notification.
The good news: once the cause is identified, the fix rarely takes more than a few hours. This guide explains why this error occurs, how to spot it in Google Merchant Center, and the 5 ways to fix it permanently.
Table of Contents
- What Google means by "price mismatch"
- The 5 main causes of the error
- How to identify affected products in GMC
- Fix #1: Sync your feed in real time
- Fix #2: Use the sale_price attribute correctly
- Fix #3: Correct the price format in your feed
- Fix #4: Align VAT between page and feed
- Fix #5: Use Schema.org structured data
- Preventing price mismatches in the future
- 15-Point Checklist
- FAQ
What Google Means by "Price Mismatch"
Google compares the price of each product in your feed with the price visible on the corresponding product page at the time its bot crawls it. If the two prices differ beyond a very narrow tolerance, the product is disapproved with the message:
"The price listed in your feed doesn't match the price shown on your landing page."
or in newer versions of GMC:
"Price mismatch between feed and landing page"
Google's tolerance
Google doesn't disapprove for a one-cent difference. The documented tolerance is ±5% or ±$0.50 (whichever is higher) for minor fluctuations. Beyond that, disapproval is automatic.
This tolerance does not apply in the following cases:
- Promotional price on the page but not declared in the feed
- VAT-inclusive price on the page vs. VAT-exclusive price in the feed
- Different currency between page and feed
Concrete impact on your account
| Situation | Consequence |
|---|---|
| 1 product with price mismatch | Single product disapproval |
| 20%+ of catalog with price mismatch | Account warning |
| 50%+ of catalog with price mismatch | Risk of account suspension |
| Recurring price mismatch after fixes | Suspension with manual review |
The 5 Main Causes of the Error
Cause #1 — Feed sync delay
This is the most common cause. You change a price on your site, but your Google feed only updates every 24 or 48 hours. In between, Google crawls your page, sees the new price, compares it to the old price in the feed — and disapproves.
Typical cases:
- Flash sale launched but not immediately reflected in the feed
- End of sale: page reverts to normal price but feed still shows the promo price
- Bulk price changes via CSV import without triggering a feed update
Cause #2 — Promotions not declared with sale_price
You apply a discount directly to the main price in your feed (price: 19.99 USD) but the page shows a crossed-out price of $29.99 and a promotional price of $19.99. Google considers the product's "real" price to be $29.99 and that $19.99 is an undeclared promotional price → mismatch.
Cause #3 — Incorrect price format in the feed
Google Shopping's price format is strict. An incorrect format can cause Google to read the wrong amount:
| Format | Status |
|---|---|
19.99 USD |
Correct |
19,99 USD |
Incorrect (comma instead of period) |
19.99$ |
Incorrect (no space, symbol instead of code) |
USD 19.99 |
Incorrect (currency before amount) |
19.99 |
Incorrect (missing currency) |
Cause #4 — VAT mismatch between page and feed
In the EU, product pages display prices including VAT. If your feed sends excluding VAT prices, Google sees a systematic ~20% difference on all your products → mass disapprovals.
Example:
- Product page: €23.99 inc. VAT
- Feed:
19.99 EUR(exc. VAT) - Difference: 20% → automatic disapproval
Cause #5 — Incorrectly configured multi-country or multi-currency prices
If you sell in multiple countries using country-specific feeds or a multi-currency configuration, a currency/country mapping error can create mismatches:
- Feed in GBP for products shown in EUR on the page
- Different price in the FR feed vs. the BE feed when the site shows a single price
How to Identify Affected Products in GMC
Via the GMC dashboard
- Log in to Google Merchant Center
- Left menu → Products → All products
- Click Filter → Issue → search for "price"
- The list shows all products disapproved for price mismatch
Via Feed Diagnostics
- Left menu → Feeds → select your main feed
- Diagnostics tab
- Items with issues section → filter by "price mismatch"
- You can see the price read from the feed AND the price read from the page — compare both
Key information: GMC displays both values it compared. This is the fastest tool to identify exactly where the difference comes from.
Via the feed testing tool
- Feeds menu → click your feed → Test feed
- Enter the URL of a problematic product
- GMC re-reads the feed and the page in real time and shows you the current values from both sides
Fix #1: Sync Your Feed in Real Time
When to apply: if the cause is a delay between changing a price on your site and the feed updating.
Switch to hourly synchronization
Most e-commerce platforms allow you to configure feed update frequency:
Shopify:
- Google & YouTube app → sync settings → choose "Every hour"
- Or trigger an immediate manual sync from the app
WooCommerce:
- WooCommerce Google Feed Manager plugin → settings → update frequency → "Every hour"
- YITH Google Product Feed plugin → same configuration
PrestaShop:
- Google Shopping module → configuration → CRON frequency →
0 * * * *(every hour)
Custom feed / API:
- Use the Google Content API to push price updates in real time whenever a price changes on your site
- This is the most reliable solution for catalogs with very dynamic pricing
Force an immediate update in GMC
To fix quickly without waiting for the next cycle:
- GMC → Feeds → select your feed
- Click the Refresh icon (circular arrow) in the top right
- GMC immediately re-fetches your feed and reprocesses all products
Fix #2: Use the sale_price Attribute Correctly
When to apply: if you run promotions and the discounted price isn't correctly declared in the feed.
The correct structure for promotions
Google Shopping distinguishes the base price (price) from the promotional price (sale_price). Both must be present simultaneously in the feed during a promotion:
<g:price>29.99 USD</g:price>
<g:sale_price>19.99 USD</g:sale_price>
<g:sale_price_effective_date>2026-04-01T00:00:00-05:00/2026-04-30T23:59:59-05:00</g:sale_price_effective_date>
Important rules:
price= base price always present, even during the salesale_price= discounted price visible on the pagesale_price_effective_date= promotion start and end dates (optional but recommended)- The
sale_pricemust match exactly the price displayed on the page
After the promotion ends
When the promotion ends, remove sale_price from the feed or update sale_price_effective_date with a past end date. Leaving an active sale_price while the page shows the normal price → new mismatch.
Fix #3: Correct the Price Format in Your Feed
When to apply: if the GMC diagnostic shows a value difference due to formatting (e.g., comma vs. period, symbol vs. ISO code).
The exact format expected by Google
[amount][space][ISO 4217 currency code]
Correct examples:
19.99 USD
299.00 EUR
1299.99 GBP
Fixes to apply depending on your case:
| Detected issue | Fix |
|---|---|
Decimal comma (19,99) |
Replace with period (19.99) |
Currency symbol ($) |
Replace with ISO code (USD) |
| No space before currency | Add a space (19.99 USD) |
Currency before amount (USD 19.99) |
Reverse order (19.99 USD) |
Price without currency (19.99) |
Add currency (19.99 USD) |
Check the format in your feed
- GMC → Feeds → click your feed → View processed items
- Search for an affected product
pricecolumn → check the exact format as read by Google
Fix #4: Align VAT Between Page and Feed
When to apply: if the diagnostic shows a systematic ~20% difference between the feed price and the page price.
Google's rule for VAT
In France and the EU:
- Your page must display prices including VAT (legally required for consumers)
- Your feed must also send prices including VAT
If your platform sends VAT-exclusive prices in the feed, fix the configuration:
Shopify:
- Settings → Taxes → verify "Include tax in price" is enabled for European markets
- In the Google & YouTube app: check the "Prices include taxes" setting
WooCommerce:
- WooCommerce → Settings → Tax → check "Display prices in the shop: Including tax"
- In the Google feed plugin: verify the "VAT-inclusive price" option is selected
PrestaShop:
- In the Google Shopping module: configuration → prices → select "Price inc. VAT"
Fix #5: Use Schema.org Structured Data
When to apply: as an additional protection layer to prevent future mismatches, and for sites with very dynamic pricing.
Why Schema.org reduces price mismatches
When your product page contains valid Product structured data with an Offer, Google can read the price directly from the HTML code of the page without having to parse it visually. This reduces interpretation errors and allows Google to detect mismatches more precisely — giving you the right error message rather than a silent disapproval.
Minimum required implementation
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Your product name",
"offers": {
"@type": "Offer",
"url": "https://yoursite.com/product",
"priceCurrency": "USD",
"price": "19.99",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
For a promotion:
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Your product name",
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"price": "19.99",
"highPrice": "29.99",
"priceValidUntil": "2026-04-30",
"availability": "https://schema.org/InStock"
}
}
Preventing Price Mismatches in the Future
Set up automatic monitoring
Don't discover disapprovals by chance — set up alerts:
- GMC → Settings (gear) → Email notification preferences
- Enable notifications for:
- "Issues affecting products" → immediate
- "Account status changes" → immediate
Protocol for every price change
Adopt this process for every price modification in your catalog:
- Update the price on your site (CMS, ERP)
- Update the feed immediately (forced sync or API push)
- Check in GMC within 2 hours that products aren't flagging errors
- For promotions: schedule the end of the sale in the feed at the same time as the launch
15-Point Checklist
Price format in the feed (4 points)
- Format:
[amount].[decimals] [CURRENCY_CODE](e.g.,19.99 USD) - Decimal separator = period (not comma)
- ISO 4217 currency code (EUR, GBP, USD…) not symbol (€, £, $)
- Space between amount and currency code
Feed ↔ page price consistency (4 points)
- Feed price = VAT-inclusive price displayed on the product page
- Promotions declared with
sale_price(not modifying the baseprice) -
sale_priceremoved from the feed when the promotion ends - No VAT-related difference (both feed and page using inc. VAT prices)
Synchronization (3 points)
- Feed updated at least every hour
- Forced refresh in GMC after every bulk price change
- Email notifications enabled in GMC for product issues
Structured data (2 points)
- Schema.org
Product+Offerpresent on each product page -
priceandpriceCurrencyin schema = VAT-inclusive price displayed on the page
Monitoring (2 points)
- Approval rate checked weekly in GMC
- Feed diagnostics reviewed after every major catalog update
FAQ
How long after fixing does it take for my products to be re-approved? Between 24 and 48 hours after your updated feed has been re-fetched by Google. To speed it up: GMC → Feeds → click "Refresh" to force an immediate re-fetch. Approval typically follows within 24 hours.
Does Google tolerate a small price difference? Yes, up to ±5% or ±$0.50 (whichever is higher). Beyond that, disapproval is automatic. This tolerance does not apply to VAT differences or currency mismatches.
My feed updates daily — is that enough? For a catalog with stable prices, yes. But if you run flash sales, private sales, or frequent price adjustments, you need hourly synchronization or a Content API integration.
I fixed the price but the product is still disapproved — why?
Check that: (1) the feed was actually re-fetched by Google after your fix (force a refresh in GMC), (2) you don't have an active sale_price still creating a mismatch, (3) the price format in the feed is correct. If everything looks right, wait 48 hours — Google sometimes takes time to reprocess.
My page displays a different price for logged-in vs. logged-out users. Is that a problem? Yes, this is a common issue. Google crawls your page without being logged in. If your site shows a different price for logged-in users (e.g., trade pricing), the bot sees the logged-out price — make sure that price exactly matches your feed.
I have products with different prices per size or color. How do I handle this?
Each variant must be listed as a separate product in the feed with its own item_group_id, id, and price. If the page shows a single "from $X" price but the feed lists variants at different prices, Google may detect a mismatch on the more expensive variants.
Can I have different prices for different countries? Yes. Create separate feeds per country/currency in GMC, or use supplemental feeds per market. Make sure each feed contains the price in the local currency of the targeted country, VAT-inclusive.
Diagnose Your Price Mismatches in 30 Seconds
Manually identifying all products with a price mismatch in a catalog of several hundred items takes time. MyGoogle automatically scans your product page and verifies in 30 seconds the consistency of your pricing data, its format, and the presence of Schema.org — with the exact fixes to apply.
Launch the free audit — no installation required, immediate results.