> For the complete documentation index, see [llms.txt](https://help.dollarlabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.dollarlabs.io/dollarlabs-b2b-custom-pricing/getting-started/volume-tiers-and-case-multiples.md).

# Volume tiers & case multiples

Reward bulk buyers with a lower per-unit price, and force products to be bought by the carton — plus the storefront blocks that explain both.

**Volume pricing**

{% embed url="<https://dollarlabs.neetorecord.com/watch/e571bec42ebb00d469a8>" %}

**Whole cases and price basis**

{% embed url="<https://dollarlabs.neetorecord.com/watch/3c43213b731ce01ea71b>" %}

**Minimum order quantities**

{% embed url="<https://dollarlabs.neetorecord.com/watch/985a735d19d9c04eb71c>" %}

Two related quantity rules, configured on the same cell:

* **Volume tiers** change the price as quantity climbs.
* **Case multiples** restrict which quantities are allowed at all.

Use either alone, or both together.

## Volume tiers

A tier is a **minimum quantity** and a **value**. The tier applies from its minimum quantity until the next tier takes over.

> * 1+ → $10.00 each
> * 12+ → $9.00 each
> * 24+ → $7.00 each
>
> A cart with 18 units pays $9.00 each. At 24 it drops to $7.00.

| Quantity in the cart | Price per unit | Product subtotal |
| -------------------- | -------------: | ---------------: |
| 11                   |         $10.00 |          $110.00 |
| 12                   |          $9.00 |          $108.00 |
| 18                   |          $9.00 |          $162.00 |
| 24                   |          $7.00 |          $168.00 |

**The new tier applies to the whole quantity.** For example, all 18 units cost $9 each. These are example prices with no case restriction.

Tiers are per tag and per variant, so `Wholesale` and `Distributor` can have entirely different ladders on the same product.

The value means whatever the cell's [discount type](/dollarlabs-b2b-custom-pricing/getting-started/discount-types.md) says — a price, a percentage off, or an amount off.

### Setting them up

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-641d66b886262a4ccfb3ce3b35c3899b9ba5c746%2Fpricing-rule-volume-tiers-annotated.png?alt=media" alt="Pricing rule for Kraft Envelopes with a summary of three price levels and the Volume tiers fields From qty and Price per item." width="581"><figcaption><p>In this example, 25 or more envelopes cost 1.50 each and 100 or more cost 1.20 each.</p></figcaption></figure>

1. Open the price list editor and find the product. Use [filters](/dollarlabs-b2b-custom-pricing/price-list/find-products.md) if the catalog is large.
2. Hover the cell for the tag you are pricing and choose its settings gear. The **Pricing rule** panel opens.
3. Choose the **Price type** — *Specific price*, *Percentage off* or *Fixed amount off*.
4. Under **Volume tiers**, choose **Add tier** and fill **From qty** and the value field for your price type.
5. Choose **Done**, then save.

{% hint style="info" %}
Include a tier at quantity **1** if you want a price to apply below your first bulk break. Without one, small quantities have no regular tier price. A configured loose rate can still apply when case pricing allows it.
{% endhint %}

## Case multiples

A case multiple forces the quantity to be a multiple of the case size. Set **Case size** to `12` and the buyer may order 12, 24, 36 — but not 10.

Enforcement happens at checkout: a cart that breaks the rule cannot complete. To tell the buyer *before* they reach checkout, add the **Validation Message** block to your product page (below).

A case multiple is valid on its own, with no pricing at all. That gives you carton-only ordering without any discount — a common requirement for products that physically ship by the case.

{% hint style="warning" %}
By default a case multiple is strict: quantities off the multiple are rejected. If you want buyers to be able to add loose units on top of full cases, and to price those units differently, you want [progressive case multiples](/dollarlabs-b2b-custom-pricing/getting-started/progressive-case-multiples-and-loose-unit-pricing.md).
{% endhint %}

## Minimum quantity and stock

A **minimum quantity** sets the smallest order you accept. With a case size, choose a minimum that is a whole multiple of that size; the editor starts at two cases because one case is already required by the case rule. A **case multiple** sets the allowed quantity steps. These are separate from the quantity at which a lower price begins.

For example, set a minimum of **12** and a case size of **6** on a selected variant. Six units fill one case but miss the minimum; 12 units satisfy both rules; 13 units break the whole-case rule. Save, then test those quantities and check that the buyer can correct an invalid order.

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-973434910a3cae4a002b7b31b7f6349f8b9a7aca%2Fpricing-rule-case-minimum-annotated.png?alt=media" alt="Pricing rule with case size 6, priced per case of 6 at 36, and a minimum quantity of 12." width="581"><figcaption><p>This rule charges 36 per case of six and requires at least 12 items.</p></figcaption></figure>

{% hint style="warning" %}
**Price per case** is the price of one whole case, not the order total. Check the per-item price the panel shows under the field before you choose **Done**.
{% endhint %}

Stock availability is handled by Shopify’s inventory and overselling settings. It is separate from Dollarlabs minimum quantities and case rules.

## Showing tiers on the product page

Two theme app blocks make the rules visible. Both are added in **Online Store → Themes → Customize**, on your product template, via **Add block → Apps**.

### Volume Tiers

Shows the applicable pricing tiers. Guests can see configured Default pricing when **Hide price without login** is off.

<table><thead><tr><th width="230">Setting</th><th>What it does</th><th width="150">Default</th></tr></thead><tbody><tr><td>Quantity label</td><td>Header of the quantity column</td><td><code>Quantity</code></td></tr><tr><td>Price label</td><td>Header of the price column</td><td><code>Price</code></td></tr><tr><td>Discount label</td><td>Header of the discount column</td><td><code>Discount</code></td></tr><tr><td>Quantity suffix</td><td>Appended to each quantity, e.g. <code>12+</code></td><td><code>+</code></td></tr><tr><td>Price suffix</td><td>Appended to each price, e.g. <code>$9.00/ea</code></td><td><code>/ea</code></td></tr><tr><td>Discount suffix</td><td>Appended to each discount value</td><td>empty</td></tr><tr><td>Show discount</td><td>Whether to show the savings column at all</td><td>on</td></tr><tr><td>Discount type</td><td>Show savings as a fixed amount or a percentage</td><td><code>fixed</code></td></tr><tr><td>Per case column label</td><td>Header for prices entered per case</td><td><code>Per Case</code></td></tr><tr><td>Loose unit column label</td><td>Header for the loose-unit column, when loose pricing is in use</td><td><code>Loose unit</code></td></tr><tr><td>Hide price without login</td><td>Hide the table from logged-out visitors</td><td>on</td></tr><tr><td>Sign in message</td><td>Shown instead of the table when hidden</td><td><code>Sign in to see price</code></td></tr><tr><td>Hide this block entirely when logged out</td><td>Show nothing to logged-out visitors, instead of the sign in message</td><td>off</td></tr><tr><td>Hide App CSS</td><td>Drop our styles so yours can take over</td><td>off</td></tr><tr><td>CSS</td><td>Your own CSS for the block</td><td>—</td></tr></tbody></table>

### Validation Message

Explains the case rule and warns when the quantity is invalid.

<table><thead><tr><th width="230">Setting</th><th>What it does</th><th width="150">Default</th></tr></thead><tbody><tr><td>Custom Validation Message</td><td>The message text, with variables</td><td>Built-in case or minimum-quantity message</td></tr><tr><td>Hide without login</td><td>Hide the message from logged-out visitors</td><td>off</td></tr><tr><td>Sign in message</td><td>Shown instead when hidden</td><td><code>Please sign in to see validation messages</code></td></tr><tr><td>Hide this block entirely when logged out</td><td>Show nothing to logged-out visitors, instead of the sign in message</td><td>off</td></tr></tbody></table>

Available variables: `{productTitle}`, `{variantTitle}`, `{productQuantity}`, `{caseQuantity}`, `{minQuantity}`, `{tagName}`. Include `{caseQuantity}` and `{minQuantity}` if your custom message covers both rules; otherwise the missing rule uses its built-in message.

## Bulk setup by CSV

For more than a handful of products, do this in the spreadsheet. Tiers and case multiples live in the same cell as the price:

```
1:10;12:9;24:7;c:12
```

That reads as: $10 each from 1, $9 from 12, $7 from 24, and quantities must be multiples of 12.

The full grammar — including percentages, fixed amounts and loose pricing — is in [CSV import & export](/dollarlabs-b2b-custom-pricing/price-list/csv-import-and-export.md).

{% hint style="warning" %}
Importing a cell containing just a plain number replaces everything that was in it. `9` clears any tiers and any case multiple on that cell and leaves a flat $9 price. To keep them, write the whole cell out.
{% endhint %}

## Common problems

**The tier table is empty on the product page.**\
Check the price list status, the customer’s matching column and this variant’s tiers. For guests, check **Hide price without login** and whether Default pricing is configured.

**Checkout rejects a quantity the buyer thinks is fine.**\
A case multiple is set. Add the Validation Message block so the rule is visible on the product page, or switch to [loose unit pricing](/dollarlabs-b2b-custom-pricing/getting-started/progressive-case-multiples-and-loose-unit-pricing.md) if leftover units should be allowed.

**Tiers show but the cart charges something else.**\
Check for a second tag on the customer with a lower price — [the lowest price wins](/dollarlabs-b2b-custom-pricing/getting-started/how-pricing-works.md).
