Setting up wholesale 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
    1173
  • 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
    745
  • 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

Setting Up Wholesale Prices by Order Volume in 1C-Bitrix

Wholesale discount by volume — classic mechanic: bigger order, lower unit price. In Bitrix implemented several ways depending on which volume type counts: units of specific product, total cart sum, or quantity per category.

Quantized Prices: Built-in Mechanism

The catalog module supports quantized (tiered) prices via b_catalog_price table. For one product can set multiple rows with one price type, but different QUANTITY_FROM and QUANTITY_TO values. Bigger quantity in row — lower price.

Configuration in control panel: product card → "Prices" tab → for needed price type add multiple rows with different ranges. Or programmatically via CCatalogProductPrice::Add() / CCatalogProductPrice::Update() on import.

When adding product to cart, Bitrix automatically determines correct row by quantity and applies corresponding price. Works without additional code — standard module logic.

Discounts by Cart Sum

If price depends not on quantity of specific product but on total order sum — use discount module (CCatalogDiscount). Create "On cart" type discount with condition ORDER_PRICE > N → X% discount. Multiple levels: sum 50K — 5%, 100K — 8%, 200K — 12%.

Configuration: Store → Price Rules. Condition — "Order sum", action — "Discount on entire cart" in percentages or fixed amount. Discounts stack by priority — important to set "Stop further application" flags correctly.

Discounts by Volume in Category

More complex scenario: discount applies if buyer took products from category X totaling more than Y. Standard catalog module tools cover this via advanced discount conditions — select "Infoblock section" in condition, specify sum threshold.

If logic non-standard (e.g., discount calculated by sum of multiple categories or with weight coefficients) — implement via OnSaleBasketBeforeSaved event handler with custom calculation.

Displaying Tiered Prices

Customer should see price table at different volumes before adding to cart. In product card component (bitrix:catalog.element) in result_modifier.php pull all b_catalog_price rows for product with QUANTITY_FROM > 0, form QUANTITY_PRICES array and output as table:

Quantity Price per unit
1–9 1,200 rubles
10–49 1,050 rubles
50+ 900 rubles

Setup of tiered prices for existing catalog (via interface + import): 3–5 days. Development of custom discount logic with display: 1–2 weeks.