> For the complete documentation index, see [llms.txt](https://docs-shpf.bsscommerce.com/b2b-wholesale-solution/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-shpf.bsscommerce.com/b2b-wholesale-solution/order-management/quantity-increments/make-your-products-purchasable-in-quantity-increments.md).

# Make Your Products Purchasable in Quantity Increments

Restrict product purchases to fixed quantity multiples — customers can only buy in packs, cases, or bundles you define.

Quantity Increments sets fixed quantity steps for your products, so customers can only buy in multiples of a number, for example **5, 10, 15**. It suits B2B and wholesale stores where products are packed or sold in predefined units.

## Before You Start

* Go to **B2B orders & discounts › Quantity Increments** and make sure the switch next to the **Quantity Increments** title is **On**. When it is off, your rules are saved but customers do not see them.

{% hint style="warning" %}
**Turn on the app embed first.** Quantity Increments is enforced by the app's storefront script, which only loads when the **App embed** is enabled in your theme. With the embed off, your rules are saved but the quantity selector behaves normally. See [Enable or disable the app in your theme](/b2b-wholesale-solution/getting-started/enable-or-disable-the-app-in-your-theme.md).
{% endhint %}

## ⚙️ How to Create a Quantity Increments Rule

1. Go to **B2B orders & discounts › Quantity Increments**.
2. Click **Add rule**. If you have no rules yet, click **Add quantity rule** instead (next to **Quick create**).

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-a1f6795eb6f57522323df5abfe9db887de420a9f%2Fcms-qi-list-01.png?alt=media" alt="Quantity Increments rule list"><figcaption><p>Quantity Increments rule list</p></figcaption></figure>

The page **New quantity increments rule** is a single page of cards: **Rule**, **Customers**, **Products**, **Quantity rule**, **Exclusions (optional)** and **Advanced**. The last two are collapsed: click **Show** to open them. The **Make Quantity Increments live** card in the sidebar checks that the rule is saved, the module is on and the app embed is on. Click **Save** when you are done.

### Rule

| Field      | Options          | What it does                                                                                                |
| ---------- | ---------------- | ----------------------------------------------------------------------------------------------------------- |
| **Name**   | Text             | A clear name to find the rule later. Left empty, it is written for you (for example "Increments of 6 ..."). |
| **Status** | Enable / Disable | Disabled rules are not applied.                                                                             |

### Customers

**All** · **Logged-in customers** · **Not-logged-in customers** · **Specific customers** · **Customer tags**.

### Products

**All products** · **Specific products** · **Specific variants** · **Product collections** · **Product tags**.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-eede2aa28969fbde61bd8c30a4352f60b706b280%2Fcms-qi-rule-01.png?alt=media" alt="Who and what the rule covers"><figcaption><p>Who and what the rule covers</p></figcaption></figure>

### Quantity rule

| Field                               | Options                                                          | What it does                                                                                                                      |
| ----------------------------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Quantity increments**             | Whole number from 1 to 30000                                     | The step customers must buy in. `6` allows 6, 12, 18, 24...                                                                       |
| **Quantity increments calculation** | **Variant quantity** · **Product quantity** · **Order quantity** | What is counted (see below).                                                                                                      |
| **Min** / **Max**                   | Whole numbers up to 30000 (optional)                             | The allowed quantity range. **Min** must be at least the increment and not above **Max**. **Max** must be at least the increment. |

| Level                | Description                                                                                 |
| -------------------- | ------------------------------------------------------------------------------------------- |
| **Variant quantity** | Each variant must be bought in its own increments.                                          |
| **Product quantity** | The combined quantity of all variants of a product must be a multiple of the increment.     |
| **Order quantity**   | The total quantity of all cart lines matching the rule must be a multiple of the increment. |

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-cc83805c027c951cf5de6a8dbb9dda0542ff3eb0%2Fcms-qi-rule-02.png?alt=media" alt="Quantity rule card"><figcaption><p>Quantity rule card</p></figcaption></figure>

### Exclusions (optional) and Advanced

Click **Show** to open **Exclusions (optional)** (**Exclude customers**) and **Advanced** (**Priority**, `0` is the highest). If two rules match the same product, the lowest **Priority** number applies.

### Make Quantity Increments live

Click **Save**. The sidebar card lists what is still needed: the rule must be enabled (and inside its dates), and the module and the app embed must be on. Turn on the module and the app embed there if either is off.

## How It Works on the Storefront

* **Product page:** the `-` and `+` buttons step by the increment within **Min** and **Max**. A typed quantity is corrected to the nearest valid multiple (with a step of 10, `16` becomes `20` and `12` becomes `10`); below **Min** or above **Max** it snaps to the limit. **Add to cart** and **Buy it now** are blocked outside **Min** and **Max**. The selector starts at the smallest multiple that is at least **Min** (increment 6, Min 15: it starts at 18).
* **Collection pages and quick view:** only **Variant quantity** rules apply, and only where the product card has a quantity box. Otherwise quick add adds 1 and the rule is checked on the product page and at checkout.
* **Cart page:** quantity boxes are corrected only for **Variant quantity** rules. For **Product quantity** and **Order quantity** rules customers can type any quantity, but clicking checkout shows a warning pop-up that lists what to fix and stops checkout.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2F3Zx80ewcftotZTWCh7mC%2Fimage.png?alt=media&amp;token=63410d69-2779-4dad-b009-c7dc10381571" alt=""><figcaption></figcaption></figure>

With an increment of 5, typing 22 rounds to the nearest valid step and shows an inline guide:

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2FQ7mgre27RELfsJDr7quE%2Fimage.png?alt=media&amp;token=688d91e9-7a9e-4f8c-bf87-4f44989259e8" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
A shopper who opens your `/checkout` page directly skips the cart check.
{% endhint %}

## Quick Create

Click **Quick create** on the rule list. One row becomes one rule for the customers you pick (**Customers with tag**, **Specific customers**, **All customers** or **Logged-in customers**), the **Counted on** level and the step. It applies to all products with no minimum or maximum; open the rule afterwards to add them.

## Quick edit

To change a rule's **Rule name**, **Priority** or **Status** without opening it, click **Quick edit** in the rule's row actions. Select several rules and choose **Edit status** to turn them on or off together.

## Settings

Open **Quantity Increments › Settings**.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-af8140344fce78c91661f2a79c9afd611b23be42%2Fcms-qi-settings-01.png?alt=media" alt="Quantity Increments settings"><figcaption><p>Quantity Increments settings</p></figcaption></figure>

* **Messages shown on the product page**: **Yes** shows the quantity guide, **No** (default) hides it. With **Yes**, choose the **Message position**: **Below quantity selector** or **Below the "Buy it now" selector**.
* **Notification pop-up modal design**: **Header's background color**, **Header's text color**, **Content's background color**, **Content's text color**.

Click **Save**.

## Translations

Open **Quantity Increments › Translations** to edit **Inline requirement message on product page/collection page**, **Invalid messages**, **Pop-up header** and **Pop-up content**.

## Export

Rules can be exported to CSV from **B2B orders & discounts › Quantity Increments › More actions › Export**. There is no CSV import: to create many rules at once, use **Quick create**.

## Combining with Order Limits

Order Limits sets the minimum and maximum; Quantity Increments controls the step. Example: minimum 5 units with increments of 10 gives valid quantities of 10, 20, 30...

## ❓ FAQ

**The quantity buttons still change by 1.** Check that the rule **Status** is on, the module and the app embed are on, the shopper matches **Customers** and the product is covered. If your theme's quantity selector still ignores the rule, contact us via live chat: our team installs it for free.

**The quantity message does not show.** Set **Messages shown on the product page** to **Yes** in **Settings**.

{% hint style="info" %}
If you need further assistance, please feel free to reach us at [**support@bss-b2b.solutions**](mailto:support@bss-b2b.solutions) or [**Live Chat**](https://go.crisp.chat/chat/embed/?website_id=9f64b5a9-1a02-4190-93b8-8ef56b19f740).
{% endhint %}
