Setting up individual pricing for 1C-Bitrix B2B clients

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

Setting Up Individual Prices for B2B Clients in 1C-Bitrix

Two customers order the same product but see different prices — because each has their own contract. Standard B2B task that Bitrix solves via price type mechanism, but requires proper configuration: wrong setup leads to customer seeing someone else's price.

Price Type Mechanism in Catalog Module

In Bitrix each product can have multiple prices — one per price type (b_catalog_group). Price type is simply a named pricing level: "Retail", "Wholesale", "VIP", "Contract". For each price type, set which user groups (b_user_group) have access to it.

Configuration in control panel: Store → Settings → Price Types. Create types for each level. In "Customer Groups" specify which group sees which type.

Individual Prices: Two Approaches

Approach 1 — Group per customer. Each B2B customer gets separate user group (b_user_group) and separate price type. Customer enters that group — sees their prices. Works while customers are dozens. With hundreds — managing becomes inconvenient: each new customer requires group and price type creation, plus price upload.

Approach 2 — Highload block of contract prices. More scalable. Create Highload block b2b_contract_prices with fields: UF_COMPANY_ID, UF_PRODUCT_ID, UF_PRICE, UF_CURRENCY, UF_DATE_FROM, UF_DATE_TO. On price request — check contract price for customer company first, then group pricing, then base price. Logic via custom price provider.

Price Application Priority

Order in which system searches for price for specific user is set in price type settings — "Sorting" field. Lower number — higher priority. Individual contract price should have sorting 1, retail base — 100.

Uploading Prices from 1C

Using CommerceML exchange with 1C, prices sync automatically by price types. In exchange file, price type identified by ТипЦены field — maps to CATALOG_GROUP_ID in Bitrix. Contract prices not in standard pricelist are exported separately and loaded into Highload block.

What to Check After Setup

  • Authorized "Wholesale" group user doesn't see "Retail" price and vice versa
  • Logged-out user doesn't see B2B prices at all (if catalog is closed)
  • Price cache invalidated on changes — via tagged cache or CCatalogProduct::clearCacheProductPrice()

Setup of price types and groups for standard scheme (up to 5 price types, no contract Highload): 3–5 days. Development of contract price provider with Highload block: 1–2 weeks.