Quantity Breaks – Setup Guide 
Theme discounts are visual only
- The discount settings in this block control how bundle prices are displayed on the product page.
- You must manually create the actual discounts in your Shopify admin (Dashboard). Checkout prices follow Shopify’s discount rules.
- Ensure the discounts you set up in Shopify match what you configure here, so the shown prices align with the final checkout total.
See: Creating Discounts in Shopify and Shopify’s Discounts overview.
Use Quantity Breaks to offer bundle pricing for buying multiple units (e.g., 2-pack, 3-pack) with percentage or fixed discounts, optional gifts, and shipping labels.
This guide complements the Quantity Selector Block doc and focuses on setting up Breaks correctly and predictably.
Before you start 
- You must enable the Quantity Selector block and set Selector TypetoBreaks.
- If you plan to use Shopify-native discount codes, review our basics guide: Creating Discounts in Shopify. The UI here shows bundle prices; the actual checkout price is always authoritative.
Concepts at a glance 
- Breaks are quantity tiers: up to 4 (Break 1–4). A break is active when its quantity is > 0.
- Discounts per break: None,Percentage, orFixed amount.
- Display styles: Grid(cards) orPills(list-style with optional gift bar).
- A single break can be the default selection. If the chosen default is invalid (quantity 0), the first active break becomes default automatically.
- Pricing math is computed from the current variant price at render time. Compare-at price is used for strikethrough and savings.
Step 1 — Choose your style and default 
- Break Style:- Gridfor a compact card grid or- Pillsfor a vertical list, ideal when showing gifts.
- Default Break: Which tier should be preselected. If it’s disabled, the first enabled tier is used.
- Optional title: Toggle Show titleand customize the heading, e.g., “Bundle & Save”.
Step 2 — Configure each break 
For each active break (1–4):
- Quantity
- Set Break X quantityto the units in the bundle (e.g., 1, 2, 3, 4).
- Set to 0to disable a break.
- Discount
- Discount type:- None,- Percentage, or- Fixed.
- Percentage: enter X% offas a whole number (e.g., 15 for 15%).
- Fixed: enter a currency amount (e.g., 10means $10 off the bundle total).
How the math works
- Base bundle price = variant price × quantity
- If Percentage: bundle price = base bundle price − (base × percent/100)
- If Fixed: bundle price = base bundle price − (fixed × 100¢) [we convert to cents under the hood]
- Compare-at price = variant compare-at × quantity; savings = compare-at − bundle price (only if > 0)
- Price each = bundle price ÷ quantity
- Labels and badges
- Label: short headline for the option. Supports dynamic tokens below.
- Save text: optional subtext. Supports dynamic tokens below.
- Badge: small highlight label. Choose position: Default,Top right, orBar.
- Images (optional)
- Show a small image per break (product variant, bundle collage, etc.).
- Gifts (Pills style only)
- Toggle Show giftto display a gift bar under the button.
- Optionally upload a gift image and write rich text to describe it (e.g., “+ FREE gift with this option”).
- Shipping info (optional)
- Toggle Show shipping infoto surface shipping labels per break.
- Either check Free shippingor set a specificShipping pricetext (e.g., "$4.99").
- Control the generic labels via Free shipping text(e.g., “Free shipping”) andShipping label text(e.g., “shipping”).
Dynamic tokens you can use 
You can reference the following tokens in Badge, Label, and Save text. They’ll be replaced per break:
- [quantity]– The quantity for this break (e.g., 3)
- [price]– Bundle price, formatted (e.g., $49.99)
- [compare_price]– Compare-at bundle price, formatted
- [price_each]– Unit price after discount, formatted
- [compare_price_each]– Unit price before discount, formatted
- [amount_saved]– Amount saved across the bundle, formatted
- [amount_saved_rounded]– Amount saved rounded up to nearest whole currency unit
Examples
- Label: Buy [quantity]
- Save text: Save [amount_saved]orOnly [price_each] each
- Badge: Best dealorSave [amount_saved_rounded]
Examples 
Two-tier example
- Break 1 quantity: 1, Discount: None
- Break 2 quantity: 3, Discount: Percentage = 15
- Label 1: Buy [quantity]→ Shows single unit
- Label 2: Buy [quantity]and Save text:Only [price_each] each
- Badge 2: Most popular
Four-tier example
- Quantities: 1, 2, 3, 5
- Discounts: None, 10% off, $15 off, 20% off
- Use Gridstyle for 4 cards; make break 2 or 3 the default depending on margin strategy.
How this interacts with Shopify discounts 
- The block visually shows discounted bundle prices on the product page. Checkout still applies Shopify pricing rules.
- If you also run Shopify discount codes or automatic discounts, those will stack or not based on Shopify’s rules, not the theme. See Shopify’s guidance:
- If you want the same bundle logic applied in cart/checkout, create matching discounts in Shopify or via apps. Start here: Creating Discounts in Shopify.
Troubleshooting 
- Default break doesn’t activate: ensure the default’s quantity is > 0. If not, the first active break becomes default.
- Savings not showing: savings only show if compare-at price > calculated bundle price.
- Fixed discount looks off: enter the amount in major currency units (e.g., 10= $10). We convert to cents internally.
- Token text appears literally: ensure tokens are spelled exactly and placed in Badge,Label, orSave textfields.
- Shipping info missing: enable Show shipping infoand set eitherFree shippingor aShipping pricefor that break.
- Gifts not visible: gifts render only in Pillsstyle withShow giftenabled.
See also 
- Quantity Selector Block: Quantity Selector Block
- Shopify reference: Discounts overview