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:
| Class | Examples | Applies to |
|---|---|---|
| Product | 10% off product X, buy 2 get 1, a bundle or volume discount from an app | Specific line items |
| Order | 10% off your order, $20 off over $100 | The subtotal |
| Shipping | Free shipping over $50 | Shipping |
Two rules follow from the classes:
- 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.
- 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 enters | Bundle offer in the cart | Result |
|---|---|---|
| Order code (10% off the order), allowed to combine with product discounts | Volume tier on 3 units | Both apply: tier on the lines, 10% on the discounted subtotal |
| Order code, not allowed to combine with product discounts | Volume tier | Shopify keeps the larger saving; the customer sees one of them |
| Shipping code | Any | Stacks when both allow it |
| Product code on the same product (10% off X) | Volume tier on X | Never both on the same line; Shopify keeps the larger saving on that line |
| Product code on a different product | Volume tier on X | Both apply, each to its own lines |
| Product code aimed at a bundle component | Fixed bundle merged into one line | The merged line is the bundle, not the component, so the code does not match it |
| Store-wide sale set as an automatic product discount | Volume tier | Same 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.