← All Merchant Center errors

Fix “Invalid sale price” in Google Merchant Center

Updated 27 September 2026 · 4 min read

Short answer. Merchant Center reports “Invalid sale price” when the sale_price attribute is 0 or less: every product must be priced above 0, except mobile devices sold as part of a contract. Send sale_price only while a product is actually on sale, as a number above 0 and below price with its currency code, and leave it out otherwise.

Shown in Merchant Center asInvalid sale price
Attributesale_price
EffectWarning — Google’s help page asks you to fix it and does not say what happens to the product meanwhile
Where to find itProducts → Needs attention, then filter by this issue
Free checkNot something a feed file shows; see below for what the check can tell you instead

What Merchant Center means by “Invalid sale price”

Google’s help page for this issue gives one reason for it: the value in sale_price is 0 or less. All products must be priced above 0, with the exception of mobile devices sold as part of a contract, and the fix is a sale price above 0.

The Content API’s product issues reference lists two strings for the attribute: “Invalid value for category [sale price]”, for a price that has to be raised above 0, and “Invalid value [sale price]”, for a value that does not follow the sale price specification — a number and an ISO 4217 currency code, no more than two digits after the decimal, lower than the product’s price.

Why it happens

How to fix it

In Shopify

In Shopify a sale is a compare-at price: the price is what the customer pays, the compare-at price is what it was. FeedRobin sends the compare-at price as price and the current price as sale_price only when the compare-at price is the higher of the two, and never sends a sale price of 0. If another feed shows this issue, look for products whose price is 0 with a compare-at price set.

In WooCommerce

WooCommerce accepts a sale price of 0, and a feed that copies it sends sale_price 0 to Google. Our free plugin sends the sale price WooCommerce is charging, and only while the sale is inside its scheduled dates — so a sale price of 0 set in WooCommerce reaches Google through it too. Clear the sale price on those products, or keep a free product out of the Google feed.

In a CSV or XML feed

Leave sale_price empty on products that are not on sale. Where there is a sale, write it like price — 12.99 EUR, a full stop, two decimals at most — and lower than price, with sale_price_effective_date for a sale that starts or ends at a set time. Download the affected products from Needs attention as a CSV to find them all, then resubmit the data.

How long until Merchant Center clears it

Once corrected data is processed, Google says the change may take 24 to 72 hours to show on the Needs attention page.

What FeedRobin does about it

The free check does not report sale prices yet. For connected stores, FeedRobin never publishes a sale price of 0 or one that is not lower than the regular price: it leaves it out and sends the regular price. Rules cannot change a price at all, so a rule cannot cause this either.

Questions merchants ask

Can I list a free product with a sale price of 0?

No. Google asks for every product to be priced above 0, and the only exception it names is mobile devices sold as part of a contract. A free gift is better kept out of the Google feed.

What if my sale price is higher than the regular price?

Google’s specification says the sale price should be less than the price. price is the regular price and sale_price the reduced one; if there is no reduction, leave sale_price out.

Do I need sale_price_effective_date?

Only for a sale that starts or ends at a set time. Without it, Google’s specification says the sale price is used immediately.

Does the product page have to show both prices?

Yes. Google asks you to show both the regular and the sale price clearly on the landing page, and only the sale price at checkout.

Sources

Related errors

Missing value [price]Fix “Missing value [price]” and zero prices in Google Merchant Center
Product disapproved
Mismatched value (page crawl) [availability]Fix “Mismatched value (page crawl) [availability]” in Merchant Center
Product disapproved
Condition mismatch detected: condition [condition]Fix “Condition mismatch detected: condition [condition]” in Google Merchant Center
Product disapproved
Mismatched strikethrough price (page crawl)Fix “Mismatched strikethrough price (page crawl)” in Google Merchant Center
Warning

Read next

Price mismatch in Google Merchant Center: why it happens and how to fix it for goodGoogle suspends products when the feed price and the page price disagree. The usual causes — currency, sale prices, stale feeds — and the fixes.
7 min
Prices off by two decimal places in Merchant CenterA price 100 times too high or too low in Merchant Center is a number written two ways. Where to look — the feed and the page's structured data.
5 min
Not sure what's wrong with your feed?Paste your feed URL and FeedRobin checks every product for missing barcodes, images, descriptions and more — free, no account needed.
Check my feed — it's free What it checks →