Shopify Discount Usage Limits: Complete Guide to Preventing Code Abuse
Your "one per customer" limit stopped nothing. Email aliases, coupon extensions, and guest checkout bypass traditional limits daily. Learn native settings plus Growth Suite's unique code architecture where abuse is structurally impossible.
Muhammed Tüfekyapan
Key Takeaways
- 1 "This discount has reached its usage limit" means the store set a usage cap and the cap is full - the code still exists, it just stopped working
- 2 Only 3 settings trigger the message: a total usage cap, a one-per-customer rule, or both - owners can check and fix it under Discounts > Maximum discount uses
- 3 Deleting and recreating a discount resets its one-per-customer memory - Shopify treats the new code as a completely different discount
- 4 Shopify validates one-per-customer by email matching only, with no IP or device checks - Gmail aliases and guest checkout bypass it easily
- 5 Usage limits control how often a code can be used, not where it goes - any code that works for many people will leak to coupon extensions and deal sites
- 6 Unique codes per visitor make this error structurally impossible - no shared code pool, and each code is deleted server-side when the timer ends
- 7 Across 958 Shopify stores (January to June 2026), only 14% of time-limited offer codes were used before expiry - the other 86% expired and were auto-deleted
Someone just tried a discount code on a Shopify store and got hit with this line: "This discount has reached its usage limit."
Here is the short answer. The store put a cap on how many times that code can be used. Enough people used it, and the cap is full. The code still exists. It just stopped working.
If you are the shopper, nothing is broken on your end. If you own the store, one of three settings in your admin caused this, and you can fix it in about two minutes.
This guide explains the message in plain words first. Then it shows you which setting triggered it, where Shopify's limits fall short, and how to stop discount code abuse before it starts.
What Does "This Discount Has Reached Its Usage Limit" Mean?
This message pops up at checkout, right after someone types a code into the discount box and hits apply.
Shopify is saying something very specific: this code is real, but it is not allowed to be used anymore. The store set a usage cap, and that cap is now used up.
You might run into the same idea with different wording:
- "Promo code usage exceeds maximum count"
- "Coupon usage limit has been reached"
- "This discount code has reached its usage limit"
Different words, same root cause. A limit was set, and the limit was hit.
Only three settings can cause this:
- A total usage cap. The store said "this code works 500 times." Order number 501 gets the error.
- A one-per-customer rule. You already used the code once, so Shopify blocks your second attempt.
- Both at the same time, so whichever rule fires first wins.
The annoying part is that the message does not tell you which one you hit. It just shuts the door. The next two sections walk both sides through what to do about it.
Seeing This Error as a Shopper? Here Is What You Can Do
Quick truth: this is almost never your fault, and there is usually nothing wrong with your account.
Still, run through this list before giving up.
Check the code for typos. One wrong letter gives you a different error ("this code is not valid"), but it takes ten seconds to rule out.
Check the campaign dates. Many codes only work inside a sale window. If the sale ended yesterday, the code is done, no matter what the banner on the site still says.
Check the fine print. Some codes need a minimum cart value or only work on certain products. Shopify shows a different message for those cases, but it is worth a look.
If the code should still work, the store's usage cap is the blocker, and only the store can raise it. Send their support a quick message with a screenshot. Stores hear this complaint more often than you would think, and many will just send you a fresh code.
One thing that will not help: retrying with a different email address. If the store hit its total cap, the code is dead for everyone, not just for you.
Store Owner? These 3 Settings Trigger the Message
If customers are sending you screenshots of this error, here is exactly where to look.
Go to your Shopify admin, open Discounts, and click the discount in question. Scroll down to the section called "Maximum discount uses." You will see one of three setups.
The box "Limit number of times this discount can be used in total" is checked, and the usage counter has caught up with your number. If you entered 100 and the counter shows 100 used, order 101 gets the error. This is the most common cause.
The box "Limit to one use per customer" is checked, and the person seeing the error already used the code. Keep in mind that Shopify tracks this by email address, not by name or address.
Or both boxes are checked, so either rule can fire first.
Fixing it takes a minute. Raise the total number and save. Or create a fresh code and send it to the customers who got blocked.
One Quirk Worth Knowing:
Straight from Shopify's own documentation: if you delete a discount and create it again with the same settings, the one-per-customer memory resets. Shopify treats the new one as a completely different discount, so past users can use it again. Sometimes that is exactly what you want. Sometimes it quietly reopens a door you meant to close.
9 Best Shopify Discount Apps: Find the Right One for YOUR Problem
Stop browsing feature lists. 9 premium apps compared by the 7 problems they solve, not rankings, not reviews, just honest "use this when..." guidance. Find your perfect match in minutes.
Other Discount Errors This Message Gets Confused With
Shopify shows a few different discount errors, and shoppers mix them up all the time. Each one points to a different problem.
"This discount code is not valid." The code does not exist, has a typo in it, or was deleted. If you are the shopper, retype it carefully. If you are the owner, check that the discount is still active.
"This discount does not apply to the items in your cart." The code works, just not for these products. The store limited it to certain collections, or the cart does not meet a minimum spend.
"This discount code has expired." The campaign dates passed. Date limits are separate from usage limits, so a code can expire with uses still left on it.
And then there is the message this article is about. The code is fine, the dates are fine, the products are fine. The cap simply filled up.
Why does this matter? Because the fix depends on the message. Telling support "your code is broken" is less useful than pasting the exact line you see. And if you are the owner, knowing which error your customers report tells you which setting to touch.
Shopify Discount Code Limits: The Technical Ceilings
While we are on limits, here are the hard ceilings Shopify itself sets, taken from its official help docs. These apply no matter which apps you install:
Shopify's Hard Ceilings:
- 20,000,000 unique discount codes per store, counted over the store's lifetime. Once you reach it, you have to delete old codes before creating new ones. No app can raise this.
- 100 specific customers, products, or variants per discount. Go past that and Shopify shows an "item entitlements exceeded max number" error.
- 25 active automatic discounts at a time, and app-based discounts count toward that total.
- 5 product or order discount codes plus 1 shipping discount code per order.
- One product discount per line item. If two product discounts could apply to the same item, Shopify gives the customer the better deal.
Why bring this up in an article about usage limits? Because old codes are not harmless. Forgotten codes keep working if someone finds them, and every code you ever created piles up toward your store's lifetime ceiling. Cleanup is part of limit management. Later in this guide, you will see a setup where cleanup happens on its own.
How Shopify Checks "One Use Per Customer"
The one-per-customer rule sounds airtight. The way Shopify enforces it is softer than most merchants expect.
When someone applies a limited code, Shopify asks one question: has this email address used this code before? If yes, block. If the shopper is logged into a customer account, Shopify can also check the account ID, which is a bit sturdier.
And that is pretty much it. Shopify does not check IP addresses for discount limits. It does not look at the device or the browser. Same laptop, same couch, same person, new email address: to Shopify, that is a brand new customer.
This is why determined shoppers get around the rule so easily.
Gmail aliases are the classic trick. Gmail ignores everything after a plus sign, so [email protected], [email protected], and [email protected] all land in the same inbox. Shopify sees three different customers. Gmail also ignores dots in the address, which multiplies the trick all over again.
Guest checkout makes it worse. Most stores allow it because forcing accounts hurts conversion, and that is a fair trade. But with no account, the only check left is email matching, and you just saw how that goes.
The Gap in One Line:
The rule is real. The enforcement has holes. Honest customers never notice. The small group that wants to abuse your code will not even break a sweat.
Why Public Codes Always Leak
Even a perfectly configured limit has a second weakness: the code itself can travel.
The moment one real customer sees your code, it can spread. Coupon browser extensions like Honey watch checkout pages and collect working codes. When one shopper applies your code, the extension can offer it to everyone else who has the extension installed. Coupon sites, deal forums, and Reddit threads do the same thing manually, one screenshot at a time.
We are not going to quote exact user counts or leak speeds here. Public numbers on this are shaky, they change fast, and honestly, we do not trust most of them. But the direction is not shaky at all: a code that works for many people will spread. It is a matter of when, not if.
Here is the uncomfortable part. Your usage limits control how often a code can be used. They do nothing about where the code goes. A welcome code with a one-per-customer limit can still end up on a coupon site, where thousands of strangers try it. Each of them looks like a brand new customer with a fresh email, so the per-customer rule waves them through. Your total cap drains faster than planned. Then real customers start seeing the error message from the top of this article, and your support inbox fills up.
A leaked code costs you twice. First in margin, because strangers buy with a discount you never meant to give them. Then in support time, because genuine customers hit the drained cap and write in. The limit did its job, and you still lose.
Automatic Discounts on Shopify: The Complete Pros & Cons Guide
Frictionless checkout sounds perfect, until you realize you're discounting dedicated buyers who would pay full price. Learn when automatic works, when it hurts, and the smarter alternative.
The Structural Fix: Unique, Single-Use Codes
Full disclosure before anything else: we build Growth Suite, a Shopify app for time-limited offers. So this section is not theory we read about. It is a system we run in production every day.
Growth Suite never creates one code and wraps rules around it. It creates a brand new code for each visitor who gets an offer. The flow looks like this:
- A visitor browses, hesitates, maybe drifts toward the exit. The offer triggers.
- Growth Suite creates a fresh discount code through the Shopify API. It is a real Shopify discount, and you can see it in your admin while it is active.
- The code is applied to the visitor's cart automatically. Nothing to type, nothing to copy.
- A countdown timer runs on the offer. When it hits zero, the code is deleted from Shopify on the server side. Not deactivated. Deleted.
Setup is deliberately boring. You pick a discount range and a duration range once, inside the campaign settings. After that, the system generates, applies, expires, and deletes codes on its own. There is no "maximum uses" box to babysit, because the architecture replaces it.
Now think back to the error message that started this article. Under this model, it basically cannot happen to your visitors. There is no shared code to run out. Each code belongs to one visit. Email aliases do nothing, because the code is tied to the visit, not the inbox. Coupon extensions find nothing, because no code ever works for a second person. A screenshot posted on Reddit is a picture of a code that already expired or only ever worked in one session.
Deletion also does not hurt your records. The order keeps its discount data, so your reports stay accurate even after the code itself is gone. Your Discounts page stops turning into a graveyard of old campaigns.
We can also show you what this looks like in real numbers, because it is our own product data.
What Our Own Product Data Shows (958 Stores, January to June 2026):
About 14% of time-limited offer codes were used before the timer ran out. The other 86% expired and were deleted automatically.
Read that second number again. The large majority of codes never become orders. They simply vanish, and nothing ever leaks to a coupon site. And the codes that do get used were used by the exact visitor they were created for. No pooling, no sharing, and no "usage limit reached" screenshots landing in your support inbox.
One honest caveat: 14% is an average across very different stores, verticals, and offer settings. Your number will be your number. But the pattern holds everywhere we look. Most codes expire unused, and none of them leak.
The Cleanest Limit Is the Offer That Never Shows
There is one more layer here, and it flips the whole question around.
Traditional limits ask: how many times can this code be used? Growth Suite asks a different question first: should this visitor see an offer at all?
Some visitors were going to buy anyway. They found the product, added it to the cart, and marched toward checkout. Handing them a discount does not win a sale. It just cuts your margin on a sale you already had.
So Growth Suite watches behavior and shows offers to hesitant visitors instead of decided buyers. Fewer offers shown means fewer codes created, which means a smaller surface for abuse before anything even needs protecting.
The Real Ceiling on Abuse:
Not a stricter rule, but a smaller target.
Native Limits vs. Unique Codes, Side by Side
| Aspect | Shopify Native Limits | Growth Suite Unique Codes |
|---|---|---|
| Code creation | One code for many people | One fresh code per visitor |
| "Usage limit reached" error | Can happen when caps fill | No shared code, so nothing to run out |
| One-per-customer enforcement | Email matching, easy to bypass with aliases | Tied to the visit, not the inbox |
| Coupon extension exposure | Codes can be collected and shared | Nothing to collect |
| Expiration | Manual dates, manual deactivation | Countdown enforced, code deleted server-side |
| Cleanup | You delete old codes yourself | Automatic after use or expiry |
Shopify Discount Combinations: The Complete Stacking Guide
Since 2023, automatic discounts combine with codes by default. One wrong setting during Black Friday could cost you thousands. Learn the complete combination matrix and testing protocols.
Best Practices If You Rely on Native Limits
Not everyone is ready to change their setup, and native limits still do a job. Here is how to squeeze the most out of them.
Match the limit to the campaign. Running a flash sale with limited stock? Use a total cap, because real scarcity is the point. Running a welcome discount? Use one per customer plus a modest total cap, so a leak cannot drain you. Running an influencer code? Set a higher cap and accept that it will travel.
Set the cap above your real target. If you want 100 genuine uses from a public code, some uses will be waste. Setting the cap to 120 or 150 is cheaper than answering "your code is broken" emails for a week.
Watch your order list for weird patterns. The same shipping address under five different emails. Orders landing minutes apart with lookalike names. Limits will not catch this. Your eyes will.
For high-value codes, consider requiring a customer account at checkout. It adds friction, so do not do it for everything. But account-based validation is much harder to game than email matching.
And clean up. Expired codes sit in your admin, clutter your reports, and count toward your store's lifetime code ceiling. Delete what you are done with.
The Bottom Line
Usage limits are rules, and rules get gamed. Aliases slip past email matching. Guest checkout skips account checks. Extensions and coupon sites carry your code to strangers. Tighten the rules where you can, because it helps. But the strongest fix is structural: one visitor, one code, one countdown, then deletion. Under that setup, the error message that brought you here has nothing left to trigger it.
Either way, you now know what "this discount has reached its usage limit" means, which setting caused it, and what to do next.
What if every discount went to the right person?
Growth Suite predicts purchase intent and shows time-limited offers only to visitors who need them.
In This Article
References & Sources
Research and data backing this article
Muhammed Tüfekyapan
Founder of Growth Suite
Muhammed Tüfekyapan is a growth marketing expert and the founder of Growth Suite, an AI-powered Shopify app trusted by over 300 stores across 40+ countries. With a career in data-driven e-commerce optimization that began in 2012, he has established himself as a leading authority in the field.
Version History
Track updates and improvements to this article
Added a plain-English answer to the "this discount has reached its usage limit" error, with separate fixes for shoppers and store owners. Added Shopify's official platform limits (20M codes per store, 25 active automatic discounts, per-order code caps) from Shopify's help documentation. Added first-party data from 958 Shopify stores covering January to June 2026. Removed unverified third-party statistics and reorganized the guide around diagnosis first, prevention second.
Initial publication
Stop giving discounts to everyone.
Growth Suite watches each visitor, predicts purchase intent, and makes one real, time-limited offer—only to those who need it.
Try Free for 14 DaysContinue Reading
More articles you might enjoy
Deep Dive: The Ultimate Guide to Percentage Off Discounts
Deep Dive: The Ultimate Guide to Fixed Amount Discounts
Percentage Off vs. Fixed Amount Discounts: Which Converts Better?
Tiered Discounts Strategy: Spend More, Save More
Deep Dive: Buy X Get Y (BOGO) Guide
Free Gift with Purchase (GWP) — The "No-Discount" Strategy
Frequently Asked Questions
Common questions about this topic