Shopify changed how discounts combine in 2023, and most merchants haven't fully processed the implications. Before the update, Shopify's rule was simple: one discount per order. After the update, automatic discounts combine with codes by default — and this change applied retroactively to every existing automatic discount.
If you set up automatic discounts years ago and haven't reviewed them since, your customers might be stacking discounts you didn't intend. That's free margin walking out the door.
This guide explains exactly how Shopify discount combinations work — what stacks with what, the rules, the pitfalls, and how to set up intentional stacking strategies that increase revenue rather than erode it.
How Shopify Discount Combinations Work
The 2023 Update
Before 2023, Shopify enforced a strict one-discount-per-order rule. Customers entered one code. That was it.
Shopify then enabled discount combination support, allowing automatic discounts to combine with discount codes by default. The critical detail: this change was retroactive. It affected all existing automatic discounts, not just newly created ones. Merchants who set up automatic discounts before the update may not realize those discounts now combine with any code a customer enters.
What Combines With What
| Combination | Allowed? | Notes |
|---|---|---|
| Product discount + Order discount | Yes | Order discount calculated on subtotal after product discount |
| Product discount + Shipping discount | Yes | Both apply independently |
| Order discount + Shipping discount | Yes | Both apply independently |
| Automatic discount + Discount code | Yes (default) | This is the 2023 change |
| Two product discounts on same line item | No | Only one product discount per line item |
| Two shipping discounts | No | One shipping discount per order |
| Buy X Get Y + Product discount (on same item) | No | Items in BXGY are ineligible for additional product discounts |
Discount Application Order
Discounts apply in a specific sequence:
- Product discounts apply first — directly to individual line items
- Order discounts calculate on the subtotal after product discounts
- Shipping discounts apply last
This order matters for the math:
Example: Product costs $100. You have a 10% product discount and a 10% order discount.
- Product discount: $100 - 10% = $90
- Order discount: $90 - 10% = $81
- Total discount: 19%, not 20%
The difference is small on one order, but at scale it affects your margin calculations. A "$100 product with 10% product discount + 10% order discount" is NOT "$80" — it's "$81."
Maximum Discounts Per Order
- 5 product or order discount codes per order
- 1 shipping discount code per order
- 25 active automatic discounts at any time
- Only 1 discount code can be typed at checkout (the other 4 must be applied through Shopify's API or cart links)
The practical implication: customers generally use one typed code plus whatever automatic discounts qualify. The multi-code scenario applies more to headless storefronts, Shopify POS, or API-driven implementations.
Common Discount Combination Strategies
Automatic Site-Wide + Loyalty Code
Set an automatic 10% discount site-wide during a promotional period. Loyal customers also receive a "LOYAL15" code for an additional 15% off. The automatic discount applies to everyone; the code rewards your best customers with a deeper deal.
The math: $100 item → 10% automatic = $90 → 15% code = $76.50. Total: 23.5% off.
Bundle Discount + Free Shipping Threshold
Create bundle pricing through a discount app (or automatic discount) with a free shipping threshold. The customer buys a bundle at 15% off, and because the bundle price exceeds the free shipping threshold, they also get free shipping.
Why it works: The bundle drives AOV up. Free shipping removes a common abandonment cause. Neither discount undermines the other.
Volume Tiers + Seasonal Code
Set up automatic volume discounts: Buy 2 save 10%, Buy 3 save 15%, Buy 5 save 20%. During seasonal events, layer a "HOLIDAY10" code on top. The volume discount applies at the product level; the holiday code applies at the order level.
This is powerful but requires careful margin math. Buy 5 at 20% off plus a 10% order code means the customer is effectively getting ~28% off.
VIP Tiered Discounts
Use customer tags to apply different automatic discounts:
- Standard customers: No automatic discount
- VIP customers: 10% automatic discount
- Wholesale: 20% automatic discount
The tagged automatic discount applies when the customer logs in, and additional codes can layer on top during promotions.
Pitfalls and How to Avoid Them
Retroactive Combination (The Big One)
Old automatic discounts now stack with codes by default. Action: Go to Shopify Admin > Discounts and review every active automatic discount. For each one, check the combination settings and decide whether it should combine with codes or not.
Unintended Margin Erosion
When automatic discounts combine with codes, customers can get deeper discounts than you planned. A "10% off everything" automatic discount plus a "20% off" influencer code means the customer gets ~28% off — potentially below your margin floor.
Action: Calculate the maximum possible discount when all active promotions combine. Write down your margin floor per product. Make sure the worst-case combination doesn't go below it.
Buy X Get Y Conflicts
Products in a BOGO or Buy X Get Y offer cannot receive additional product discounts. If a customer triggers a BOGO and also has a product-level discount, the BOGO takes precedence and the product discount doesn't apply to those items. This can confuse customers who expect both.
Action: Clearly communicate which offers apply and which don't. Consider using order-level discounts instead of product-level discounts when running BOGO promotions.
Checkout.liquid Incompatibility
Stores with legacy checkout.liquid customizations may not be able to combine certain discount types. Specifically, combining product discounts with order discounts, or order discounts with other order discounts, requires the store to not use checkout.liquid customizations.
Action: If you're on Shopify Plus and still using checkout.liquid, migrate to Checkout Extensibility. Shopify is deprecating checkout.liquid regardless — the deadline for non-Plus stores is August 2026.
The One-Code-Field Limitation
Customers can only type one discount code at checkout. If you want to give a customer multiple code-based discounts, you'll need to convert some to automatic discounts or use API-driven code application. This limitation often surprises merchants who want to run "stack these two codes" promotions.
How to Test Discount Combinations Before Going Live
-
Create a test customer account. Tag it appropriately if you're testing tag-based discounts.
-
Add products to cart that trigger multiple discounts. Test the worst-case scenario — what's the maximum discount a customer could potentially get?
-
Verify the application order. Check that product discounts apply first, then order discounts, then shipping. The final price should match your calculations.
-
Test on different channels. Discount combinations work on the Online Store, Storefront API, and Shopify POS. If you sell on multiple channels, test each one — behavior may differ.
-
Check Buy X Get Y interactions. If you're running BOGO alongside other discounts, verify that items in the BOGO aren't also receiving product-level discounts.
-
Test on mobile. 70%+ of traffic is mobile. Make sure discount messaging, code entry, and the final price display correctly on phone screens.
-
Calculate margin impact. Before launching, run the numbers: what's your margin per order when all applicable discounts combine? If the combined discount puts you below your floor, adjust one of the layers.
Setting Up Smart Combinations with Buno
For bundle-based discount strategies, Buno creates discounts through Shopify's native discount system using Shopify Functions. This means Buno's bundle discounts follow Shopify's standard combination rules — they combine with other discounts exactly as Shopify intended.
The advantage: visible pricing on the product page (showing the bundle savings before checkout), automatic application (no code needed), and inventory sync across bundled products. The bundle discount acts as an automatic product-level discount, which can combine with order-level codes during seasonal promotions.
Example setup: Buno's bundle discount (15% off the "Routine Kit") automatically applies when the customer adds the bundle. During BFCM, you add a "BFCM10" order-level code. Customers who buy the bundle and apply the code get both discounts — a deliberate, margin-calculated combination rather than an accidental one.
Getting Started
-
Audit your current discounts. Go to Shopify Admin > Discounts. Review every active automatic discount's combination settings. Make sure nothing is combining unintentionally.
-
Calculate your margin floor. What's the maximum discount you can offer per product before losing money? Write this number down.
-
Design intentional combinations. If you want discounts to stack, do it deliberately. Set up the combination, calculate the maximum combined discount, and verify it stays above your margin floor.
-
Test everything. Make test purchases with the worst-case combination. Verify the numbers before real customers discover stacking opportunities you didn't plan for.
-
Monitor after launch. Check your average discount per order weekly. If it's creeping higher than expected, customers may have found combinations you missed.
Discount combinations are a powerful tool when used intentionally — and a margin killer when they happen accidentally. The 2023 update made stacking the default. Make sure your setup reflects deliberate decisions, not accidental generosity.
