Bitrix24 and 1C Integration: Automatic Invoice Generation

The Problem of Manual Invoice Creation: Time Loss and Errors When manually transferring invoices from Bitrix24 to 1C, accountants spend 5–8 minutes per document, and managers wait for the number for hours. Errors are inevitable: wrong SKU, extra line, incorrect quantity. Each such error leads to

Our competencies:

Frequently Asked Questions

Latest works

  • B2B ADVANCE company website development
    B2B ADVANCE company website development
    1460
  • Website development for FIXPER company
    Website development for FIXPER company
    1019
  • Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    764
  • Development based on 1C Enterprise for MIRSANBEL
    Development based on 1C Enterprise for MIRSANBEL
    882
  • Website development on CRM Bitrix24 for DOLBIMBY
    Website development on CRM Bitrix24 for DOLBIMBY
    810
  • Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1166

The Problem of Manual Invoice Creation: Time Loss and Errors

When manually transferring invoices from Bitrix24 to 1C, accountants spend 5–8 minutes per document, and managers wait for the number for hours. Errors are inevitable: wrong SKU, extra line, incorrect quantity. Each such error leads to returns, re-approvals, and loss of customer trust. For a wholesale company with 30–50 orders per day, this means dozens of lost man-hours per week. Our team has over 10 years of experience and 40+ integration projects. We automate this process: the invoice is created automatically in 1C when the deal status changes. Integration pays off in 2–3 months by eliminating errors and speeding up work.

Types of Invoices and Their 1C Counterparts

Before setting up integration, you need to determine the document type. In Bitrix24, events are tied to deal statuses; in 1C, each document has its own operation type.

Document Type 1C Document Bitrix24 Event
Goods invoice (TORG-12) Sales of goods and services (type 'Goods') Deal status changed to 'Shipped'
Materials issue invoice Transfer of goods / Sales Warehouse shipment confirmation
Return invoice Return of goods from buyer Return created in deal
Transport invoice (TN) Separate register or additional fields Linked to shipment

For online stores and wholesale trade, TORG-12 → 'Sales of goods' is most commonly needed.

Mandatory Data for the Invoice

The invoice field set is stricter than for an act. Besides standard parties and items, you must transfer:

  • Shipping warehouse. In Bitrix24, the warehouse can be a custom field of the deal or taken from the inventory module. In 1C, the warehouse is tied to the department.
  • Units of measurement (OKEI). Bitrix24 often uses simplified units (pcs, kg), while 1C uses a reference with codes. Mapping is required.
  • Serial numbers and batches (if batch accounting is used). The handler must be able to select a batch when creating the invoice.

How Two-Stage Integration Works

The optimal scheme for trading companies is two-stage transfer with reservation. This reduces error risk and locks goods immediately after the order.

Stage 1 – Reservation. When the order is confirmed in Bitrix24 (status 'Order accepted'), a 'Customer Order' document is created in 1C. Goods are reserved in stock before actual shipment.

Stage 2 – Invoice creation. When the deal moves to 'Shipped' status, the handler creates a 'Sales of Goods' document based on the 'Customer Order'. The link is through the external code of the document.

Bitrix24: status 'Shipped' ↓ webhook PHP handler: crm.deal.get → deal data crm.deal.productrows.get → items crm.requisite.get → counterparty details ↓ OData 1C: create 'Sales of Goods' ↓ 1C: document in 'Not posted' status → accountant posts ↓ reverse webhook Bitrix24: update field 'Invoice Number 1C' 

Why Reverse Sync of Invoice Number Matters

After the invoice is posted in 1C, the manager must see its number in the deal. This is needed for customer responses and document reconciliation. We configure a scheduled task in 1C: every 5–10 minutes it checks posted sales and updates the 'Invoice Number' field in Bitrix24 via crm.deal.update. The manager gets the number immediately, without manual entry. This saves tens of about $9–13 in savings per month in operational costs.

How We Do It: Stack and Approach

We use REST API of Bitrix24 to send webhooks and OData or CommerceML for exchange with 1C. The PHP handler runs on the server, receives events, and generates XML for 1C. For complex cases, we use external connectors. Comparison with manual entry shows a speedup of 10–15 times – our implementation is more stable and eliminates transfer errors.

Case Study: Wholesale Supplier of Building Materials

Our client processed 30–50 orders per day. Managers worked in Bitrix24, warehouse and accounting in 1C:UT 11. Previously, invoices were created manually by an operator using printed deal data – each took 5–8 minutes plus verification.

During setup, a non-standard task arose: one order could contain goods from two different warehouses (in different cities). In 1C, an invoice must be created separately for each warehouse. We implemented grouping via a custom field 'Warehouse' in deal product items. The handler splits items and creates separate sales documents.

Result: invoice processing time per order decreased from 6 minutes to 20–30 seconds. The accountant only checks and posts the document.

Stages of Integration Setup

  1. Audit of current business processes and document flow.
  2. Scheme design: reservation, invoice creation, reverse sync.
  3. Development of PHP handler (webhooks + Bitrix24 REST API).
  4. Setting up exchange with 1C via OData or CommerceML.
  5. Mapping of units of measurement, warehouses, counterparties.
  6. Testing on real orders (pilot run).
  7. Deployment on the production server and employee training.
  8. Warranty support for one month after delivery.
Handler code example
<?php // webhook handler example require_once 'crest.php'; $dealId = $_GET['deal_id']; $deal = CRest::call('crm.deal.get', ['ID' => $dealId]); $products = CRest::call('crm.deal.productrows.get', ['ID' => $dealId]); // ... send to 1C 

What's Included in the Scope

  • Project documentation: integration scheme, field mapping.
  • Repository access with handler code and deployment instructions.
  • Employee training (accounting, managers).
  • 30-day warranty support after launch.

Comparison: Manual Entry vs Automated Integration

Parameter Manual Entry Automation
Time per invoice 5–8 minutes 20–30 seconds
Error risk (wrong SKU, quantity) High Minimal
Need for manual verification Full Only confirmation
Link to Bitrix24 order No, searched by number Automatic, number in deal
Scalability with order growth Requires new operators No changes needed

Automation speeds up invoice processing by 10–15 times compared to manual entry and completely eliminates data transfer errors. Get a consultation from an engineer on your project. Leave a request on our website, we will evaluate the project and offer the optimal solution.