XooCode(){

MerchantReturnPolicy

MerchantReturnPolicy is an Intangible for a product return policy. It is consumed directly by Google's product return rich result and by all major shopping aggregators.

Core properties:

  • applicableCountry (Text / Country): ISO 3166-1 country codes the policy covers.
  • returnPolicyCategory (MerchantReturnEnumeration): finite window / unlimited / not-permitted / unspecified.
  • merchantReturnDays (Integer or Date): return window length when FiniteReturnWindow.
  • returnMethod (ReturnMethodEnumeration): by mail / in store / at kiosk / keep product.
  • returnFees + customerRemorseReturnFees + itemDefectReturnFees (ReturnFeesEnumeration): who pays, under which scenario.
  • returnShippingFeesAmount, customerRemorseReturnShippingFeesAmount, itemDefectReturnShippingFeesAmount: explicit fee amounts.
  • restockingFee: restocking fee amount.
  • refundType: FullRefund, ExchangeRefund, StoreCreditRefund.
  • returnPolicySeasonalOverride: holiday-season overrides.
  • merchantReturnLink: URL of the human-readable policy page.

Attach to Product (or Offer) via hasMerchantReturnPolicy.

Full example of schema.org/MerchantReturnPolicy json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/MerchantReturnPolicy
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MerchantReturnPolicy",
  "@id": "https://xoocode.com/returns#standard",
  "applicableCountry": ["US", "CA"],
  "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
  "merchantReturnDays": 30,
  "returnMethod": ["https://schema.org/ReturnByMail", "https://schema.org/ReturnInStore"],
  "itemDefectReturnFees": "https://schema.org/FreeReturn",
  "customerRemorseReturnFees": "https://schema.org/ReturnShippingFees",
  "customerRemorseReturnShippingFeesAmount": { "@type": "MonetaryAmount", "value": 6.95, "currency": "USD" },
  "refundType": "https://schema.org/FullRefund",
  "merchantReturnLink": "https://xoocode.com/returns",
  "returnPolicySeasonalOverride": {
    "@type": "MerchantReturnPolicySeasonalOverride",
    "startDate": "2026-11-01",
    "endDate": "2027-01-31",
    "merchantReturnDays": 60,
    "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow"
  }
}
</script>

Minimal valid version

The smallest markup that still produces a valid MerchantReturnPolicy entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/MerchantReturnPolicy (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MerchantReturnPolicy",
  "applicableCountry": "US",
  "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
  "merchantReturnDays": 30,
  "returnMethod": "https://schema.org/ReturnByMail",
  "returnFees": "https://schema.org/FreeReturn"
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

Common MerchantReturnPolicy mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    FiniteReturnWindow with no merchantReturnDays

    Wrong
    returnPolicyCategory = FiniteReturnWindow and no days
    Right
    Always pair FiniteReturnWindow with merchantReturnDays

    Google's return rich result requires both to render.

  2. 02

    Single returnFees on asymmetric policies

    Wrong
    One returnFees value for both defect and remorse
    Right
    itemDefectReturnFees + customerRemorseReturnFees separately

    Consumers specifically ask 'what if the item is broken'; asymmetry must be visible.

About the example data

Xoo Code Shop's full 30-day return policy with defect-vs-remorse asymmetry and a holiday-season override.

Comments

Loading comments...

Leave a comment