How can a shipping policy charge a percentage of an order's value?

The Citead team, updated

In short. Use ShippingRateSettings.orderPercentage for a fraction of order value, or MonetaryAmount for a fixed or maximum shipping rate.

Definition: A shipping policy can express a percentage-based rate with Schema.org's ShippingRateSettings object. Its orderPercentage value is a fraction of the order value, while MonetaryAmount represents a fixed or maximum shipping cost with a currency.

Key facts

  • Google's ShippingService documentation requires either orderPercentage or weightPercentage when ShippingRateSettings describes a shipping rate.
  • Schema.org defines orderPercentage as the fraction of an order's value charged as shipping cost, with 0.10 representing 10% of the order value in its example. Schema.org's ShippingRateSettings definition gives this definition.
  • Google describes MonetaryAmount as the simpler alternative when a policy needs a specific or maximum shipping rate, using value or maxValue with currency. Google's property table documents those fields.
  • Google recommends placing the policy on one shipping-policy page and nesting ShippingService under Organization, rather than repeating it on every page. The same Search Central page states this placement guidance.

How does orderPercentage work?

The shippingRate property holds a ShippingRateSettings object when the charge is calculated from an order or its weight. For an order-value calculation, set orderPercentage to the fraction of the order value used as shipping cost. Google's documentation shows the property in this form:

"shippingRate": {
  "@type": "ShippingRateSettings",
  "orderPercentage": 0.10
}

The Schema.org definition of orderPercentage says that 0.10 means a shipping rate of 10% of the order value. The same type also defines weightPercentage for a rate calculated from the weight of the ordered goods. Its example uses 0.10 with a shipping weight of 15kg and says this would add $1.5 to the shipping price.

The percentage belongs to a shipping condition. In Google's complete example, a ShippingConditions object for Mexico has an orderValue with minValue set to 50 and currency set to USD, then applies the ShippingRateSettings object above. The condition also includes a transitTime object, so the rate and delivery information are represented together.

When should you use MonetaryAmount?

Use MonetaryAmount when the shipping cost is a specific amount or a maximum amount. Google's documentation calls it a simpler alternative to ShippingRateSettings and requires either value or maxValue together with currency for a shipping rate. A fixed-rate example from the same documentation is:

"shippingRate": {
  "@type": "MonetaryAmount",
  "value": 3.49,
  "currency": "USD"
}

The Schema.org MonetaryAmount type describes a monetary value or range. Its currency property identifies the currency in which the amount is expressed, and the page recommends standard formats such as ISO 4217 currency format, for example USD. In the shipping context, Google's documentation uses value for a fixed cost and maxValue for a maximum cost. A zero value represents free shipping in that documentation.

Where does the markup belong?

Google recommends a single page that describes the business's shipping policy. It says to place ShippingService under the Organization structured data type and says the policy need not appear on every page. The page also distinguishes a product-specific exception: for a non-standard policy for one product, place OfferShippingDetails directly under Offer; Google documents that offer-level shipping policies support a subset of the organization-level properties.

For the percentage case, the relevant nesting is therefore an organization-level ShippingService, a shippingConditions entry, and a shippingRate object whose type is ShippingRateSettings. The orderValue object on that condition defines the order range to which the rate applies. For a fixed or maximum amount, keep the condition and replace the rate object with MonetaryAmount and its currency-bearing amount fields.

FAQ

What does 0.10 mean in orderPercentage?

It represents a fraction of the order value. Schema.org's example states that 0.10 means a shipping rate of 10% of the order value.

Can a percentage rate also use currency?

The percentage is expressed through orderPercentage. Google documents currency with MonetaryAmount for a specific or maximum shipping rate, while the order-value condition itself uses a monetary amount to define its currency.

Which field represents a fixed shipping charge?

Use MonetaryAmount with value and currency for a fixed shipping cost. Google also documents maxValue as the alternative when the shipping rate is a maximum amount.

Sources

  1. Google Search Central, "Merchant Shipping Policy Structured Data (ShippingService)", 2026-09-08
  2. Schema.org, "ShippingRateSettings", 2026-09-16
  3. Schema.org, "MonetaryAmount", 2026-09-16

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark