Missing hasMerchantReturnPolicy medium
Merchant listings: "Missing field 'hasMerchantReturnPolicy'"
Product markup has no return-policy object, so Google can't show return terms and the merchant listing loses a rich-result feature.
What you see
Missing field "hasMerchantReturnPolicy" (in "offers") This item is invalid for merchant listing experiences. This item does not meet all requirements for Merchant listings.
What’s actually happening
The Rich Results Test and Search Console's Merchant listings report show this as a non-critical issue (a warning) on Product pages. The product can still be eligible for the basic product snippet, but you lose the return-policy detail in the enhanced merchant listing. It usually shows up alongside "Missing field shippingDetails" because both are part of the same merchant-listing feature set.
Common causes
- The Product/Offer JSON-LD predates merchant-listing requirements and never included a return policy.
- hasMerchantReturnPolicy was placed on the Product instead of nested inside the Offer where Google reads it.
- A MerchantReturnPolicy object exists but omits the required fields — applicableCountry plus returnPolicyCategory.
- returnPolicyCategory is MerchantReturnFiniteReturnWindow but merchantReturnDays is missing, so the object is incomplete.
- Return policy is set in Google Merchant Center but the on-page markup is being validated in isolation, so the test still reports it absent.
How to fix it
- Nest hasMerchantReturnPolicy under the OfferInside "offers": { "@type": "Offer", ... } add "hasMerchantReturnPolicy": { "@type": "MerchantReturnPolicy", "applicableCountry": "US", "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow", "merchantReturnDays": 30, "returnMethod": "https://schema.org/ReturnByMail", "returnFees": "https://schema.org/FreeReturn" }.
- Match returnPolicyCategory to your actual policyUse MerchantReturnFiniteReturnWindow (and set merchantReturnDays), MerchantReturnUnlimitedWindow, or MerchantReturnNotPermitted. merchantReturnDays is only valid — and is required — with the finite window.
- Set a global policy on Organization instead of per-productIf your return terms are the same store-wide, declare one MerchantReturnPolicy under Organization markup rather than repeating it on every Offer. Google reads the org-level policy for all products.
- Or configure returns in Google Merchant CenterFor Shopping/merchant listings you can define return policies in Merchant Center, which removes the dependency on page markup. Markup and Merchant Center settings should not contradict each other.
- Re-validateRun the Rich Results Test on the live URL after deploy. The warning should clear; if it persists, the object is likely on Product instead of inside offers.
Stop it recurring
Bake hasMerchantReturnPolicy into the Offer block of your product template, or set a store-wide policy in Merchant Center, so new products inherit it automatically.
Related errors