Shopify Discounts and Promotions: Types, Stacking Rules and Margin Traps

By: Irina Shvaya | October 1, 2026
This guide is part of our Shopify resource hub: plans and fees, setup, every major feature, apps, marketing, operations, comparisons and migrations.

Shopify's native discounts cover most promotions a store runs: percentage or fixed amounts off products, collections or the whole order, buy X get Y offers, and free shipping. Each can be a code the customer enters or an automatic discount that applies itself when the cart qualifies. Discounts can also combine, within rules that decide which classes stack and in what order.

Those combination rules are where margin mistakes happen. Two order discounts of 10% and 20% don't compound to 28% off; Shopify calculates both on the same subtotal, so the customer gets 30% off. A Buy X get Y offer behaves differently on Plus than on other plans. And since Shopify Scripts stopped running on 30 June 2026, anything more complex than the native types runs through apps built on Shopify Functions.

This guide covers discount types and methods, combination and stacking rules, the limits that matter, Functions-based discounts, how discounts interact with B2B pricing, and how to keep promotions from eating your margin. Facts are as of October 2026. It's part of our Shopify hub.

Key Takeaways

  • Native discount types are amount off (percentage or fixed, on products, collections or the order), buy X get Y, and free shipping, delivered as codes or automatic discounts.
  • Discounts belong to three classes (product, order and shipping) and apply in that order; percentage order discounts that stack are each calculated on the same subtotal.
  • A store can have up to 25 active automatic discounts (including app discounts), and a customer can use up to 5 product or order codes plus 1 shipping code per order.
  • Stacking several product discounts on the same line item is Plus only, configured with reciprocal discount tags.
  • Custom discount logic now runs through Shopify Functions: public apps work on any plan, custom apps with Functions need Plus, and a store can activate up to 25 discount functions.
  • B2B catalog prices and discounts stack: codes and automatic discounts apply on top of catalog adjustments unless you restrict their eligibility.

Discount types

Shopify's discounts documentation describes three main types:

  • Amount off: a percentage or fixed amount off specific products, collections or the entire order (for example, 25% or $50).
  • Buy X get Y: the customer meets a purchase requirement and gets a discount on other items, such as buy two, get one free.
  • Free shipping: free shipping for orders that meet your criteria. You can exclude shipping rates over a certain amount so you don't end up discounting expensive express options.

Discounts apply to the order subtotal before taxes, and tax is calculated afterward. Sale prices set on individual products are a separate tool from discounts, and they're often the simpler choice for a site-wide sale on specific products.

For tiered discounts, multi-step logic or custom eligibility, Shopify points you to discount apps from the App Store, to Checkout Blocks if you're on Plus, or to your own custom app on Plus. Apps can also create a single discount that includes more than one saving, such as 10% off the order plus free shipping under one code.

Discount codes versus automatic discounts

Both methods work with every discount type.

Discount codes

Customers enter a code at checkout, online or in person on Shopify POS. Codes suit targeted campaigns: an email to a segment, an influencer partnership, a customer service gesture. When you create a code, you can set active dates, a usage limit (total and one per customer), a minimum purchase, eligible products, collections or variants, and which classes it combines with. Limits to know:

  • A code can apply to up to 100 specific customers, products and variants.
  • Each store has a cumulative limit of 20,000,000 unique codes, which apps can't bypass.
  • Start and end times follow your store's time zone.
  • "One use per customer" applies only to that discount. If you delete it and create a duplicate, customers can use the new one once more.
  • Codes don't apply to post-purchase offers.

Automatic discounts

Automatic discounts apply in the cart and at checkout when the conditions are met, so customers don't need to remember a code. They suit site-wide sales, collection promotions and bulk-buy offers. The trade-off is that customers may not notice the saving unless your theme shows it, so say it on the product page and in the cart. You can have up to 25 active automatic discounts at once, a total that includes app-based discounts.

Scheduling and help from Sidekick

You can schedule discounts to start and end, and Shopify also lets you use a rollout to schedule a discount's activation or test it against your existing discounts. Sidekick can create, edit or troubleshoot discounts from a plain-language request. Review what it creates before it goes live, as you would any discount.

How combinations and stacking work

Every discount belongs to a class: product discounts apply to specific items or collections, order discounts apply to the subtotal, and shipping discounts change shipping cost. When you create a discount, you choose which classes it can combine with. Shopify's combining discounts guide sets out the rules.

Which combinations are allowed

  • All merchants: order discounts with free shipping, product discounts with free shipping, and product discounts with other product discounts on separate items.
  • Eligible merchants: product discounts with order discounts, and order discounts with other order discounts. The store must not use checkout.liquid customizations (which have been retired for the checkout steps anyway) or the Licensify app.
  • Plus only: several product discounts on the same line item.
  • Never: two shipping discounts on the same order.

Order of application

Product discounts apply first, to individual items. Order discounts then apply to the revised subtotal. Shipping discounts apply last. When two or more percentage order discounts combine, each is calculated on the subtotal after product discounts, not on the already-discounted figure. Shopify's own example: on a $100 subtotal, codes for 10% and 20% off give $30 off in total, not $28.

Best discount wins

If discounts can't combine, because of their settings or the cart contents, Shopify applies the best discount for the customer. If a customer enters codes that can't combine, they see "Discount couldn't be used with your existing discounts."

Buy X get Y has its own rules

On plans other than Plus, products in a Buy X get Y discount can't receive further product discounts. If a customer enters a code that applies to those products, Shopify applies whichever overall discount is better for the customer. On Plus, the "customer gets" item can receive additional product discounts on the same line. Order discounts can combine with Buy X get Y on eligible stores.

Discounts that ignore combination settings

Custom discounts applied manually (for example, on a POS cart or a draft order) always apply, regardless of combination settings.

Where combinations work

Combinations work on orders through the Online Store, the Storefront API and Shopify POS. They aren't available on external checkouts such as Facebook, Instagram or Google.

Stacking on the same item (Plus)

On Plus, you can let product discounts combine on the same line item by tagging discounts (for example, "loyalty" and "seasonal") and selecting "Multiple per product." The setup must be reciprocal: each discount has to allow the other's tag.

CombinationSupported?Notes
Product + product (different items)Yes, all plansEach discount applies to its own items
Product or order + free shippingYes, all plansShipping discount applies last
Product + orderYes, eligible storesOrder discount uses the subtotal after product discounts
Order + orderYes, eligible storesPercentages each calculated on the same subtotal
Product + product (same item)Plus onlyRequires reciprocal discount tags
Shipping + shippingNoOnly one shipping discount per order

Functions-based discounts and apps

Shopify Scripts, which Plus stores used for custom discount logic, stopped running on 30 June 2026. Custom discount logic now runs on Shopify Functions. Shopify's Discount Function API is a unified API: one function handles one discount (code or automatic) but can apply savings across product, order and shipping classes. The older separate product, order and shipping discount Function APIs were deprecated in May 2025.

What that means for store owners:

  • Any plan: you can install public App Store apps that contain Functions, which is how most tiered, volume and bundle discount apps work today.
  • Plus only: custom apps that use Function APIs, so you can build discount logic specific to your business.
  • Limit: a store can activate up to 25 discount functions. They run concurrently, don't know about each other, and follow the combination rules you set.

When evaluating a discount app, check that it uses Functions (rather than editing prices in the theme), that its discounts appear in your Discounts page and reports, and how it behaves with your existing combination settings. Our guide to Shopify Functions explains the developer side, and Shopify upsell and cross-sell apps covers bundle and offer apps.

Discounts and B2B pricing

Since 2 April 2026, Basic, Grow and Advanced stores can use native B2B with up to three catalogs, while Plus keeps unlimited catalogs. Catalogs let you set a percentage adjustment across all products or fixed prices for specific products, and B2B also supports volume pricing.

The interplay with discounts is easy to miss. Shopify's B2B discounts documentation says automatic discounts and discount codes apply on top of any catalog price adjustments. In a blended store that sells both D2C and B2B, discounts set for All customers, specific customers or customer segments apply to both B2B and D2C customers by default. To limit a discount to certain B2B customers, create a B2B market and assign it in the discount's eligibility settings.

In practice: if your wholesale catalog already gives 40% off and you launch a 20% site-wide sale for consumers, wholesale buyers may get both unless you restrict the sale's eligibility. Our Shopify B2B guide covers catalogs in more depth.

Avoiding margin mistakes

  1. Do the stacking math before launch. List every active automatic discount and every code in circulation, then work out the deepest possible combination. Remember that stacked percentage order discounts add up rather than compound.
  2. Restrict eligibility. Exclude low-margin products, gift cards and B2B customers where appropriate, and set minimum purchase amounts.
  3. Cap usage. Use total usage limits and one-per-customer limits on public codes, which spread quickly on coupon sites.
  4. Cap free shipping. Exclude rates over a set amount so free shipping doesn't cover expensive express services.
  5. Test at checkout. Shopify recommends testing combinations with real carts: include eligible and excluded products, enter codes, and check the totals before closing the checkout.
  6. Name codes clearly. Shopify suggests names like STACK10-SHIPPING so staff can see what a code does.
  7. Audit regularly. Filter the Discounts page by "Combines with" to see which discounts stack, and watch the 25 automatic-discount limit.
  8. Measure. The Sales by discount report shows how often each code is used. Compare the margin on discounted orders with full-price orders, not just revenue.

Promotions can also affect fees. Shopify's card processing fees aren't returned when you refund, so heavy discounting combined with high return rates costs more than it looks; see our guide to Shopify transaction fees.

Promotions beyond discounts

Not every promotion needs a discount. A free gift with purchase is a common use of Buy X get Y. Bundles can come from Shopify's free Bundles app or third-party apps. Loyalty rewards often issue discount codes or store credit. And for abandoned checkout emails, you can add a discount to the reminder, though a plain reminder first is usually the safer test.

Conclusion

Shopify's native discount types and combination rules handle most promotions without an app. The risks are in the details: classes apply in a fixed order, stacked percentages are calculated on the same subtotal, Buy X get Y has plan-specific rules, and B2B buyers can receive consumer discounts on top of catalog prices unless you restrict eligibility. For anything more complex, use a Functions-based app on any plan or a custom app on Plus. If you want a second pair of eyes on your promotion setup or a custom discount Function, eSEOspace's Shopify development services can help.

Frequently asked questions

How many discount codes can a customer use on one order?

Up to 5 product or order discount codes and 1 shipping discount code, provided each discount is set to combine with the others' classes.

How many automatic discounts can I run at once?

Up to 25 active automatic discounts, including discounts created by apps.

Can I stack two discounts on the same product?

A product discount and an order discount can both affect the same item on eligible stores. Two product discounts on the same line item require Shopify Plus and reciprocal discount tags.

What replaced Shopify Scripts for discounts?

Shopify Functions. Scripts stopped executing on 30 June 2026. Public apps with Functions work on any plan; custom apps with Functions require Plus.

Do discounts apply before or after tax?

Before. Shopify applies discounts to the order subtotal and then calculates tax.

Do B2B customers get my storewide sale?

They can. Automatic discounts and codes apply on top of B2B catalog pricing, and in a blended store, discounts for all customers apply to B2B and D2C by default. Assign a market in the discount's eligibility settings to control who qualifies.

Put this into action with eSEOspace

We help businesses grow with website design that actually performs. Explore the services behind this guide:

Book a free strategy call →

Get a FREE Audit

We'll perform a comprehensive SEO, AEO, GEO & CRO audit of your website — completely free — and show you exactly how to outrank your competitors.

Don't have a site yet? Get in touch →

Get a FREE GEO/AEO/SEO Audit

We'll analyze your site's SEO, GEO, AEO & CRO — completely free — and show you exactly how to get found across Google and AI answers.

Don't have a site yet? Get in touch →

You Might Also like to Read