For example, the quantity box has a dropdown where the customer can only select 25, 50, 100, 250, 500, 1000, etc of a product. Instead of letting the customer choose a specific number like 27.
And also, the app has to apply a discount for each of those quantity choice. For example, 25 is the base price, 50 applies a discount of 15%, 100, applies a discount of 20%, etc.
Is there an app that does all of that? I’ve found some that do one or the other, but not both.
Honestly the cleanest way to do exactly what you described isn’t an app, it’s variants. Make each tier a variant of the product (25, 50, 100, 250, 500, 1000) and set the discounted price directly on each variant. Customer naturally gets a dropdown because that’s how variants render, can only pick from your tiers, and pricing updates instantly when they switch. No app fees, no checkout discount weirdness, full control. The downside is inventory tracking gets messy if you actually stock units, since you’d have to manually adjust across variants.
Instead of letting customers type a quantity, you can create product variants like “Pack of 25”, “Pack of 50”, etc. Each variant will have its own price with the discount already applied.
You can follow the steps below:
Create variants for each quantity
In your product settings:
Option name: Pack Size
Option values: 25, 50, 100, 250, 500, 1000
Set pricing for each variant
Manually add discounted prices to each variant. For example:
25 → $100 (base price)
50 → $170 (15% discount)
100 → $300 (20% discount)
Rename variants for better user experience
Instead of just numbers, use clearer labels:
Pack of 25
Pack of 50 (Save 15%)
Pack of 100 (Save 20%)
This makes it feel more like a bundle selection and helps customers understand the savings easily.
Limit quantity selection to 1 (important)
You don’t want users buying multiple packs like “Pack of 25 × 3”, so it’s better to hide the quantity selector.
You can hide it from the product page from them customize, and for the cart page, you can hide it using custom CSS.
If you can share your store URL, we can give you the exact CSS for your theme.
iCart might be worth checking for this. It supports volume/quantity discounts, so you can set discounts based on quantity tiers like 50 units, 100 units, etc.
The only thing I’d double-check is the fixed quantity selector part, where customers can only choose predefined quantities like 25, 50, 100, 250, and not enter custom numbers. That part may need a specific setup or small customization depending on where you want it shown.
But for applying discounts based on selected quantity tiers, iCart should be able to help.
If you just need this for a single product, you can most likely hard-code it and then use Shopify discount settings to apply automated discounts. However we also have few apps for this that offers more control.
If you are just looking to limit quantity options, you can watch this tutorial. It shows how you can use Pasilobus Order Limits app to control quantities.
If you want to apply volume discounts, you can add discounts per each quantity tier using Pasilobus Volume Discounts app:
Yes, what you are describing (fixed quantity tiers + automatic discounts per tier) is possible, but usually only through bundle/quantity break style apps rather than native Shopify.
The apps that offer quantity breaks (tiered bundles) can handle both:
Restrict customers to predefined quantities (25, 50, 100, etc.)
Automatically apply discounts per tier (like 15%, 20%, etc.)
Replace the normal quantity selector with selectable options.
For example, this is how it looks on the setup side:
Show them as selectable options (instead of free quantity input)
It ends up giving customers a very clear choice, they just pick a tier, and the pricing/discount is handled automatically without needing to enter custom quantities. Hope it helps.
The variant approach mentioned above is genuinely the cleanest solution for most cases - fewer moving parts, no app dependencies, and pricing updates instantly without any discount code weirdness at checkout. The inventory concern is valid but manageable depending on how you operate. If you pack to order, you just track at the pack level. It breaks down if you need granular unit-level stock tracking across all pack sizes simultaneously, but for a lot of merchants selling in preset quantities, that’s not actually a problem in practice.
For app-based setups, the thing to watch for is exactly the split you described. Some apps handle the discount tiers well but still leave the quantity input as a free-text field, just showing a pricing table alongside it. What you actually want is the selector to replace free input entirely so customers pick a tier rather than type a number. That behavior varies quite a bit by app and also by theme, so if you’re trialling any of the options mentioned here, check the storefront specifically for how the quantity input looks before committing. Some apps have screenshots or demo stores that show this clearly.
One thing worth keeping in mind for later: if your tier pricing ever needs to adapt based on something dynamic - different levels for wholesale vs retail customers, seasonal adjustments, or pausing a discount when a SKU is running low - static app setups start to struggle with that logic. Shopify Flow combined with a discount automation tool like Pareto AOV ( P: Quantity Breaks & Discounts - Boost AOV quantity breaks, quantity discount, tiered pricing | Shopify App Store ) can handle rules like that if your pricing setup gets more complex over time.
The variants route that’s already been mentioned is genuinely the most reliable way to do this, so I’ll add a bit of detail on how to set it up cleanly plus what to watch out for with apps that claim to do both.
Why variants beat a discount app for this specific case:
Most volume discount apps calculate a percentage off dynamically based on cart quantity, but they don’t actually restrict which quantities a customer can enter — they sit on top of a free-text quantity field. That’s why you’re finding tools that do one or the other: the tiered-discount logic and the “only these exact quantities are purchasable” logic are two different problems, and most apps only solve the first one.
Setting it up with variants:
Add an option to the product called something like “Quantity” (or “Pack Size”) with values 25, 50, 100, 250, 500, 1000.
Set the price on each variant to reflect the discount you want baked in (25 = full price/unit, 50 = 15% off/unit, 100 = 20% off/unit, etc.). Shopify does the math once at setup, not at checkout, so there’s zero risk of a discount app conflicting with checkout extensibility or Shopify Functions.
For inventory, either track each variant separately (fine if you’re not selling the same physical stock across multiple pack sizes) or, if it’s genuinely one pool of stock, look at a bundle/kit app that decrements a single base SKU when any of these “pack” variants sell — that solves the double-counting problem people usually run into with this approach.
On the PDP, a plain variant picker (dropdown or buttons) is your quantity selector — the customer physically cannot enter 30 or 77, only the tiers you defined. That’s the “forces customers to choose” part solved natively, no app needed.
If you’d rather use a discount app instead of variants: the key thing to check before installing anything is whether it replaces the quantity input with a locked selector (dropdown/buttons showing only your tiers) versus just adding a pricing table next to a free-quantity field that customers can still type any number into. A lot of apps do the latter and it looks like it’s working until someone orders 37 units and gets an in-between price you never approved. Ask support directly “does this remove the free-quantity input or just display pricing tiers alongside it” before you commit — that one question filters out most of the half-solutions you’ve probably already run into.
Variants will get you 90% of the way there for most catalogs and it’s free, so I’d start there and only reach for an app if inventory pooling makes that impractical.