Integration of Bitrix24 with 1C:UNF for B2B Sales Automation and Accounts Receivable Control
Why CRM and accounting system integration is essential
In the B2B sales segment, companies often utilize a CRM platform for client interaction, while an accounting system (e.g., 1C:UNF) is used for inventory management, document flow, and financial operations. Maintaining separate data repositories complicates the following:
- Monitoring client status regarding payments and shipments
- Automatically suspending services in case of overdue balances
- Reusing items and commercial terms fr om 1C during quote or invoice generation
- Reconciling CRM business metrics with financial reporting
Integration addresses these challenges by ensuring data accuracy and automating key stages of the sales funnel.
Synchronized data types
In practice, the following entities are typically synchronized:
- Companies/contacts (CRM ⇄ 1C)
- Deals / customer orders (CRM → 1C)
- Invoices and payments (1C → CRM)
- Catalog items (1C → CRM)
- Accounts receivable balances (1C → CRM)
The integration method depends on the architecture used—cloud-based or on-premises.
Implementation in cloud-based Bitrix24
In cloud deployments, data is exchanged via REST API and business process automation. Common practices include:
- A scheduler (cron or equivalent) in 1C exports company lists, paid invoices, and receivables to an intermediate storage (e.g., MySQL or REST endpoint)
- A cloud Bitrix24 script (business process or automation rule) calls a webhook or processes a request from the integration module
- Upon events in Bitrix24 (e.g., deal stage change, invoice generation), a POST request is sent to a 1C REST endpoint
Example of a business process adding an accounts receivable field to the client record:
// Example of calling Bitrix24 REST API from an external system
$webhookUrl = 'https://example.bitrix24.ru/rest/1/abcdef123456/crm.company.update';
$data = [
'id' => 1234,
'fields' => [
'UF_CRM_DEBT_SUM' => 257000
]
];
$ch = curl_init($webhookUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
curl_close($ch);
This approach displays a client's financial status directly within the CRM profile.
Implementation in on-premises version
For the on-premises edition, integration may be implemented using the D7 framework and custom modules. Key features include:
- A scheduled agent periodically queries or exchanges data (XML/JSON) with 1C via HTTP interface or shared folder (/upload) file exchange
- Use of
Bitrix\Crm\CompanyTable,Bitrix\Crm\DealTable,Bitrix\Crm\InvoiceTableAPIs to create or update CRM entities - Custom fields added to store accounts receivable status
- Triggers (automation rules or business processes) can be based on these fields
Example of updating receivables data:
use Bitrix\Main\Loader;
use Bitrix\Crm\CompanyTable;
Loader::includeModule('crm');
CompanyTable::update(1234, [
'UF_CRM_DEBT_SUM' => 257000
]);
Accounts receivable control: implementation options
Several strategies are used to manage sales team behavior based on 1C data:
- Restricting new deal creation — when a client has an outstanding balance
- Automatic deal suspension — moving deals to a specific stage (e.g., “Suspended”) if a credit lim it is exceeded
- Enhanced reporting — incorporating receivables status fields into analytical reports
- Manager notifications — alerts displayed when opening a client profile indicating overdue balances
Common errors
- Duplicate handling: similar entities may exist in both systems under different IDs. Use centralized matching by tax ID or GUID
- Lack of write protection in 1C: without control mechanisms, erroneous data can be introduced
- API rate limits: for large volumes, implement processing queues
- No separation between business and integration users: REST API access should use dedicated credentials
- Minimize redundant updates from 1C to prevent overwriting accurate CRM inputs
FAQ
- Can the data exchange be fully automated without user involvement?
- Yes, with well-defined logic, proper entity mapping, and directory structure, processes run automatically.
- How to block deal creation when there is outstanding debt?
- This can be implemented through CRM business processes or custom form validation that calls an external API.
- How to transmit data from 1C to a cloud-based system?
- Via webhook, Bitrix24 REST API, or intermediate services (e.g., a custom endpoint with authorization and transformation logic).
- How to deal with outdated or duplicate submissions?
- Use deduplication logic based on standard identifiers such as tax ID or email.
- Why might the CRM not show the current balance?
- This often occurs when balance updates are triggered manually or on a schedule. Ensure the synchronization mechanism is active and correctly processes incoming data.
Conclusion
The integration of Bitrix24 with 1C:UNF enables robust automation of B2B sales and real-time control of accounts receivable, helping to reduce operational risks. A properly implemented exchange mechanism between CRM and accounting systems ensures end-to-end client relationship management with consideration for financial limits and status indicators.
If you're planning integration like this
It might be helpful to review your current systems, expected synchronization flows, and architecture options. Common discussion points before project estimation are:
- Which entities and data types are subject to synchronization
- Which system is considered the source of truth for each data type
- What platform variants are used for CRM and 1C (cloud or on-premises)