TierUp

Shopify discount stacking in 2026: what combines and what doesn’t

Most confusion about stacking comes from one idea being missing. Shopify does not decide whether two discounts combine by comparing the two discounts. Each discount declares, in advance, which classes of discount it is willing to sit alongside — and both have to agree.

The three classes

Every discount on Shopify is exactly one of these, and the class is what the combination rules operate on:

A discount carries three switches, one per class, and all three default to off. That default is the single most common reason a discount someone expected to stack didn’t: nobody turned anything on.

The combination matrix

CombinationAllowed?Condition
Product + ProductYesOn different items. Same item is the special case below.
Product + OrderYesBoth must allow the other’s class.
Product + ShippingYesBoth must allow the other’s class.
Order + OrderYesBoth must allow the order class.
Order + ShippingYesBoth must allow the other’s class.
Shipping + ShippingNoOnly one shipping discount applies per order. No setting changes this.

Shipping discounts are also applied last, after product and order discounts have been worked out. If free shipping is conditional on a subtotal, the subtotal it sees is the discounted one.

The same-item rule, which is where Plus differs

Two product discounts landing on the same line item is the one case with a genuine plan difference, and it is the thing most articles on this subject get wrong.

On Basic, Shopify and Advanced: one product discount per line item. Two product discounts can both be active, both be correctly configured, and only one will apply to any given item. There is no error and no warning.

On Shopify Plus: they can share a line — but only when the tags are reciprocal. Each discount has to list a tag that the other one carries. If discount A lists SEASONAL and B is tagged SEASONAL, that is half of it; B must also list a tag that A carries.

Why this trips people up: a one-directional tag setup looks finished. It behaves exactly like the non-Plus case — one discount applies, silently — so the natural conclusion is that the feature doesn’t work, rather than that it is half configured.

Buy X Get Y excludes more than people expect

On non-Plus plans, every product in a Buy X Get Y discount is ineligible for further product discounts — the ones the customer buys as well as the ones they get.

On Plus it is narrower: the “customer gets” product can take another product discount, the “customer buys” product cannot.

This is worth knowing because a Buy X Get Y offer is often older than whatever problem prompted the search, has been running without complaint, and is rarely the first thing anyone suspects.

The limits

The 25 is the one that catches growing stores. Apps create automatic discounts on your behalf, so the count includes things you did not make by hand and will not find by scrolling your own campaigns.

Codes and automatic discounts do combine

A persistent myth says they cannot. They can — when a customer applies a code while automatic discounts are running, Shopify works out the best applicable discount or combination and applies it. The usual per-class rules still govern what is eligible, so each discount must allow the other’s class.

What actually changed recently

Two things, and conflating them is how the wrong version of this topic spreads.

Deciding your own stacking policy

The technical rules tell you what is possible. They do not tell you what you should allow, and that decision is worth making deliberately rather than discovering in a monthly margin report.

  1. Write down the worst basket a customer could assemble — every discount you run, combined, on your highest-discount item.
  2. Work out its margin after shipping and payment fees. If that number is unacceptable, the fix is a combination setting, not hope.
  3. Turn combination on deliberately, one pair at a time. Off is the safe default and it is the default for a reason.
  4. Put that worst basket through a real checkout and read the total. Not the cart — the checkout.

One structural note while you are deciding: a quantity break is a product discount, so it competes for the same line item as every other product discount and combines freely with order and shipping ones. That is usually an argument for using it instead of a sitewide percentage on the same products rather than alongside it — which is how ours, TierUp, is designed to be used, and equally true of any quantity-break app. Quantity breaks vs bundles vs discount codes covers that choice properly.

Keep reading

If something is not applying right now, why your discount isn’t applying at checkout works through the causes in order. Why some discount apps break Shop Pay and your analytics explains the two ways an app can change a price, and BFCM pricing that protects your margin covers the margin arithmetic behind step 2 above.