TierUp

Why your Shopify discount isn’t applying at checkout

Ordered by how often it turns out to be the cause, not by how interesting it is. Most of these take under a minute to rule out, and the first two account for the majority.

Before anything else, reproduce it in a fresh cart. Open a private window, add the product, and go to checkout. A cart you have been editing while changing discount settings is not evidence — you want a clean one before you start diagnosing.

1. Two product discounts are hitting the same item

This is the most common cause and the least obvious, because nothing reports an error. Both discounts look correctly configured. Only one applies.

On Basic, Shopify and Advanced, product discounts combine only across different products. Two product discounts cannot both apply to the same line item — Shopify picks one and the other silently does nothing.

On Shopify Plus, they can share a line, but only when the tags are reciprocal: each discount has to list a tag that the other one carries. A one-directional setup looks right and behaves exactly like the non-Plus case.

How to check: list every discount that could touch the product — automatic discounts, app-created discounts, and anything left over from a previous campaign. Turn them off one at a time and retest. If the discount appears the moment you disable an unrelated-looking one, you have found it.

2. The combination settings were never set

Every discount carries its own rules about what it may combine with — product discounts, order discounts, shipping discounts. These default conservatively, and a discount that combines with nothing will lose to anything else in the cart.

Worth knowing: these settings have to agree from both sides. Marking discount A as combinable while B still refuses to combine gives you B’s answer. How Shopify discount stacking works has the full combination matrix, and the plan differences behind cause 1.

3. The item is part of a Buy X Get Y discount

Products included in a Buy X Get Y discount are ineligible for further product discounts. Not deprioritised — ineligible.

This one catches people because the Buy X Get Y offer is often older than the problem, has been working fine, and nobody connects it to the new discount that isn’t showing.

4. You are testing a shipping discount against another one

Only one shipping discount applies to a cart, and shipping discounts do not combine with each other. If you are running free shipping over a threshold and a free-shipping code, the second one is not broken — it is doing what the platform says it does.

5. The discount is not actually active

Worth thirty seconds before spending an afternoon: check the status, the start date, the end date, and the timezone the store runs in. Also check any usage limit — a discount capped at a number of uses stops working with no visible change to its configuration.

If it is an automatic discount created by an app, confirm the app actually created and activated it. Created-but-inactive is a real state and it looks like a working setup from the admin.

6. Minimum requirements are being read differently than you expect

A minimum spend is evaluated against the cart subtotal, and what counts toward that subtotal can change once another discount has already been applied. A cart that qualifies before a sitewide discount can stop qualifying after it.

Test with a basket that clears the threshold comfortably rather than by a few cents. If the discount appears then, the requirement is the cause, not the discount.

7. The price on the product page was never a discount

The one people find last, because the store looks right the entire time.

Some apps render a price table in the theme without creating anything the checkout enforces. The product page advertises “3 for $45” and the cart charges full price, because the number on the page was display markup and nothing else.

How to tell: add the qualifying quantity and look at the cart line total, not the product page. If the product page and the cart disagree, nothing is misconfigured — the price was never a discount, and no amount of adjusting settings will make it one.

A discount that is enforced at checkout shows up as an actual discount line, applies without a code, and survives into the order. Ours, TierUp, uses Shopify’s native discount functions for that reason, and so do several alternatives — the distinction to check for is whether an app creates a real discount or only draws one. How to tell which kind an app is goes through it before you install.

How to test it properly

  1. Fresh private window, every time. Not a reloaded cart.
  2. Go all the way to the checkout page. The cart and the checkout do not always agree, and the checkout is the one that charges.
  3. Change one thing between tests. Two changes at once and you learn nothing from the result.
  4. Test the worst-case basket. Several discounted products, a code applied, and a shipping promotion running — that is the cart that finds the conflicts, not a single item.
  5. Place one real test order. Then check the discount appears on the order itself, and that your analytics recorded the revenue correctly.

If it works for you and not for a customer, check whether they are a returning customer with a different price list, whether the product is a variant you did not include, and whether they are shopping in a market or currency the discount does not cover.

Keep reading

Why some discount apps break Shop Pay and your analytics covers the two ways an app can change a price and what each one costs you. Quantity breaks vs bundles vs discount codes covers which mechanism suits which catalogue, and the BFCM checklist has a testing step worth doing before traffic arrives.