Payment Status Exchange Between 1C and Bitrix: Setup and Automation
Payment status exchange between 1C and 1C-Bitrix is a task that cannot be solved with standard tools without custom development. A typical situation: a customer paid via acquiring, the status changed in Bitrix, but 1C doesn't know about it. Or vice versa — an invoice was paid in 1C, but the website still shows 'awaiting payment'. Accountants spend hours on manual reconciliation, orders are not reserved in time, customers don't receive notifications. We configure automatic synchronization for each scenario: online acquiring, invoice payment, cash on delivery. Let's look at the technical details of status transmission, show a practical case, and discuss typical errors. Our team has been doing integrations for over 7 years and has completed more than 50 projects with bidirectional exchange.
Main Payment Scenarios
| Scenario | Payment Source | Synchronization Direction | Complexity |
|---|---|---|---|
| Online payment on site | Acquiring (Sber, Tinkoff, YooKassa) | Bitrix → 1C | Low |
| Payment by invoice (B2B) | Bank statement | 1C → Bitrix | Medium |
| Cash on delivery | Courier/Pickup point | Depends on scheme | High |
Automatic synchronization via scheduled task is 10 times faster than manual posting — confirmed by our practice.
How to Transfer Payment Status from Bitrix to 1C?
When a payment is successful in Bitrix, a payment object (Bitrix\Sale\Payment) is created with PAID = Y. During the next order exchange, this status is transmitted in XML:
<Документ> <Ид>order-guid</Ид> <Оплачен>true</Оплачен> <СуммаОплаты>4500.00</СуммаОплаты> <ДатаОплаты>today_date</ДатаОплаты> </Документ> In 1C, upon importing an order with <Оплачен>true</Оплачен>, you can configure automatic creation of a Cash Receipt document (for 1C:Accounting) or a transaction in the settlement register (for 1C:Trade Management). This automates online payment posting and frees the accountant from routine. Read more about the exchange format in the official CommerceML documentation.
How to Transfer Payment Status from 1C to Bitrix?
When a bank statement is posted in 1C and the Receipt document is processed, the order in Bitrix needs to be updated. The mechanism: when the status of an order document changes in 1C (or when a payment receipt is processed), mark the order as "Paid". During the next exchange, 1C sends the updated status.
On the Bitrix side, the order update handler:
Example Code
// Upon receiving an order update from 1C if ($arOrder['PAID'] === 'Y') { $payment = $order->getPaymentCollection()->getItemByIndex(0); if ($payment && $payment->isPaid() === false) { $payment->setPaid('Y'); $order->save(); // Trigger automatic events: email to the customer, manager notification } } Configuring Partial Payments
In B2B scenarios, partial payments are common: 30% advance → 70% remaining. In 1C, this is two receipt documents; in Bitrix, one order with multiple payments. When transferring partial payment from 1C to Bitrix, you can create separate payments for each receipt or update a single payment with the cumulative amount. The second option is simpler to implement. Indication for the customer: "Paid: 1,500 out of 5,000 RUB (30%)" — via a custom order property PAID_AMOUNT, updated at each exchange.
Configuring partial payments includes the following steps:
- Determine which orders allow partial payment (e.g., B2B clients).
- Configure 1C to generate multiple payments for one order.
- Implement in Bitrix the update of a single payment with an amount equal to the sum of all receipts.
Refund Synchronization
Refunds are a critical case. If a refund is initiated in 1C, it must notify Bitrix to update the order status, trigger a refund via the acquiring system, and send a notification to the customer. If a refund is initiated via acquiring (chargeback), Bitrix receives a notification, changes the payment status to "Refunded" — this needs to be transmitted to 1C to create a refund document. Bidirectional refund synchronization eliminates accounting discrepancies.
Case Study: Real-Time Payment Synchronization
One of our clients — an online store with a high share of B2B (60% of orders paid by bank invoice). Problem: an order in 1C moved to "Paid" status only after manual processing of the bank statement (1–2 days). Customers saw an outdated status. We configured automatic bank statement loading in 1C via the 1C-DirectBank service. The statement is loaded and automatically posted every 30 minutes. After posting, a scheduled task triggers the exchange with Bitrix, updating the order status. The delay from payment receipt to status update on the site is 30–60 minutes. The customer receives an email confirming payment without manager intervention. Additionally, upon payment receipt in Bitrix, automatic stock reservation in 1C is launched.
What's Included in the Exchange Setup
| Stage | Duration | Description |
|---|---|---|
| Audit | from 1 day | Analysis of the current exchange scheme, identification of discrepancies |
| Design | from 2 days | Development of synchronization architecture for your scenarios |
| Implementation | from 3 days | Writing handlers, configuring exchange rules |
| Testing | from 1 day | Coverage of all cases: online payment, invoice, refund |
| Deployment | from 1 day | Deployment on the production server, documentation handover |
As a result, you get: configured status exchange, documentation on the scheme, and employee training. The cost is calculated individually. We guarantee stable synchronization under any load.
Get a consultation on your project — we'll estimate the timeline and complexity. Order the setup of status exchange, and your accounting department will forget about manual reconciliation.







