Setting up prices based on order volume in 1C-Bitrix

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Configuration of Volume-Based Pricing in 1C-Bitrix

Wholesale discounts by volume are a standard task for B2B stores: buy 10 units — one price, 50 units — cheaper, from 100 — minimum price. In Bitrix this is implemented via price types system or via catalog discounts with quantity conditions. Both approaches work, but with different mechanics.

Approach 1: Price types by quantity

In Bitrix catalog you can create multiple price types (b_catalog_group): "Retail", "Wholesale 10+", "Wholesale 50+". For each product multiple records in b_catalog_price with different CATALOG_GROUP_ID. Users are assigned groups, each group sees their price type.

Problem: user groups are assigned in advance, not dynamically when threshold is reached in cart. Method suits permanent wholesale clients, but not one-time cumulative discounts "in this order".

Approach 2: Catalog discounts with quantity condition

More flexible variant — discounts via b_catalog_discount. In admin section: "Store → Catalog Rules" → create rule with condition "Product Quantity >=" and action "Reduce product price by X%".

Discount structure:

  • Condition: catalog_PRODUCT_QUANTITY >= 10 (quantity of specific product in cart)
  • Action: DISCOUNT_PERCENT = 10 (10% discount)
  • Priority: multiple rules for different thresholds

Bitrix applies discounts when recalculating cart via \Bitrix\Sale\Discount. Important: quantity condition is checked at basket item level, not whole cart. For total order volume (all items together) use cart rules from b_sale_discount.

Approach 3: Volume discounts via cart rules

Cart rules (b_sale_discount) allow setting condition "Order sum >=" or writing custom condition via PHP. For thresholds by total quantity — create rule with custom condition:

Condition type: "Custom condition"
Condition class: heir to \Bitrix\Sale\Discount\Condition\Base
Logic: count total product quantity in cart >= N

This requires writing PHP class and registering it via Bitrix\Sale\Discount\Discount::registerConditionsList().

Displaying discount scale on product page

Show buyer the scale: 1–9 units — 100 rub/unit, 10–49 units — 90 rub/unit, from 50 units — 80 rub/unit. Scale data taken from b_catalog_price (with price types approach) or calculated from b_catalog_discount via \Bitrix\Catalog\DiscountTable. Scale rendered in catalog.element component template as HTML-table.

What to configure

  • Price types in b_catalog_group and populate b_catalog_price for wholesale thresholds (for B2B with fixed groups)
  • Catalog rules in b_catalog_discount with quantity conditions (for dynamic thresholds)
  • Discount scale display template on product page
  • Correct final price display in cart when quantity changes (AJAX recalculation)