Set Minimum and Maximum Quantities
Some downloads only make sense in set amounts. Team seats sell in packs of five, a launch bundle should stop at two per order and a wholesale pack needs a minimum. Easy Digital Downloads lets shoppers type any quantity.
Free in Lite: this module is also in Stackless Lite for EDD, the free edition, and works the same way there.
Min/Max Quantity sets a minimum, a maximum and a step store-wide, per download and per price option. The limits go into EDD’s quantity boxes and are checked on the server when shoppers add to the cart, change the checkout cart and place the order.
Turn On Cart Item Quantities First
EDD only shows quantity boxes when Downloads → Settings → Payments → Cart → Cart Item Quantities is on. While it’s off, shoppers buy one of each download and these limits do nothing. The module’s settings screen shows a warning with a link until you turn it on.
The same goes for a single download with its quantity input disabled in EDD. Its limits do nothing, and the download editor says so.
Set the Store Defaults
Go to Stackless → Settings → Min/Max Quantity. Under Store defaults:
- Minimum quantity: defaults to 1.
- Maximum quantity: defaults to 0, which means no limit.
- Sold in multiples of: defaults to 1.

Override a Download or Price Option
Edit the download and open the Settings section under Download Details. Quantity limits has the same three fields: Minimum quantity, Maximum quantity and Sold in multiples of. Leave a field blank to use the store default.
With variable pricing, each price option row has its own Quantity limits with the same fields. A blank option field falls back to the download value.
The order of priority is price option, then download, then store default. Each value resolves on its own, so a price option can set only a maximum and still take its minimum from the download.

How the Numbers Are Tidied
The plugin rounds the limits so they always agree with the step:
- A minimum that isn’t a multiple of the step is raised to the next multiple. With a step of 6 and a minimum of 4, the minimum becomes 6.
- A maximum is lowered to the nearest multiple of the step, and never drops below the minimum.
- Minimum and step are always at least 1.
Write the Shopper Messages
Under Shopper messages, you can use the placeholders {product}, {min}, {max}, {step} and {quantity}:
- Limits note: show the limits next to the quantity box on download pages. On by default.
- Minimum note: defaults to “Minimum {min}”. Shown when the minimum is above 1.
- Maximum note: defaults to “Maximum {max}”. Shown when there’s a maximum.
- Step note: defaults to “Sold in packs of {step}”. Shown when the step is above 1.
- Below minimum error: defaults to
You need at least {min} of "{product}" in your cart. - Above maximum error: defaults to
You can buy at most {max} of "{product}". - Wrong multiple error: defaults to
"{product}" is sold in multiples of {step}.
The notes only show on the download’s own page, joined with a dot. When a shopper picks a different price option, the quantity box and the note switch to that option’s limits.
Where Limits Are Enforced
- Quantity boxes on purchase forms, on download pages, in
[downloads]grids and in EDD blocks. Each box gets the minimum, maximum and step and starts at the minimum. - Adding to the cart from purchase forms, AJAX buttons and
/edd-add/links. A new line below the minimum is raised to it. Anything that would break the limits is refused with your error message. - The checkout cart. A quantity change that breaks the limits moves to the nearest valid quantity, and the shopper sees why. A row that breaks its limits also shows the error under its title.
- Placing the order. Checkout is refused while any download breaks its limits.
The check counts the total quantity of a download and price option across the whole cart. Lines that Product Add-ons split apart still count together.
Good to Know
- Invoice and renewal lines keep the quantity of the order they pay, so the checkout check skips them.
- With multi-option purchases on, each price option gets its own quantity box with its own limits.
- Developers can change the resolved limits with the
stackless_edd_quantity_limits_limitsfilter. It receives the limits, the download ID and the price ID, and a maximum of 0 means no limit.