Shopify bundle discount not applying at checkout: the 12 causes, in the order to check them (2026)

Last updated: · 8 min read

The customer saw "3 for $60" on the product page, added three, and checkout asked for $75. They either abandon or write to you, and both are worse than never having shown the offer. This checklist is the order in which we debug it, for any bundle or volume-discount app, with the Shopify rule behind each cause. The MixMaxer-specific notes are marked; the rest is Shopify.

The 60-second check

Open the store in a private window, add exactly what the offer requires, go to the cart page, then press the normal "Check out" button (not Shop Pay, PayPal or Apple Pay). Look at the discount line.

  • Discount missing in the cart and at checkout: the offer is not live or does not cover the cart (causes 1 to 5).
  • Discount in the cart, missing at checkout: an enforcement problem (causes 6 to 9).
  • Discount at checkout with the normal button, missing with an express button: cause 7.
  • Discount present but a different amount: a combination or priority problem (causes 10 to 12).

Causes and fixes

1. The offer is not live

Draft, paused, scheduled for later, expired, or "limit reached" after an order cap. Every app has a status column; check it first. In MixMaxer the Offers list shows Active, Draft, Paused, Scheduled, Expired or Limit reached.

2. The cart does not meet the condition

Tier thresholds count units of the offer's products; a bundle needs every component in the required quantity and the right variant; a "spend $100" gift counts product prices before shipping and tax and excludes the gift itself. Two red mugs and one blue reach tier 3 only if the app counts variants together. Check the exact quantities and variants against the offer.

3. The product is outside the scope, excluded, or on sale

Collections are resolved live, so a product added to a collection after the offer was published may need a re-sync. Exclusions remove a product even when the scope covers it. "Skip items already on sale" means a variant with a compare-at price above its price is left out on purpose; a variant that is merely priced low is not "on sale" in Shopify's sense.

4. The customer does not match the audience

"New customers only" treats guests as new and logged-in customers with an order as returning; a returning customer who is not logged in is a guest. A tag rule matches the customer's tags exactly and case-sensitively (VIP is not vip). The test shopper logged into your staff account may simply be the wrong audience.

5. The app's data is out of sync with Shopify

The app writes the offer into Shopify as an automatic discount (and, for bundles, a Cart Transform). If that write failed, the storefront can still show the offer from cached data while checkout knows nothing. Typical reasons: a permission added in an app update that was never approved, or the discount deleted by hand in Shopify › Discounts. MixMaxer: a "Sync failed" chip on the offer and a dashboard banner carry Shopify's message; open the app once to approve a new permission, then press Re-sync with store, which rewrites the storefront data and every discount.

6. The discount is enforced by a script, not by Shopify

The structural cause. Some apps change prices in the theme with JavaScript and apply a discount code at the last moment. Anything that reaches checkout without running that script loses the discount: a slow connection, an ad blocker, a cached page, a customer who pressed "Check out" before the script finished. Ask the vendor one question: "Is the discount a Shopify Function?" If yes, checkout computes it itself, with no script involved. MixMaxer's volume, gift, bought-together and mix & match discounts are Functions, and fixed bundles use Shopify's Cart Transform. Why the product-page price differs at checkout explains the mechanics.

7. Express checkout buttons skip the cart

Shop Pay, PayPal, Apple Pay and Google Pay buttons on the product page and in the cart go straight to payment. Script-based apps, and any discount delivered as a code applied on the cart page, never get the chance to run. Shopify itself does not allow codes to be applied before the checkout page. Function-based discounts apply in express checkouts because Shopify computes them server-side. If the discount works with the normal button and fails with the express buttons, the app is script- or code-based; the only fixes are hiding the dynamic buttons on affected pages or changing the app.

8. The bundle components do not merge

With Shopify's bundle model (Shopify Bundles app, Cart Transform apps such as MixMaxer), the components merge into one line only when every component is present in the required quantity and variant. A pinned variant that the customer swapped, a component out of stock, or a Cart Transform that was deleted will leave the components as separate full-price lines. MixMaxer: check pinned variants, then Re-sync; the transform metafield is rewritten and a missing Cart Transform recreated. Stores still on checkout.liquid customisations cannot use product bundles at all.

9. Custom domain or checkout domain mismatch

Shopify does not allow apps to apply discounts when the store's canonical domain and checkout domain differ (an old myshopify link in a campaign, a domain in transition). Visit the store through the primary domain and test again; fix the domain settings if the canonical domain is wrong.

10. Discount combinations block it

Shopify's rules: automatic discounts and codes of the same class only combine when each one allows it; a discount that cannot combine with another never applies at the same time, and Shopify keeps the larger saving. One product discount applies per line. So a customer entering a 10% product code may lose the bundle discount, correctly by Shopify's rules. Decide per offer whether it may combine with order and shipping codes, and convert product codes to order codes where you want them to stack. Discount codes and bundles: what stacks.

11. Another offer has priority on the same product

Two offers covering one product (a volume tier and a set price, or two apps) cannot both price it. A well-built app lets you order offers and skips the lower one; two apps on the same product fight. MixMaxer: the order of the Offers list decides on the page, in the cart bar and at checkout, two prices never stack on one item, and an "Overlap" chip plus a wizard warning flag the conflict before publishing. If you run two bundle apps, make sure their products do not overlap, or uninstall one.

12. The sale is on POS Lite, a draft order, or a wholesale channel

Automatic discounts apply at POS Pro locations, not POS Lite. Draft orders do not get automatic discounts. B2B and some sales channels have their own pricing. If the complaint comes from a retail counter or an invoice, this is the reason.

Find it before the customer does

The failures above are easier to catch before publishing than after. MixMaxer's last wizard step, "Test at checkout", runs the real discount Function on a sample cart you build (products, quantities, variants, customer type) and lists per line the regular amount, the discount, what checkout charges and which offer priced it, including how a bundle merges. Causes 2, 3, 4, 8, 10 and 11 show up there before a single customer sees the offer. Test at checkout.

FAQ

Why does my bundle discount show on the product page but not at checkout?
The product page is rendered by the app's widget; checkout is computed by Shopify. If the app enforces the discount with a script or a late-applied code, anything that bypasses the script (express buttons, slow loads, ad blockers) loses it. If the app uses Shopify Functions, check sync errors, scope, audience and combination rules instead.

Why does the discount disappear when the customer uses PayPal or Apple Pay?
Express checkout buttons skip the cart page, so script- or code-based discounts never run. Function-based discounts apply in express checkouts because Shopify computes them itself.

Why are my bundle components separate lines in the cart?
The merge needs every component in the required quantity and variant and a working Cart Transform. Check variants and stock, re-sync the app, and make sure the store is on Shopify's current checkout.

Can a discount code cancel a bundle discount?
Yes, when the code and the bundle discount are both product discounts and one of them does not allow combining; Shopify keeps the larger saving. Order-level and shipping codes stack with bundle discounts when the offer allows it.

Does a bundle discount apply in Shopify POS?
Function-based discounts apply at POS Pro locations automatically; POS Lite does not apply automatic discounts. The product widget and cart bar are online-store features and do not appear in POS.


MixMaxer: discounts as Shopify Functions, bundles on Shopify's own Cart Transform, a "Test at checkout" step before publishing, and a free plan with no order cap. Install from the Shopify App Store · Overlapping offers and priority. Shopify discount rules checked 1 November 2026.

More guides and comparisons