Run a 10% discount code and you’ve agreed to a price you’ll never see in advance. On a $60 cart it costs $6. On the $2,000 cart that comes through the same code, it costs $200, and nothing about that order looks wrong in your admin, because the code did exactly what it was configured to do.
So you go looking for the setting: a “maximum discount amount” field, a cap, a ceiling. This is worth saying plainly, because half the forum threads on this dance around it. Shopify’s percentage discounts don’t have one. There’s a minimum purchase requirement, usage limits, customer eligibility, but no field anywhere that says “this discount never gives more than $X.” Not on code discounts, not on automatic ones.
What Shopify does give you
Two native tools get partway there, and for some stores partway is enough.
Fixed-amount discounts are capped by definition. “$15 off” costs $15 on every order, whatever the cart size. If your discounts exist to nudge conversion rather than to scale with spend, switching a leaky percentage code to a fixed amount solves the whole problem with zero apps. Plenty of stores that think they need a cap just need this. If “$15 off” converts as well as “10% off” for your audience, do that and stop reading.
Minimum purchase requirements bound the other end. “10% off orders over $50” stops the discount from subsidizing tiny carts. Useful, but it does nothing about the top. The $2,000 cart clears any minimum you set.
What’s missing is a specific combination. You want the feel of a percentage (scales with the order, reads generously in marketing) with a known worst case. Natively, that doesn’t exist.
Capping a percentage properly
PromoLock’s discount builder treats the cap as a first-class field. Three of them, in fact, bounding different things:
- Max discount amount is the ceiling for a percentage offer. “10% off, up to $40” is one field next to the percentage.
- Max per item caps what any single item can receive, so a 20% category promo gives $25 off your typical product, not $100 off the designer coat.
- Cap total discount, under Margin guards, is a ceiling over the whole discount, all parts combined. The backstop for tiered or multi-part offers.
The interesting question isn’t how to set a cap. It’s what number to type in. Guess too low and you’ve gutted the promotion; too high and the cap never fires. If you already run discounts, your order history answers this precisely. PromoLock’s Analytics has a Discount given report that shows, for each of your discounts, what a cap at various amounts would have saved and how many orders it would have touched, computed from your real orders rather than estimates. The caps from your order history playbook turns that into a ten-minute routine. For brand-new offers, Offers with caps derives the number from your average order value instead.
Whatever tooling you use, advertise the cap. “10% off, up to $40” wherever the offer appears. Advertising standards in most markets expect a promoted percentage to say what it pays, and a customer who discovers the ceiling at checkout is a customer who won’t redeem twice. The cap isn’t a secret. It’s part of the offer.
Choosing your route
| Your situation | Do this |
|---|---|
| Discounts are conversion nudges, cart sizes are similar | Switch to fixed-amount discounts. Natively capped, done |
| Percentage offer, wide cart-size range | Max discount amount with the cap in the marketing copy |
| Category/collection percentage, wide price spread | Max per item |
| Tiered or multi-part offers | Cap total discount as the backstop, always |
| Not sure what number to use | Read it off your own history: caps from your order history |
Last tip: after capping a live discount, place one test order past the ceiling and check the discount line stops where you said it would. A cap you haven’t watched fire once is a cap you’re trusting, not one you’ve verified.