Shopify stacks discounts across types, not within them, and only when both discounts agree. Here are the rules, the limits, and the testing mistake that hides a broken stack until customers find it.
Shopify sorts every discount into one of three types: product, order or shipping. Discounts of different types can combine, but only when each discount's Combinations setting allows the other's type. Nothing combines by default.
Two limits sit on top. A customer can use at most 5 product or order discount codes plus 1 shipping code on an order. And a store can have at most 25 automatic discounts active at once.
One more rule catches most stores. Outside Shopify Plus, two product discounts never add up on the same item. Shopify applies the better one and drops the other.
| Type | What it reduces | Example |
|---|---|---|
| Product | Specific items or collections | $20 off pants |
| Order | The cart subtotal | 10% off the whole order |
| Shipping | The shipping cost | Free shipping over $100 |
The type decides what a discount can sit beside, not whether it is a code or an automatic discount. A free shipping code and an automatic free shipping discount are both shipping discounts, and follow the same rules.
| Combination | Allowed? |
|---|---|
| Order discount + shipping discount | Yes, all stores |
| Product discount + shipping discount | Yes, all stores |
| Product discounts on different items | Yes, all stores |
| Product discount + order discount | Yes, on eligible stores |
| Order discount + order discount | Yes, on eligible stores |
| Two product discounts on the same item | Shopify Plus only |
| Shipping discount + shipping discount | Never |
"Eligible" has a specific meaning. To combine product with order discounts, or order discounts with each other, your store must not use any checkout.liquid customisations. If those options are missing from your Combinations section, that is usually why.
Two shipping discounts never combine because, as Shopify explains, a shipping discount applies to the whole shipping rate. So an order gets one shipping discount at most.
And combinations only work on orders through your online store, the Storefront API and Shopify POS. They are not available on checkouts on Facebook, Instagram, Google or other external platforms.
Every discount has a Combinations section on its settings page. This is the part that catches teams out: ticking the box on one discount does nothing on its own.
Shopify applies multiple discounts only when the setting on each discount allows the combination. So a new VIP code set to combine with shipping discounts still fails if your free shipping discount was built months ago with combinations switched off. Every older live discount has to be opened and edited one at a time.
One shortcut worth knowing. On the Discounts page you can filter by "Combines with" to see which of your live discounts already allow which types, instead of opening each one.
And a discount's type cannot be changed after it is created. If you built a product discount and needed an order discount, you have to delete it and start again.
Try it on one of your own procedures.
Record a process once, AI writes the structured SOP. 3 free SOPs, no credit card.
The automatic discount limit is the one a busy Q4 calendar hits first. Shopify allows 25 active automatic discounts, and that number includes discounts created by apps.
A store running a dozen always-on automatic discounts, such as free shipping over a threshold, subscriber pricing, clearance collections and bundles, has used half its allowance before a single seasonal promotion exists. Once the limit is reached, Shopify notes some automatic discounts might not apply.
So audit the active list before building the campaign, not after a discount stops working. Switching off last season's automatic discounts is the cheapest room you can make.
Outside Shopify Plus, when two product discounts both apply to the same item, Shopify picks the better one for the customer instead of adding them together. A collection sale and a separate product code on the same shirt pay out once, not twice. A forecast that counted both is wrong before the campaign starts.
Shopify Plus is the exception. Plus stores can configure product discounts to combine on the same item, using matching tags on each discount. Shopify's own example takes a pair of pants from $100, to $90 with 10% off clothing, to $70 with a further $20 off pants.
Outside Plus, products in a Buy X get Y offer can't take any further product discount. If a customer enters a code that applies to one of those products, Shopify removes the Buy X get Y offer and applies whichever deal is better. On Plus, the free or discounted item in the offer can take further product discounts.
Shopify always applies discounts in the same order:
Discounts come off before tax, and tax is added afterwards.
Percentage order discounts do not compound. Each one is worked out on the same original subtotal. On a $100 order, 10% off plus 20% off leaves $70, which is 30% off, not 28%.
Mixing a percentage and a fixed amount works differently. The percentage applies first, then the fixed amount comes off the new subtotal. In Shopify's example, a $350 order gets 10% off to $315, then $20 off to $295.
Free shipping thresholds sit on top of your rate settings, which can start charging the wrong amount without anyone editing them.
Test at the real checkout. Not with a draft order.
Shopify only combines discounts on orders through the online store, the Storefront API and POS. And a custom discount added to a draft order always applies, whatever the combination settings say. So a draft order can show you a total that real checkout will refuse to give your customers.
Shopify's own advice is to go through checkout yourself: add products, enter the discount codes, check the totals, and close the page before paying. While you are there, also add a product the discount should not cover, and try a delivery address in any region the discount excludes.
If customers see "Discount couldn't be used with your existing discounts", Shopify's checklist is short: confirm both discounts are set to combine with each other's type, look for an active automatic discount that clashes, and check any checkout apps.
Running test orders safely on a live store, and what to check in the admin afterwards.
Capital letters are not the problem. Here is what actually stops a single code working.
The rules for one promotion can live in up to three places that change independently: the Combinations settings in Shopify, a discount app's own stacking settings, and on Plus stores possibly custom logic a developer maintains. A procedure written against one of them says nothing reliable about the others.
So check the procedure each campaign season. Walk through creating a discount in the admin as it looks today, compare it with the documented steps, and fix any step whose screenshot no longer matches the screen.
Keep last season's version when you update the procedure, so you can see what changed.
This is where ReccordSOP helps. Record yourself creating the discount once, and it becomes a step-by-step SOP with a screenshot of each step and the clicked button highlighted. Record it again next season and it shows which steps changed, instead of overwriting the old version. It documents the process. It does not run it, watch your discount settings, or make decisions for you.
Before your next campaign goes live, build the full stack in a real checkout with every code and automatic discount a customer could have. If the total differs from your forecast, the promotion is wrong on paper, and you found it before your customers did.
Yes, across types. Product, order and shipping discounts can combine when each discount's Combinations setting allows the other's type. Product with order discounts, and order discounts with each other, need a store without checkout.liquid customisations. Two shipping discounts never combine, and two product discounts on the same item only combine on Shopify Plus.
Up to 5 product or order discount codes, plus 1 shipping discount code. Automatic discounts are counted separately: a store can have at most 25 active at once, including discounts created by apps.
Usually because one of the two discounts isn't set to combine with the other's type. Ticking Combinations on the new code changes nothing unless the older discount also allows it. Other causes Shopify lists are an active automatic discount that clashes, or a checkout app interfering.
Not unless your store is on Shopify Plus. On other plans, Shopify applies whichever product discount is better for the customer and ignores the other. Plus stores can configure product discounts to combine on the same item using matching tags.
No. Shopify only combines discounts on online store, Storefront API and POS orders, and a custom discount on a draft order applies regardless of combination settings. Test at the real checkout instead and close the page before paying.
3 free SOPs to start. No credit card required. See if drift detection keeps your docs honest.
Start for freeI built ReccordSOP after watching too many DTC ops teams lose months to undocumented workflows. These SOPs are battle-tested with Shopify operators running $1M to $50M brands.
Last reviewed October 6, 2026
No. SAVE10 and save10 are the same code. When a code fails at checkout, capitalisation is almost never the reason, and a promo SOP that tells people to check it is pointing them the wrong way.
A checkout that completes is not a checkout that works. After a theme or app change, the test is whether the order in your admin holds everything the storefront collected.
A shipping rate nobody has touched in months can still start charging the wrong amount. The rate did not change. Something it reads from did.
We use essential cookies for sign-in and a small amount of analytics to improve the product. Privacy policy.