Why won't my VIP discount code stack on top of my sale price?

When a product is already marked down, Shopify's discount-combination rules can silently block a VIP or loyalty code from applying on top of it. Here's what's actually happening and how to fix it.

discountspromotionscheckoutdiscount codes

What's going on

A merchant runs a storewide or collection sale, then finds that a separate VIP or loyalty discount code either throws an error at checkout, gets rejected, or simply doesn't reduce the price any further. The customer sees the sale price, enters their VIP code, and nothing happens, or Shopify tells them the code can't be combined with the current cart.

This is a common point of confusion because Shopify has two very different mechanisms that both get called a sale, and they behave differently around stacking. One is a compare-at price, the strikethrough was-$50-now-$35 price shown on the product itself, which is not a discount object at all, just two prices stored on the variant. The other is an automatic discount, a percentage or amount off applied without a code, which is a discount object and is subject to Shopify's combination rules. If the sale is running as an automatic discount and that discount isn't explicitly configured to combine with discount codes, the VIP code will be blocked or show no visible effect, because Shopify treats separate discounts as mutually exclusive by default.

Why it happens

Shopify groups every discount, automatic or code-based, into one of three classes: product, order, or shipping. Two discounts only stack together if each one's own combinations setting explicitly allows the other's class; combining is opt-in on both sides, not automatic, and a newly created discount often has it left off. If a merchant creates an automatic sale discount without enabling combining with discount codes, any VIP code a customer enters afterward will be rejected or ignored, even though nothing looks obviously misconfigured in the admin.

A second, separate source of confusion is that even when combining is fully enabled, discount codes calculate against the current price of the item, meaning the price after any automatic sale discount has already been applied, not against the original compare-at price. Merchants who expect a VIP code worth a given percentage to mean that percentage off the original price are often seeing correct behavior, the percentage applied to the sale price, rather than a bug.

5 ways to fix it

1

Set the sale as a compare-at price, not an automatic discount

If your sale is really just a markdown (say, $50 crossed out, $35 shown), set it by editing the variant's compare-at price in Shopify admin rather than creating an automatic discount. A compare-at price isn't a discount object, so it never enters Shopify's combination rules and your VIP code will always be free to apply on top of it, no extra configuration needed. This is the simplest fix for most storewide-markdown-plus-loyalty-code setups.

2

If the sale is an automatic discount, turn on combining with discount codes

Go to Discounts in admin, open the automatic sale discount, and look for its combinations settings, then enable combining with discount codes (and the matching discount class). By default Shopify keeps discounts from stacking unless you opt in on both sides, which is almost always why a VIP code gets rejected or silently does nothing during a sale.

3

Enable combining on the VIP code itself, matching the sale's discount class

Combining is two-sided: open the VIP discount code and, in its own combinations settings, allow it to combine with whichever discount class (product or order) the sale discount belongs to. If only one side allows combination, Shopify still won't stack them, so check both the automatic sale discount and the VIP code.

4

Decide whether the VIP discount should come off the original price or the sale price

Native Shopify discount codes calculate off the current price at the time they're applied, which is the already-discounted price if a sale is active, not the original compare-at price. There's no built-in setting to make a code ignore an active markdown. If you want VIP customers to get a percentage off the pre-sale price specifically, you'll need to exclude sale items from the automatic discount, adjust the VIP percentage to compensate, or use a discount app or custom Shopify Function that can calculate off the original price. This is a real platform limitation, not a bug.

5

Watch for the one-discount-per-class limit

Even with combining fully enabled, Shopify only lets one discount from each class, product, order, or shipping, apply to a given line item at a time. If your sale is a product-level automatic discount and the VIP code is also product-level, they may still conflict rather than stack, since only one product discount can win on that item. Making the VIP code an order-level discount (or vice versa) is usually what lets both genuinely combine.

Bottom line

Most "my VIP code won't work during a sale" cases come down to Shopify's discount-combination settings being off on one or both discounts, or the merchant using an automatic discount for the markdown instead of a simple compare-at price. Try the compare-at-price approach first, since it sidesteps the combination system entirely; if the sale needs to be an automatic discount for other reasons, make sure both it and the VIP code have combining enabled for each other's discount class, and that they aren't competing within the same class. Native settings solve this for most stores. A discount app or custom Shopify Function is only worth reaching for if you need the VIP discount to calculate off the pre-sale price rather than the current price, which native Shopify can't do on its own.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.