Comprehensive Guide Updated September 10, 2026

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

Muhammed Tüfekyapan

14 min read

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:

  1. A total usage cap. The store said "this code works 500 times." Order number 501 gets the error.
  2. A one-per-customer rule. You already used the code once, so Shopify blocks your second attempt.
  3. 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.

Essential Guide

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.

Deep Dive

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:

  1. A visitor browses, hesitates, maybe drifts toward the exit. The offer triggers.
  2. 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.
  3. The code is applied to the visitor's cart automatically. Nothing to type, nothing to copy.
  4. 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
Stacking Rules

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.

Start Free Trial
5.0 on Shopify 14 days free No credit card

References & Sources

Research and data backing this article

1

Discount Codes: Best Practices for E-commerce

Shopify Help Center 2024
2

The Rise of Coupon Browser Extensions

Forbes 2024
3

Discount Fraud and Abuse Prevention

National Retail Federation 2024
4

E-commerce Promotion Abuse Statistics

Riskified 2024
5

Consumer Discount Behavior Study

Harvard Business Review 2023
Written by
Muhammed Tüfekyapan - Founder of Growth Suite

Muhammed Tüfekyapan

Founder of Growth Suite

Published Author 100+ Brands Consulted Founder, 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

v1.1 September 10, 2026 Latest

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.

v1.0 December 23, 2025

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 Days
5.0 on Shopify 60-second setup No credit card

Frequently Asked Questions

Common questions about this topic

What does "this discount has reached its usage limit" mean?
It means the store set a cap on how many times that code can be used, and the cap is now full. The code still exists, it just stopped working. Only three settings can trigger this: a total usage cap, a one-per-customer rule, or both at the same time. You might see the same idea written as "promo code usage exceeds maximum count" or "coupon usage limit has been reached."
How do I fix "this discount has reached its usage limit" as a shopper?
First rule out typos and expired campaign dates. 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, and many stores will simply send you a fresh code. Retrying with a different email will not help if the store hit its total cap, because the code is dead for everyone.
How do I fix the "usage limit reached" error in my Shopify admin?
Go to Discounts, open the discount in question, and scroll to the "Maximum discount uses" section. Check whether the total uses box or the one-per-customer box is enabled and whether the usage counter is full. Then either raise the total number and save, or create a fresh code and send it to the customers who got blocked.
Does deleting and recreating a discount reset its usage limit?
Yes. Shopify's own documentation confirms that a one-per-customer limit applies only to that specific discount. If you delete a discount and create it again with the same settings, Shopify treats it as a completely different discount, so customers who used the old one can use the new one once. Handy when you mean it, risky when you do not.
Why do customers keep using my discount code multiple times?
Shopify validates "one per customer" limits through email matching only. Shoppers bypass it with Gmail aliases ([email protected]), dots inside Gmail addresses, or guest checkout with different emails. Shopify does not check IP addresses or devices, so the same person on the same laptop looks like a brand new customer every time.
Does Shopify use IP address to validate discount limits?
No. Shopify does not use IP address validation for discount limits. Validation relies on email address matching, plus the customer account ID when the shopper is logged in. A customer can enter different email addresses from the same device and browser, and Shopify treats each one as a separate customer.
How many discount codes can I create on Shopify?
Shopify allows 20,000,000 unique discount codes per store over the store's lifetime, and no app can raise that ceiling. Other platform limits worth knowing: 100 specific customers, products, or variants per discount, 25 active automatic discounts at a time, and a maximum of 5 product or order codes plus 1 shipping code per order.
How do I prevent discount codes from appearing on coupon sites?
With traditional shared codes, you cannot fully prevent it. Coupon extensions like Honey and deal sites collect working codes as soon as real shoppers use them, and any code that works for many people will spread sooner or later. The only structural fix is unique, single-use codes generated per visitor, because a code that works for no one else is not worth sharing.
What is a single-use discount code?
A single-use code stops working after one redemption. In native Shopify, you can imitate this by setting the total uses limit to 1, but then only one customer can ever use it. Growth Suite takes a different route: every visitor who gets an offer receives their own unique code that is auto-applied to their cart and deleted from Shopify after use or expiry.
How often do time-limited offer codes actually get used?
Based on Growth Suite product data across 958 Shopify stores between January and June 2026, about 14% of time-limited offer codes were used before the timer ran out. The other 86% expired and were deleted automatically. This is an average across very different stores and offer settings, so treat it as a pattern, not a promise.
Audit