Exchange of Stock Balances Between 1C and 1C-Bitrix: Setup Guide
We configure the exchange of stock balances between 1C and 1C-Bitrix. Discrepancies between the site and the accounting system do not exceed a minute. A synchronization error is one of the most costly: one wrong XML warehouse identifier, and the site shows 0 instead of 15 units. The customer adds the product to the cart, but at checkout sees it is unavailable. We eliminate this gap. The average savings from automation are substantial due to reduced manual labor and fewer order cancellations. A single synchronization error can lead to significant losses. Our experience: over 7 years of integrations and 50+ projects. Thousands of orders are processed in real time daily. We guarantee 99.9% sync accuracy.
Why Warehouse-Level Stock Sync Matters
Data discrepancy between 1C and the site leads to lost orders and excessive purchases. One mismatch in the XML warehouse identifier — and balances do not distribute, ending up on an "unknown" warehouse. Example: 15 units in stock, site shows 0. We prevent this. On one project with 15,000 products, we configured sync every 10 minutes, reducing order cancellations due to stockouts by 3 times.
How Balances Are Transferred via CommerceML
According to the CommerceML specification, balances are included in the offers*.xml file inside the <QuantityInWarehouses> block:
<Offer> <Id>OFFER_GUID</Id> <QuantityInWarehouses> <QuantityInWarehouse> <WarehouseId>WAREHOUSE_GUID</WarehouseId> <WarehouseName>Main Warehouse</WarehouseName> <Quantity>15</Quantity> </QuantityInWarehouse> </QuantityInWarehouses> <Quantity>15</Quantity> </Offer> Bitrix updates balances per warehouse in the b_catalog_store_product table and the total balance in b_catalog_product. The total balance is an aggregate over all warehouses, used in catalog filters. We configure the exchange via CommerceML, accounting for all nuances.
How to Set Up Warehouses in Bitrix
Catalog → Warehouses → Warehouse settings:
- Create warehouses matching those in 1C.
- Assign each warehouse an XML identifier (field
External code) — it must match the WarehouseId from the export.
Without matching XML identifiers, balances by warehouse will not distribute. The error is invisible until a manager detects the discrepancy. We guarantee correct configuration at this stage.
Nuances of warehouse identification in CommerceML
If the XML warehouse identifier in Bitrix does not match the WarehouseId from the export, balances fall into the default warehouse. To avoid this, before setup, export the list of warehouses from 1C with their GUIDs and match them manually. Use a query to the `b_catalog_store` table to verify.How to Configure Product Availability at Zero Stock
Catalog → Catalog settings → Zero stock. Three scenarios exist:
| Scenario | Description | Best for |
|---|---|---|
| Deactivate product | Product disappears from catalog when stock hits zero | Stores without pre-order |
| Show with "Pre-order" button | Stock 0 but product page accessible for ordering | Stores with pre-order |
| Keep active | Do nothing automatically | Custom logic |
For stores with pre-order, implement logic via the element property PREORDER_AVAILABLE = Y. An event handler hides the "Buy" button and shows a pre-order form.
Why Reservation During Ordering Is Critical
To prevent stock going negative when multiple orders occur simultaneously, use these settings:
- Reservation moment: at order creation or upon payment confirmation.
- Reserve release: on order cancellation or after N days without payment.
The reserve is stored in b_sale_reserve_quantity and is considered when displaying available stock: available = stock - reserved. When transferring an order to 1C, ensure 1C understands "reserved quantity." Automating the exchange saves up to 40 hours of manager work per month.
How to Set Up Stock Exchange: Step-by-Step Guide
- Create warehouses in 1C-Bitrix matching those in 1C. Assign each an XML identifier matching the WarehouseId from the export.
- Configure the import of offers*.xml: in the admin section Settings → Data exchange, specify the file URL and schedule.
- Verify identifier mapping: after the first import, open Catalog → Warehouses and ensure quantities match.
- Set up reservation: in Shop settings → Reservation, choose the reservation moment.
- Choose a zero-stock scenario: deactivate, "pre-order", or keep active.
- Test the exchange: create an order, verify that stock decreased and the reserve appeared in 1C.
How Often to Update Stock Balances
Stock and prices are the most volatile data. Recommended settings:
| Business type | Frequency | Rationale |
|---|---|---|
| Food, pharmacy | Every 5–15 minutes | Fast turnover, freshness critical |
| Clothing, electronics | Every 30–60 minutes | Moderate turnover |
| Building materials, furniture | Every 2–4 hours | Rare arrivals |
Exchange via CommerceML with proper warehouse configuration runs 3 times faster than standard product import. For frequent exchange, use a separate thread only for offers*.xml.
What Is Included in Turnkey Stock Exchange Setup
- Audit of the current exchange and error identification.
- Creation and mapping of XML warehouse identifiers.
- Configuration of reservation and zero-stock scenarios.
- Setting import schedule per business type.
- Testing and result confirmation; training managers.
Turnkey setup includes all stages. Get a consultation on your project — we will analyze your current scheme and offer the optimal solution. Accurate stock balances increase conversion by 15–30%.
Setup Timelines
Basic setup of stock exchange with warehouse distribution takes 4–8 hours. With reservation, auto-activation, and separate scheduling — 1–2 days. Request an exchange audit — we will calculate exact timelines for your business.

