Configuring Order Exchange Between 1C and 1C-Bitrix
Order exchange is a two-way process: the website sends new orders to 1C, and 1C returns updated statuses. The key question during configuration is the mapping of order statuses between the two systems, which is unique for every project. Incorrect mapping causes buyers to see outdated statuses, or worse — receive an "Order Completed" notification while the item is still in the warehouse.
Sending Orders from the Website to 1C
Orders are transmitted in CommerceML format in the orders.xml file. 1C retrieves the file at the next exchange session. Settings on the 1C-Bitrix side:
Settings → Product Settings → Online Store → Order Exchange:
- Export orders: enable
-
Statuses for export: select the statuses that should be sent to 1C. Typically "New" (
N) and "Paid" (P). Cancelled and completed orders do not need to be transmitted — they create unnecessary overhead - Period: from the date of last exchange — the safest option; does not re-transmit already processed orders
The order XML contains: buyer details, line items with quantities and prices, selected delivery method, order properties (address, phone, comment).
Status Mapping
Statuses in 1C and on the website have different names and do not always correspond one-to-one. Standard mapping is configured in:
Store → Settings → Order Statuses → [status] → 1C Identifier
Example of a typical mapping for UT 11:
| 1C Status | 1C-Bitrix Status Code | Description |
|---|---|---|
| In progress | P |
Accepted, transferred for processing |
| Ready for shipment | D |
Being assembled / Ready |
| Handed to courier | F |
In delivery |
| Completed | FF |
Delivered, closed |
| Cancelled by client | C |
Cancelled |
Without correct mapping, 1C will log an "Unknown status" error when updating the status, and the update will not be applied.
Common Issues
Order duplication. If an exchange session was interrupted after the file was transmitted but before 1C's confirmation was received — the orders will be transmitted again at the next session. Protection: the unique order identifier in the XML matches the website's ACCOUNT_NUMBER; 1C checks for the existence of the document before creating it.
Loss of order properties. Non-standard properties (UTM tags, promo codes, client type) are not transmitted via the standard XML. They are added via the OnSaleOrderExport1C event handler. After adding a property, make sure the corresponding attributes for storing it exist in 1C.
Amount discrepancies. 1C recalculates discounts according to its own rules and arrives at a different total amount. Solution: transmit line item prices already inclusive of discounts, and pass the discount as a separate line in the order items.
Real-Time Order Exchange via Events
If orders need to reach 1C immediately upon placement (without waiting for the next exchange session) — use the 1C REST API or an HTTP request in the OnSaleOrderSaved event handler:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleOrderSaved',
function(\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
if ($order->isNew()) {
\MyProject\Exchange\OrderPusher::push($order->getId());
}
}
);
Setup Timeline
Configuring order exchange with status mapping — 4–8 hours. With non-standard properties and handlers — 1–2 days. With real-time push order delivery — +1 day.







