Shipping rates not showing at checkout › Free shipping not showing
Shopify checkout diagnosticsFree shipping not showing at checkout
You advertise free shipping. The buyer reaches checkout and sees a shipping charge — or, worse, no shipping at all on a small order. Your free rate is still there in the settings. Here is why it does not reach the buyer, and the gap that turns a free shipping offer into “Shipping not available”.
First: is it a rate or a discount?
Shopify offers free shipping in two different ways, and they fail differently.
- A free shipping rate, in Settings → Shipping and delivery: a rate priced at 0, often with “Offer free shipping” and a minimum order amount, or an order-amount tier priced at 0. It lives in one shipping profile, in one zone.
- A free shipping discount, in Discounts: a code the buyer types, or an automatic discount. It has its own countries, minimum purchase and eligibility.
Open the one you actually use. Most of the causes below belong to only one of them.
The opposite problem: free above the threshold, nothing below
This one costs the most. A merchant sets “free shipping on orders over $40” and no other rate in that zone. Orders over $40 go through. Smaller orders get “Shipping not available” — exactly what one merchant reported in the Shopify Community, convinced it was random, until they found there was no rate at all for orders between $0 and $39.99.
Shopify compares price conditions with the cart value after discounts, and when no rate applies the buyer gets the shipping error. (Weight tiers behave differently: Shopify falls back to the next highest weight-based rate.) Every zone needs a rate that covers the whole range: a paid rate below the threshold, and a free one above it, with no maximum on the highest tier.
Why a paid rate shows instead of the free one
The cart mixes products from two shipping profiles
Each product or variant belongs to exactly one shipping profile. When a cart contains products from several profiles, Shopify combines their rates into one. Rates with the same name are added together. If no names match, Shopify adds the cheapest rate of each profile and shows the total as “Shipping”. So a free rate in the General profile plus a paid rate in a “Fragile” profile gives a paid “Shipping” line, even if the cart is far over your threshold.
The threshold is checked after discounts
Shopify compares price-based rates with the cart total after discounts and before taxes. A 55 € cart with a 10 € code is a 45 € cart for a “free from 50 €” rate. For a free shipping discount, only product prices count toward the minimum purchase, and products count at their discounted price only when the other discount can be combined with free shipping.
The buyer's country is in a different zone
A free rate exists only in the zone where you created it, and a country can sit in only one zone per profile. Free shipping set up for “Domestic” does nothing for a buyer in a “Europe” zone that only has a paid rate.
A paid rate from somewhere else applies
Buyers see every rate that applies to their order, with the cheapest selected by default. If they only ever see a paid one, the free rate does not apply to that cart. In one Community thread, the answer pointed to the usual suspects: another profile, another zone, or a shipping app adding its own rates.
The discount does not cover this buyer
A free shipping discount can be limited to some countries, to specific customers, segments or markets, and can exclude shipping rates above a set amount. A buyer outside any of those keeps paying for shipping, with no message saying why.
“Free shipping” in the cart, not at checkout
Buyers see no shipping rates at all until they enter an address. So any “You qualify for free shipping” message in the cart is not coming from your shipping rates. In Community threads, the cause was a free shipping banner toggle in the theme's cart settings, or a progress-bar app with its own threshold. Those messages can disagree with checkout; only checkout decides what the buyer pays.
On market-driven shipping
Stores moved to shipping options by market keep their thresholds, attached to a market's shipping option. When a cart meets an option's free shipping threshold, that option becomes free. During the upgrade, free shipping is applied to an existing option when it can be combined; otherwise it stays a separate free option the buyer can choose. After switching, check the result from the buyer's side — see what else can change.
What our store check covers, honestly
The free store check puts one unit of one product in a cart, as an anonymous buyer, with one address per country, and lists every delivery option that comes back with its price. So it shows you whether a cart of that size gets a free option, a paid one, or none at all — which is the “nothing below the threshold” failure, caught before a buyer finds it.
It does not type discount codes, log in as a customer, or build a cart big enough to reach your threshold, so it cannot tell you whether a discount applies. With monitoring, if an option that used to come back — free or not — disappears for a country, you get an email.
Related
Sources: Shopify Help Center, “Setting up flat shipping rates”, “Troubleshooting and testing shipping rates”, “Calculating shipping rates from different shipping profiles”, “Free shipping discounts”, “Understanding shipping options by market” and “Upgrading to shipping options by market”, checked 12 October 2026. Merchant reports from the Shopify Community.