Skip to content
Gaurav TiwariDocs

Set Minimum and Maximum Quantities

Version 1.0.0-beta.1 Updated October 28, 2026

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.
Min/Max Quantity settings in Stackless for EDD with the Store defaults fields and the Shopper messages note and error templates.

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.

Pro UI Kit Team Seats download page in Easy Digital Downloads with the quantity box at 5 and the note "Minimum 5 · Maximum 100 · Sold in packs of 5".

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_limits filter. It receives the limits, the download ID and the price ID, and a maximum of 0 means no limit.
Share

Was this helpful?

Still stuck? Open a support ticket