Skip to content

quantity_price_break

Each item in variant.quantity_price_breaks is a quantity_price_break. Breaks are ordered by minimum_quantity; price is in the store currency’s minor unit and should be formatted with the money filter.

Price-break list

{% if variant.quantity_price_breaks_configured? %}
<ul>
{% for price_break in variant.quantity_price_breaks %}
<li>
Buy {{ price_break.minimum_quantity }}+:
{{ price_break.price | money }} each
</li>
{% endfor %}
</ul>
{% endif %}

Example output:

<ul>
<li>Buy 5+: ₹1,350.00 each</li>
<li>Buy 10+: ₹1,200.00 each</li>
</ul>

The price is the per-unit price once that break’s minimum is met; it is not the price of the entire quantity. The applicable break is the one with the largest minimum_quantity that does not exceed the requested quantity.

Product-card guard

{% assign variant = product.selected_or_first_available_variant %}
{% if product.quantity_price_breaks_configured? and variant %}
<p>Volume pricing available</p>
{% render 'quantity-breaks', variant: variant %}
{% endif %}

The product flag is true when any product variant has a break. Always render the prices from the chosen variant. When no breaks apply, variant.quantity_price_breaks is an empty array and variant.quantity_price_breaks_configured? is false.

Sellerlane derives this portable view from its bulk-pricing tiers. Prices are catalog-wide; B2B customer/catalog-specific price-break contexts and selling plans are intentionally unavailable.

Properties

PropertyDescription
quantity_price_break.minimum_quantityQuantity at which this per-unit price begins to apply.
quantity_price_break.pricePer-unit price that applies from minimum_quantity, in the smallest currency unit.

Property list is generated from the storefront engine (QuantityPriceBreakDrop), so it always matches what your theme can use. Use {{ price_break | json }} only as a curated debug snapshot; it can omit lazy or otherwise public properties.