by Tobe Osakwe Dec 4, 2025

Diagram showing how Shopify discount types interact
Diagram showing how Shopify discount types interact

Most merchants think stacking discounts in Shopify is simple. It is not.
If you want consistent results, you need to know which discount types are real, which are only visual, and which silently overwrite each other.

In this guide you will learn:

  • The differences between the most common discount types
  • Which discount combinations/stacks Shopify actually supports
  • How Shopify Functions and Regios Discounts unlock stacking safely
  • How to avoid painful double discounts caused by compare at prices
  • Real world examples and cheatsheets

By the end, you will understand Shopify discount stacking rules better than most experts.

Install now

What “Discount Stacking” Really Means in Shopify

'Combinations' checkboxes - 'Product', 'Order', and 'Shipping' discounts.
The combination rules in the Shopify admin cause major confusion for merchants.

How Shopify says discounts work is not how they actually behave in real stores.

Definition of terms

  • Stacking means basing one discount’s calculation on the result of another. Example: “10% off all shirts, and an additional 20% on red shirts, after the 10% is applied.”
  • Combining two discounts refers to using two discounts in the same order, where each one has different targets. Example: “10% off shirts, 20% off pants.”

In other words: stacking is multiplicative, while combining is additive.

Key points:

  • Shopify only allows one product discount per line item. You cannot stack two product-level discounts on the same item.
  • Order discounts can combine with product discounts if both allow combinations.
  • Shipping discounts cannot combine with each other.
  • Customers can use 5 product/order discounts and 1 shipping discount max per order.
  • Compare at price, subscription pricing, and markets price lists are not real discounts. They do not follow discount rules.
  • Shopify Functions discounts and built-in automatic discounts use the same combination engine.
  • You can find the rules of Shopify’s discount combination system in their helpdesk.

Stacking is possible, but only when you use the right discount types:

  • Product discounts can’t stack on top of each other, but they can be combined.
  • Order discounts can stack on top of product discounts.
  • Shipping discounts can neither stack, nor combine with each other.
  • Product discounts can stack on top of compare at price/subscription discounts/price lists.

Most issues come from either mixing real discounts with fake/legacy pricing systems, or unsupported discount combinations.

The 6 Types of Discounts in Shopify (And Which Are Real)

Concept map of discount types
Not all discounting systems in Shopify are created equal.

Before you understand stacking, you must understand which discounts actually count.

  • Real discounts: These use Shopify’s discount combination system. They also have one or more discount classes (product, order, and/or shipping).

1. Built-in Shopify Discounts

A built-in discount code in the Shopify admin. Has a 'Discount code', 'Percentage', and 'Applies to' input.
Shopify has built-in automatic discounts and discount codes.

This includes both “automatic discounts” and “discount codes” created within Shopify itself.

  • These are real discounts.
  • They have “Combinations” settings that allow users to decide how discounts behave when the cart is eligible for other discounts.
  • Can combine with Shopify Functions discounts.
  • Built-in Buy X Get Y discounts can’t combine with other discounts in some cases.
  • The code may have multiple effects (e.g. 25% off 1 collection + free shipping), but customers still type one code.

2. Shopify Functions Discounts (Regios Discounts uses these)

A discount logic flowchart created in our app. Applies 60% off 'Discount Combinations Test Product'
Shopify Functions enable powerful discount logic.
  • Real discounts, but third-party apps provide the calculation logic.
  • Uses the same “Combinations” system as built-in discounts.
  • Most reliable for advanced rules.

3. Compare at Price

A compare at price in the Shopify admin. It clearly states, 'Additional display prices'.
It says 'Additional display prices' because it's for display purposes only.

In Shopify, products/variants have a “price” (also known as the “sale price”) and a “compare at price.” In most themes, if an item has a “compare at price,” you’ll see a strikethrough price on the product page.

  • Not a real discount. It’s more like an MSRP or RRP.
  • Only changes the display price.
  • Causes double discounts when combined with real discounts.

4. Subscription Discounts

Subscription discount setup - A 'Discount and delivery' section, 'Offer discount' checkbox, and options for Percentage/Amount off/Fixed price
Shopify subscription apps have their own discounting system.

When using subscription apps, like Recharge, or the Shopify Subscriptions app, you have the option to offer “discounts” on subscription variants of products.

Example: “10% off your first month of the subscription”

  • Also not real discounts.
  • Subscription discounts “apply” after catalogs, but before a variant is selected on the product page.
  • They behave like a compare at price.
  • Often lead to accidental stacking.

5. B2B/Markets Catalogs

Screenshot of a catalog in the Shopify admin. Shows 'Title', 'Company locations' selector, and 'Pricing' section containing 'Set prices in' and 'Price adjustment' options.
Screenshot of a catalog in the Shopify admin

Shopify Plus has a feature called “Catalogs” that allows you to override pricing based on the Market or Company a customer belongs to. This is a separate system from discounts - catalogs apply way before discounts. Catalogs are a simple, scalable solution for contextual pricing.

  • Not real discounts. Nor are they just another compare at price-like system.
  • Since they’re built directly into Shopify, they face fewer restrictions than Shopify Functions discounts.

6. Draft Order Discounts

A manually-created draft order. It allows users to add products and apply discounts.
Draft orders are more than just a discounting system.

Shopify allows your staff to manually create orders (e.g. in B2B contexts) with a system called draft orders. While this is very useful, it’s a totally separate system from what your customers use to check out, which leads to confusion.

Draft Order Discounts vs Normal Discounts

  • In normal checkouts, discounts are their own thing that get calculated separately.
  • In draft orders, discounts are much simpler and belong directly to line items/the order.
  • Draft orders often do not combine with other discounts unless special flags are enabled.

If you want predictable stacking, your best bet is to build discounts with either built-in or Shopify Functions discounts.

Shopify Discount Stacking Rules Explained

Can customers use multiple discount codes in Shopify?

  • The short answer is yes.
  • The long answer is yes, but only if you do it the right way.

Automatic Discounts vs Discount Codes

If you think automatic discounts and codes behave 100% the same, you will run into problems fast.

Differences:

  • Codes require user input. Automatic discounts do not.
  • Both use the same combination engine behind the scenes.
  • In our experiments, we’ve observed that discount codes take precedence over automatic discounts.
  • Automatic discounts apply earlier in the purchase journey. Codes primarily apply at checkout (though there are ways to apply a discount code before checkout).
  • You can only have 25 automatic discounts, but you can have up to 20,000,000 discount codes.

Use automatic discounts for frictionless stacking. Use codes only when you need manual entry, uniqueness, or tracking. We have a full comparison of automatic discounts vs. discount codes article you may want to read.

Can You Allowlist Just Two Specific Discounts to Combine?

For example, if you have a “10% off shirts” discount, and you want it to be usable with your “20% off pants” discount, but not with your “30% off socks” offer…

Short answer No, you can’t.

Long answer

  • Shopify’s does not support a native “combine only these two discounts” setting.
  • The discount combination system applies to discount classes (product, order, and shipping), rather than to individual discounts.
  • The Discounts Allocator Functions API shows promise of allowing more granular, app-powered combination rules. However, it’s been in developer preview for over a year, and there’s no release date. We wouldn’t recommend building your discount strategy around Discount Allocator Functions in 2025 or 2026.

If you want precise stacking control, your best bet is to carefully build your discount logic so that different discounts are impossible to use together. For example, you could change your “10% off shirts” discount to “10% off shirts, but ONLY IF there are no socks in the cart.”

Can You Apply Multiple Discounts to the Same Line Item?

No. Shopify prevents this.

  • Each line item can receive one product discount max.
  • Even if two discounts are compatible, only one can apply.
  • Shopify always chooses the highest discount.

Use order-level discounts or custom logic if you need multiple modifiers.

Technically, you can achieve this using Shopify Scripts, but those have been deprecated, and you can’t create new ones.

This may change in the future

According to Shopify’s Functions API roadmap, in Q1 2026, it will become possible for apps to apply multiple product discounts to the same line item. Stay tuned!

Combinations Between Discount Types

We took the time to test every combination of the aforementioned discount types to ensure you receive the most accurate information possible. Here’s everything we found through our experiments:

Built-in Discounts

The 'Combines with' overview for a single discount in the Shopify admin.
Shopify's discount combination system is based on discount classes.

Real discounts are the most predictable and consistent when it comes to stacking and combinations.

Here are the rules:

  • Real discounts can combine with others only if both allow combinations.
  • Only one product discount can apply to a line item. Shopify enforces this.
  • If two product discounts target the same product, the higher discount wins.
  • Anything that’s not a real discount, e.g. compare at prices or subscription discounts, will stack ON TOP of real discounts.

Shopify Functions Discounts

Besides the fact that they have third-party calculation logic, Shopify Functions discounts work almost exactly the same as built-in Shopify discounts. The same combination rules apply.

B2B/Markets Catalogs: Hidden Gotchas

The Shopify helpdesk lacks clear documentation about combinations with catalogs, so we had to run experiments ourselves to find out how they interact with other discount systems.

Combinations:

  • B2B customers can’t use discounts by default. You have to reach out to Shopify support to enable this.
  • Discounts stack on top of catalog prices.
  • Catalogs completely override the original compare at price. You must check “Include compare-at price,” which applies your selected price adjustment to the original compare at price.
  • Watch out for the “Compare at price hiding” setting. When enabled, Shopify will not provide any information to Shopify Functions discounts about what an item’s compare at price was. This can break features like our How to handle items already on sale feature.
  • Catalogs do not stack on top of each other. Only one can apply to a given item.
  • Catalogs based on company override catalogs based on market, even if the market-based catalog would have applied a greater discount.

If you use Markets or B2B, always test combinations with other discounts before launch.

Compare At Price Causes Double Discounts

Example cart showing that an item with a compare at price shows no strikethrough at checkout.
The strikethrough compare at prices show on product pages completely disappears at checkout.

This is the number one source of “my discounts are wrong” tickets.

Example:

  • Shirt compare at price: $100
  • Price: $80
  • You apply a 20 percent product discount

Most merchants think the discount should be 20 percent off $100.
Shopify thinks it should be 20 percent off $80.

As a result, the final price becomes $64, when you expected $80.
You lost far more revenue than intended.

The compare at price is not a real discount. It is a display-only field. In Shopify, discounts always apply to the price, and never the “compare at price.” That’s why, when you add an item to the cart, you won’t see any strikethroughs from the compare at price in the checkout.

How Regios Fixes This

Screenshot of 'How to handle items already on sale' settings
Screenshot of 'How to handle items already on sale' settings.

Regios Discounts has a feature that fixes this issue by calculating properly. By setting the Advanced options > How to handle items already on sale setting to Calculate discount based on compare at price, you can tell our to take the difference between the “price” and “compare at price” into consideration when calculating discounts. Though the final discount will still apply to the “price,” the final subtotal will be what it would have been if the discount were applied to the “compare at price.” Read more about this feature in our helpdesk.

Draft Orders: The Hidden Stack Breaker

A draft order checkout URL, with the '/do/' highlighted.
Draft order checkouts always have '/do/' in the URL.

If your discounts mysteriously stop applying when combined with others, draft orders are another common cause. Draft order checkouts look similar to normal checkouts but follow different rules. Many legacy apps in the following categories rely on draft orders for pricing:

  • B2B/wholesale pricing
  • Product options
  • Subscriptions
  • Store credit
  • And many more…

If stacking is inconsistent, check whether draft orders are involved. Many use cases, such as B2B pricing, can easily be migrated to Regios Discounts.

How draft orders break combinations:

Shows the 'Product prices' setting unchecked and the 'Discount codes' setting checked.
Draft orders require specific settings to combine with other discounts.
  • Draft orders use a separate checkout with a completely different system for discounting.
  • When created manually, they don’t combine with discounts unless “Product prices” is unchecked and “Discount codes” is checked.
  • When created via apps, they don’t combine with discounts unless the app developer sets the acceptAutomaticDiscounts and allowDiscountCodesInCheckout flags when the draft order is created. Usually, draft order-based apps simply don’t do this.
  • Many apps create draft orders behind the scenes. You can recognize these by the /do/ in the page URL or the lack of a “return to cart” button in the checkout.
  • Most merchants never know it is happening, leading to confusion.

Discount combination rules for draft orders:

  • Can be used with built-in discounts or Shopify Functions discounts, if the right settings are used.
  • Works with compare at price.
  • Combines with catalogs, but only if you uncheck “Product prices.”
  • You can’t sell subscriptions using draft orders, so you can’t use draft orders with subscription discounts.

Subscription Discounts

A 'One-time purchase'/'Subscribe and save' widget from the Shopify subscriptions app.
Subscription discounts appear as 'Subscribe and 'save' widgets on product pages.
  • Applies after catalog pricing. The discount is based on the catalog price, rather than the original price.
  • Ignores compare at prices completely. The original “price” becomes the “compare at price” when a subscription discount is applied to an item in the cart.
  • Incompatible with draft orders.
  • Built-in/Shopify Functions discounts will stack on top of subscription discounts (unless the app has features for this case like Regios).

Practical Example

In this example, I had a product with:

  • A price of $100
  • A compare-at price of $200

And the following discounts from different systems:

  • Markets catalog with a 30% decrease price adjustment
  • Subscription discount offering 10% off weekly delivery
  • A built-in 50% off discount code

Let’s observe their interactions.

A Markets catalog showing a price of $70 and compare at price of $140 for a test product.
I added a 30% catalog price adjustment for the US market.

First, the markets catalog reduced the price from $100 to $70 on the product page, and the compare at price from $200 to $140.

The subscription discount brought the price to $63 and the compare at price to $70.
Subscription discounts apply after catalogs.

Then, I applied a 10% subscription discount. As you can see, the 10% applies to the $70, leading to a price of $63. The original compare at price of $140 was replaced with $70.

A 50% off discount in the checkout bringing the subscription variant's price to $31.50 and the non-subscription variant's price to $35.
Discounts apply after subscription discounts, leading to a double discount.

Lastly, a 50% built-in discount code applied on top of that $63 price, bringing the final price fo $31.50. I also had a non-subscription variant in the cart to demonstrate that a built-in discount brings it to $35. As you can see, this combination leads to double discounts.

The Discount Combination Cheatsheet

Discount Type Built-in Discounts Functions Compare at Price Subscription Discounts B2B/Markets Catalogs Draft Orders Notes
Built-in Discounts Yes Yes Yes Yes (stacks) Yes (stacks) Yes
Shopify Functions Yes Yes Yes Yes Yes Yes
Compare at Price Yes (stacks) Yes No No No Yes Often leads to double discounts
Subscription Discounts Yes (stacks) Yes No No Yes (stacks) No Behaves like compare at price
B2B/Markets Catalogs Yes (stacks) Yes (stacks) No Yes (stacks) No Yes Discounts are off by default for B2B
Draft Orders Yes Yes Yes No Yes N/A Requires API flags to combine

How To Avoid Compatibility Issues Forever

  • Prefer real discounts.
  • Avoid mixing multiple discounting systems.
  • Test Markets and B2B catalogs with real carts before going live.
  • Never rely on third-party apps that generate draft orders unless you know the rules.
  • Use Shopify Functions for anything advanced.

The fewer pricing systems you mix, the safer your stacking becomes.

Final Thoughts

Merchants lose money every day due to misunderstanding about discounts and combination rules in Shopify. By understanding what stacks Shopify actually supports, you can create discounts that are consistent, powerful, and tailored to your strategy. If you want the safest and most advanced stacking logic available today, Regios Discounts is built for you.

Install now