Discount codes and bundle discounts on Shopify: what stacks, what cancels, and how to set it up (2026)

Last updated: · 6 min read

A customer has three units in the cart at the "buy 3, save 15%" price and enters the influencer code SARAH10. What happens next is decided by Shopify's combination rules, not by your bundle app, and the result can be any of: both apply, the code wins, the bundle wins, or the code is rejected with "can't be combined". This guide explains the rules and gives you a decision table so the result is the one you intended.

Shopify's three discount classes

Every discount, automatic or code, belongs to one class:

ClassExamplesApplies to
Product10% off product X, buy 2 get 1, a bundle or volume discount from an appSpecific line items
Order10% off your order, $20 off over $100The subtotal
ShippingFree shipping over $50Shipping

Two rules follow from the classes:

  1. Combinations are opt-in per discount. When you create a discount you tick which classes it may combine with. A discount that is not allowed to combine with another never applies at the same time; when two cannot combine, Shopify keeps the one that saves the customer more.
  2. One product discount per line item. Two product discounts never stack on the same line, even when both allow combining with product discounts; they can apply to different lines in the same cart.

Bundle and volume discounts from apps are product discounts (Shopify Functions of the product-discount class) or, for fixed bundles built on Cart Transform, a merged line at the bundle price.

What that means in practice

Code the customer entersBundle offer in the cartResult
Order code (10% off the order), allowed to combine with product discountsVolume tier on 3 unitsBoth apply: tier on the lines, 10% on the discounted subtotal
Order code, not allowed to combine with product discountsVolume tierShopify keeps the larger saving; the customer sees one of them
Shipping codeAnyStacks when both allow it
Product code on the same product (10% off X)Volume tier on XNever both on the same line; Shopify keeps the larger saving on that line
Product code on a different productVolume tier on XBoth apply, each to its own lines
Product code aimed at a bundle componentFixed bundle merged into one lineThe merged line is the bundle, not the component, so the code does not match it
Store-wide sale set as an automatic product discountVolume tierSame as a product code: one per line; a good app skips items already on sale

The customer-facing message "discount code isn't valid for the items in your cart" or "can't be combined" is usually the fourth or fifth row, working as designed.

Decide what you want, then set it

Welcome code (WELCOME10) on top of bundles? Usually yes: a new customer reaching tier 2 and using the welcome code is the outcome you want. Make WELCOME10 an order discount that combines with product discounts, and leave the offer's "combine with order codes" switch on.

Influencer and affiliate codes? Same: order discounts, combining allowed, and track them by code.

A product code for one hero product while that product has a volume tier? Choose one. Either the code is for a different product, or you pause the tier for the campaign. Letting Shopify pick "the larger saving" per line produces support tickets.

Store-wide markdown (Black Friday 30%) while offers run? Set the markdown as compare-at prices and switch on "skip items already on sale" in the offers, so tiers never stack on a markdown; or pause the offers for the sale days. Avoid a store-wide automatic product discount plus tiers: one product discount per line means the customer gets one of them, unpredictably per line.

Free-shipping threshold with a cart bar? Keep the free-shipping discount as a shipping discount allowed to combine with product discounts; the cart bar can show both the tier progress and "spend $12 more for free shipping".

The per-offer switch in MixMaxer

Each MixMaxer offer has "Combine with order and shipping discounts". On (the default), order-level and free-shipping codes apply on top of the offer; off, the offer refuses to combine and Shopify keeps the larger saving. Product-level codes follow Shopify's one-per-line rule: MixMaxer offers always allow combining with other product discounts, so a product code stacks on a different line and never on the same line. MixMaxer offers combine with each other, with priority deciding which one prices a shared product so two prices never land on one item. Settings › General holds the default for new offers; each offer can override it. Help article: Combining with discount codes.

Before a campaign, build the cart in "Test at checkout" (the last wizard step) to see what the offer alone charges, then test the code on the storefront with the same cart; the difference between the two is what the code did.

FAQ

Can a customer use a discount code on top of a bundle discount on Shopify?
Yes for order-level and shipping codes, when both the code and the bundle offer allow combining. A product-level code never stacks with a product-level bundle discount on the same line; Shopify keeps the larger saving.

Why does Shopify say the code "can't be combined"?
One of the two discounts was created without permission to combine with the other's class. Edit the code in Shopify › Discounts › Combinations, or the offer's combination switch in the app.

Does an automatic discount stack with a discount code?
Only when both allow it and they are not two product discounts on the same line. Automatic discounts follow the same combination rules as codes.

How do I stop tiers from stacking on my Black Friday markdown?
Mark the sale with compare-at prices and enable "skip items already on sale" in the offer, or pause the offers for the sale. Do not run a store-wide automatic product discount alongside tiers.

Why does a product code not apply to my fixed bundle?
The bundle is one merged line priced as the bundle; a code aimed at a component does not match it. Use an order code if you want a discount on top of the bundle.


MixMaxer: bundle and volume discounts as Shopify Functions with a per-offer combination switch, "skip items on sale", priority between offers and a checkout test before publishing. Install from the Shopify App Store · Combining with discount codes. Shopify combination rules checked 1 November 2026.

More guides and comparisons