B2B Portal Development on 1C-Bitrix Turnkey
A standard Bitrix online store doesn't suit wholesale sales: one price for everyone, a public catalog, no credit limits, and no order approval workflow. When a manager spends 40 minutes manually processing each order via CRM, and a dealer calls to check stock, it's a sign of a missing B2B portal. We design the architecture, configure pricing, integrate with 1C, and implement approval business processes. Contact us to evaluate your project.
How a B2B Portal Fundamentally Differs from a Public Store
Architecturally — different authorization logic, pricing model, and ordering scenario. A B2B portal on Bitrix is implemented 3-5 times faster than a custom solution with comparable functionality.
Authorization and user groups. In bitrix:sale, a user is tied to one group. For B2B, a hierarchy is needed: company → contact person → role (buyer, accountant, director). Standard groups are flat and unsuitable. This is implemented via a custom module with a company_user link table and D7 ORM (Bitrix\Main\ORM\Data\DataManager). Action rights are set via a bitmask in a Highload role block.
Price types. The catalog module supports multiple price types: CATALOG_GROUP_ID in the b_catalog_price table. For B2B, this is mandatory — each user group gets its own price type. Individual contract prices are implemented via the OnSaleOrderBeforeSaved event handler or a custom price provider.
Real-time stock catalog. B2B buyers order in large quantities and check availability before ordering. Stock data from b_catalog_store_product is updated during synchronization with 1C via CommerceML. If synchronization runs once per hour, the client sees outdated data. Solution: 1C REST API + incremental update via CCatalogStoreProduct::Update(). Saves managers up to 40 hours per month.
How to Organize Authorization on a B2B Portal?
For B2B, a custom authorization module is needed, implementing a "Company — Contact Person — Role" hierarchy with permission separation. This allows, for example, giving the accountant access to financial documents but not orders. The 1C-Bitrix commercial platform provides D7 ORM for building such relationships.
Key Modules and Components
-
salemodule — the basis for cart and orders. In B2B it is extended: we add statuses (Pending, Approved, Rejected), configure business processes viabizprocmodule. -
catalogmodule — pricing, SKUs, warehouse management.CatalogGroupandDiscountCouponare mandatory. -
crmmodule (if using Bitrix24) — synchronization of portal orders with CRM deals via REST APIcrm.deal.add/crm.deal.update. - Personal account — order history with repeat, current orders, debt, documents (invoices, PDF), contact person management.
Integration with 1C
Standard exchange via CommerceML covers products, prices, warehouses, orders. But it does not cover:
- Credit limits and debt — exported via separate XML or 1C REST service. On Bitrix side — a custom Highload block
b2b_credit_limits. - Documents — invoices and waybills stored in 1C. The portal requests the list via REST, caches in
/upload/b2b/docs/with TTL 24 hours. - Specifications — individual contract items, stored in a Highload block linked to the company.
Important: do not break the standard CommerceML exchange. Custom fields and logic — via events OnBeforeCatalogImport1C, OnSuccessCatalogImport1C, separate tables.
Performance Under Load
A B2B portal with 500+ active companies and peak load requires:
- Tagged catalog cache:
CIBlock::clearIblockTagCache($iblockId)when stock updates. - Alternative for personal prices: cache by key
user_group_price_{groupId}_{productId}. - Redis sessions for load balancing.
- Elasticsearch for catalog search instead of the
searchmodule.
Development Stages
| Stage | Content | Duration (weeks) |
|---|---|---|
| Analytics | Role schema, ordering scenarios, 1C integration map | 2-3 |
| Database Design | Highload blocks, D7 entities, pricing schema | 1-2 |
| Backend | Authorization module, pricing, 1C integration | 4-8 |
| Personal Account | Orders, documents, company management | 3-5 |
| Order Approval | Bizproc workflows, notifications | 1-3 |
| Testing | Load, acceptance, integration | 2-3 |
Total: 12-22 weeks depending on 1C integration complexity.
Typical Errors and Their Solutions
| Error | Solution |
|---|---|
| Storing personal prices in session | Use Redis or database |
| 1C sync blocks the site | Incremental exchange, only changed items |
Approval bizprocs in init.php |
Extract to a separate module with configurable rules |
Step-by-Step Guide: How 1C Integration Is Done
- Configure CommerceML on the 1C side: set the schedule for exporting products, prices, stocks.
- Create a REST service in 1C to transfer credit limits and documents.
- Implement Bitrix event handlers (
OnBeforeCatalogImport1C,OnSuccessCatalogImport1C). - Test exchange on a test environment.
- Deploy to production and monitor.
What's Included
- Full technical documentation (architecture, DB schema, API contracts).
- Source code of custom modules with a license to use.
- Access to dev and prod environments, repository.
- Administrator training (up to 8 hours) and user manuals.
- 6-month warranty support with 4-hour response time.
Ready to discuss your project? Contact us for a consultation. Order a turnkey B2B portal development and get a cost and timeline estimate.







