Configuring Deal Exchange between Bitrix24 and 1C
A deal in Bitrix24 CRM is a sales pipeline and customer communication. In 1C it is a customer order, invoice, and sales. Deal exchange bridges the gap: the manager leads the customer in Bitrix24, and the accountant prepares documents in 1C without manual data transfer.
Typical scenario
- Manager creates a deal in Bitrix24, adds products from the catalog (CRM products).
- When transitioning to "Agreed" stage — the deal automatically goes to 1C as a customer order.
- In 1C accountant creates an invoice, posts the sale.
- Invoice and payment status return to Bitrix24 — manager sees if the deal is paid.
What is transmitted in a deal
From Bitrix24 to 1C:
| Bitrix24 field | 1C entity |
|---|---|
TITLE |
Order purpose / comment |
CONTACT_ID → contact data |
Individual counterparty |
COMPANY_ID → company data |
Organization counterparty |
OPPORTUNITY |
Order amount |
CURRENCY_ID |
Currency |
Deal products (crm.deal.productrows.get) |
Order composition (nomenclature) |
ASSIGNED_BY_ID |
Responsible manager |
From 1C to Bitrix24:
- Invoice number and PDF link
- Payment status (paid/partial/unpaid)
- Shipment date (actual)
- Tracking number (if delivery integration exists)
Implementation: Bitrix24 → 1C
Exchange is initiated by an event in Bitrix24. Two approaches:
Via webhook on stage change. In outgoing webhooks settings, subscribe to ONCRMDEALSTAGECHAGE event. When deal transitions to the desired stage — POST to handler.
Via business process. A BP template in Bitrix24 is configured for the "In work" stage. An "REST" action in BP sends data to 1C HTTP service. Better for complex conditions (e.g., only if amount > N rubles).
Getting full deal data:
crm.deal.get → crm.deal.productrows.get → crm.contact.get / crm.company.get
Transmission to 1C — via HTTP POST to configuration's HTTP service. In 1C, a "Customer Order" is created with composition from deal products. Nomenclature is searched by XML_ID (if CRM products are synchronized with 1C) or by product code.
Product mapping
Products in Bitrix24 CRM catalog and 1C nomenclature are two different bases. Synchronization options:
-
Simple mapping by product code. When transmitting deal, search for nomenclature in 1C by product code from
PROPERTY_ARTNUMBERfield in CRM product. -
Synchronized catalog. 1C nomenclature is exported to Bitrix24 CRM catalog via REST API
crm.product.add. CRM product XML_ID = 1C nomenclature ID. When transmitting deal — direct mapping by XML_ID.
The second option is more reliable but requires catalog synchronization setup.
Implementation: 1C → Bitrix24
When order status changes or invoice is created in 1C — handler sends data to Bitrix24:
// In 1C when posting invoice
RequestData = New Map;
RequestData.Insert("DEAL_ID", IDDealBitrix24);
RequestData.Insert("UF_CRM_INVOICE_NUMBER", InvoiceNumber);
RequestData.Insert("UF_CRM_INVOICE_URL", URLPDFInvoice);
// HTTP request to crm.deal.update
Payment status — via crm.deal.update on UF_CRM_PAYMENT_STATUS field (user field, created beforehand).
Invoice from 1C to Bitrix24
If PDF invoice is needed in deal card, 1C:
- Generates PDF invoice
- Uploads to Bitrix.Disk via
disk.file.uploadbyurlor direct upload - Attaches to deal via
crm.deal.updateor adds to comment
Duplicate control
In bidirectional exchange, it's important to maintain cross-references:
- In Bitrix24 deal — user field
UF_CRM_1C_ORDER_IDwith 1C order ID - In 1C order — property "Bitrix24 deal ID"
This allows updating existing order on resynchronization instead of creating a new one.







