Why does a discount code take away free shipping my customer already qualified for?
A discount code is evaluated against the same cart total Shopify uses to decide free shipping, so a code applied after a customer clears your threshold can knock them back under it and take free shipping away.
What's going on
A customer adds $80 to their cart, clearing an $75 free-shipping threshold, then applies a 20 percent off code at checkout. Their subtotal drops to $64, below the threshold, and Shopify either shows a paid shipping rate instead of free shipping, or removes the free-shipping option that was available a moment earlier. The customer sees it as a bait and switch, and support tickets follow.
This isn't a bug or a misconfiguration. Shopify's checkout evaluates price-based shipping rates and free-shipping discount minimums against the cart total after discounts have been applied, not the original pre-discount subtotal. Any discount code, automatic discount, or combined promotion that lowers the cart total can also push it below whatever dollar amount triggers free shipping, even though the customer legitimately qualified for it before the code was applied.
The confusion is compounded because many merchants assume free shipping over a dollar amount and a percent-off code are independent, unrelated settings. In Shopify's default setup they aren't independent: both ultimately check the same live cart total, and whichever rule is evaluated after the discount sees the reduced number.
Why it happens
Shopify's shipping-rate logic and discount logic both operate on the live cart, and the total used to decide shipping-rate eligibility, including free-shipping minimums, is the post-discount total by default. There is no built-in toggle to make shipping thresholds check the pre-discount subtotal instead.
5 ways to fix it
Set your threshold assuming a typical discount is already applied
If most of your codes fall in a predictable range, such as 10 to 20 percent off, price your free-shipping threshold so a discounted cart still clears it. For example, if you want customers to reliably get free shipping around an effective $75 spend and your average code is 15 percent off, set the threshold near $63 to $65. This is the only fix that needs no app or code changes, but it only works well if your discount depth is fairly consistent across campaigns.
Set a separate minimum on your free-shipping discount
In Shopify Admin, under Discounts, you can create a discount of type Free shipping with its own minimum purchase requirement, rather than relying only on a price-based shipping rate under Settings, Shipping and delivery. That still leaves the underlying issue: Shopify evaluates minimum-purchase requirements against the cart total after discounts are applied, so the threshold math in the first tip still matters, but this at least keeps free shipping as its own explicit rule you control rather than an implicit side effect of a shipping rate.
Stop treating percent-off and free shipping as independent perks
Rather than letting a percent-off code and an automatic free-shipping threshold interact by accident, build them as one combined offer, for example a single discount code that grants both, or an automatic discount and a code explicitly set to combine with each other under the combinations options in discount setup. That way you decide up front what subtotal is required for the full bundle, instead of a shopper stacking a code that was never designed with your shipping threshold in mind.
For more control, look at Shopify Functions
If you are on a plan that supports Shopify Functions, custom logic can evaluate cart or delivery conditions beyond what the standard admin settings expose, which can help enforce shipping rules that don't simply follow the post-discount total. This is a developer project, not a settings change, so it only makes sense if the revenue at stake justifies building and maintaining custom code.
Try a shipping-rules app as a faster stopgap
Several shipping apps in the Shopify App Store let you set conditions on when a shipping rate is offered. Some may get closer to the behavior you want, but most still receive the same discounted cart total that Shopify's checkout uses, so test any app carefully against your actual discount codes before relying on it, since results vary by app and by discount type.
Bottom line
There is no built-in setting that checks a free-shipping threshold against the cart total before one specific discount but not another; Shopify's default behavior is to evaluate shipping rates and free-shipping minimums against the discounted total. For most stores, the simplest fix is pricing the threshold with typical discount depth already factored in, or redesigning discounts so free shipping and percent-off aren't independent, stackable perks. Stores with real volume at stake and developer resources may prefer a custom Shopify Functions solution over adding more discount codes and hoping the math works out.
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.