Why does my free shipping threshold stop working the moment a customer applies a discount code?

Shopify's native free-shipping rate evaluates the order total after discounts are applied, so a coupon can knock a qualifying cart below the threshold and trigger a shipping charge nobody expected.

free shippingshipping thresholdsdiscountscheckout

What's going on

A customer adds enough product to clear your $75 free-shipping bar, feels good about it, then applies a 15 percent off code at checkout, and a shipping charge suddenly appears. They didn't do anything wrong. Shopify's built-in shipping rate conditions let you set a rate to apply based on order price, and that threshold is compared against the cart total at the moment the rate is calculated, which already reflects any discount code or automatic discount that has been applied.

This is a frequent source of support tickets and abandoned checkouts, because merchants set the threshold expecting it to apply to the subtotal the customer sees on the product page or in the cart drawer promising free shipping over $75. Shopify instead evaluates the condition against whatever the cart is worth after the discount reduces it, so a cart that visibly qualified before the code was entered can drop back below the line once it's applied.

There's no setting in standard Shopify shipping rates to switch this to a pre-discount subtotal. The price-based condition is tied to the order price at calculation time, and what that number includes is governed by how your discounts are set up to combine with shipping, not by a shipping toggle.

Why it happens

Shopify's price-based shipping rate condition reads the cart total as computed at the point delivery rates are requested. Discount codes and automatic discounts that reduce the order value are applied before that point, so the shipping rate engine sees the already-discounted total, with no built-in setting to reference the pre-discount subtotal instead.

Merchants typically advertise the threshold using the subtotal shown before any code is entered, which creates a mismatch between what's marketed on the storefront and what's actually evaluated once a discount is present.

On Shopify Plus, a delivery customization built with Shopify Functions can be written to reference the original, pre-discount line prices, but that's custom logic you have to build; by default, the same discounted cart values are what's available.

5 ways to fix it

1

Set the combinability of your discount codes so they don't stack with the free-shipping rate

In Shopify's discount settings, when you create a percentage-off code or automatic discount, you choose which other discount types it can combine with, including shipping discounts. If you set your percentage-off codes to not combine with shipping discounts, the free-shipping rate is evaluated on the un-discounted total, and the conflict goes away entirely. The tradeoff is that this also blocks any deliberate promotion where you want a percent-off code and a shipping discount to apply together.

2

Pad the free-shipping threshold to absorb your typical discount depth

If most of your codes fall in a predictable range, for example 10 to 20 percent off, raise the price-based free-shipping condition so a discounted cart still clears it. If you want free shipping to hold at a $75 cart with a 15 percent code applied, set the threshold closer to $65 instead. This costs nothing and needs no changes to discount setup, but it's an approximation: it under- or over-corrects whenever discount depth varies from code to code.

3

Reprice the promotion as a bundle or quantity discount instead of a blanket percentage code

If the recurring issue is codes like 15 percent off everything, switching that offer to fixed bundle pricing, buy-X-get-Y, or tiered quantity pricing avoids the problem, because those adjust the price of the product itself rather than being subtracted from the cart total at checkout the way a discount code is. The free-shipping threshold then evaluates against a total that already reflects the promotional price.

4

On Shopify Plus, build a delivery customization that checks the pre-discount subtotal

A delivery customization built with Shopify Functions can hide or force a shipping rate based on cart data you define yourself, including the original line-item prices before discounts are applied. This solves the problem precisely, but it isn't something you configure through the admin UI. It requires development work, either in-house or through a Shopify Partner or agency, and is only available on Shopify Plus.

5

Use a third-party shipping or discount app built to check the pre-discount total

Some shipping-rules and discount apps in the Shopify App Store include an option to evaluate free-shipping conditions against the subtotal before discounts, specifically to close this gap. This is the most flexible route if you run many overlapping promotions and can't standardize on one combinability setting, but it adds an ongoing app cost and one more moving part in checkout to maintain.

Bottom line

This is a real gap in how Shopify's native shipping rates work, not a merchant misconfiguration: the price-based condition simply doesn't offer a pre-discount option out of the box. Most stores can resolve the everyday version of this with the discount combinability setting or a slightly padded threshold; only stores running Shopify Plus with complex, unpredictable discount stacking really need custom Function logic or a dedicated app. BesPoP doesn't have a purpose-built app for this specific case, so weigh a Plus delivery customization build against a third-party app before committing engineering time.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.