Enforce the pack sizes your shop and sales orders actually sell

Sell eggs by the dozen, drinks by the case, and prints by the ream — automatically. Multiples of Quantity in Shop snaps every quantity to a valid pack size, explains the change in plain language, and carries the same rule into B2B quotations, with optional bulk-discount tiers to reward bigger packs.

The problem

Odoo's shop lets a customer type any quantity — 7 eggs, 13 bottles, 250 flyers — even when the product only makes sense sold in fixed packs. The result is broken cases, manual order corrections, frustrated warehouse staff, and customers surprised after checkout that their quantity was not really available.

The solution

Define a pack size per product, with optional per-website overrides, and the shop automatically snaps every quantity to the nearest valid multiple — with a clear on-page badge and an inline message explaining the change. The same rule blocks invalid quantities on backend quotations and sales orders, and optional bulk-discount tiers reward customers for buying bigger packs.

Capabilities

Everything you need to sell in packs

Every capability below is implemented in the module.

01

Per-product pack size

Set a "Sold in Packs of" quantity on any product — 12, 24, 100, whatever the product actually ships in. Leave it at 1 for products with no restriction.

02

Per-website overrides

Multi-site sellers can define a different pack size for the same product on each website, so region- or brand-specific storefronts each sell in their own valid multiples.

03

"Sold in packs of X" badge

The product page shows a prominent badge naming the pack size before the customer ever touches the quantity field, so the rule is expected, not a surprise at checkout.

04

Automatic quantity snap

Enter any quantity and the shop instantly rounds it to the nearest valid pack size — no invalid order ever reaches the cart.

05

Plain-language change messages

Every automatic adjustment is explained inline — "Adjusted to 12 — this item is sold in packs of 12" — so customers understand exactly what changed and why.

06

AJAX cart updates

Quantity corrections and cart totals update in place without a page reload, keeping the buying flow fast and modern.

07

B2B sales order enforcement

The same pack-size rule applies to backend quotations and sales orders, so wholesale reps and portal buyers cannot save a line with an invalid quantity.

08

Bulk-discount tiers

Reward larger packs with configurable discount tiers — for example 5% off at 24 units and 10% off at 60 — applied automatically to the sale order line.

09

Server-side safety net

Even if a request bypasses the storefront JS, the cart add and update routes re-check and snap the quantity server-side, so the pack rule can never be circumvented.

Workflow

How it works

1

Set the pack size

Open a product and set "Sold in Packs of" — add per-website overrides or bulk-discount tiers as needed.

2

Customer shops as usual

The product page shows the pack-size badge and pre-fills the quantity to one full pack.

3

Quantity snaps automatically

Any quantity the customer enters is rounded to the nearest valid multiple, with an inline explanation.

4

Order confirms clean

The cart, checkout, and any backend quotation all enforce the same rule, so every confirmed order ships in whole packs.

Questions

Frequently asked

No sales fog. If your question isn't here, email us and we'll answer it the same way.

Yes. It extends the standard website_sale and sale_management flows — no separate checkout or theme is required.

Get the app

Buy it on the Odoo App Store

Purchase, download and install directly from the official Odoo Apps Store — you'll always get the latest supported build.

Multiples of Quantity in Shop

Per-product pack-size enforcement across the eCommerce store and B2B sales orders, with a snap-to-multiple cart and optional bulk-discount tiers.

Buy on Odoo App Store