Integration of 1C-Bitrix with Split Services (Yandex Split, Dolyami)
A buyer often abandons a large purchase if the price hits the budget. Split payment is a mechanism that divides the amount into 2–4 installments without interest and without a credit agreement. We, a team with 10 years of Bitrix experience, have already integrated Yandex Split and Dolyami for dozens of online stores. Let's tell you how to do this technically competently, what pitfalls you'll face, and how to avoid them.
How split payment works in Bitrix
Split services do not give the buyer a loan—they pay the store the full amount immediately (or within 1–2 days), and then collect payments from the buyer themselves. For 1C-Bitrix, this is a regular payment system: create a handler, receive a webhook with confirmation, mark the order as paid. The difference is in the API and status model: fewer intermediate statuses than in credit systems.
Comparison of Yandex Split and Dolyami
Both services solve the same problem but differ in limits and audience. Yandex Split allows splitting amounts from $10–1.5k into 2–4 payments. Dolyami — from $5–300 into 4 payments. Yandex Split is better for expensive goods (electronics, furniture), while Dolyami is for average ticket items (clothing, cosmetics). We recommend connecting both: on the checkout page we display two buttons, and the buyer chooses their service.
Technical implementation of Yandex Split
Yandex Split is embedded via the Yandex Pay SDK. On the checkout page, include a JavaScript button with the parameter paymentType: 'SPLIT'. After confirmation, Yandex sends a webhook to your callbackUrl. The handler in 1C-Bitrix must:
- Verify the JWT token from the header.
- Create an order (
\Bitrix\Sale\Order::create). - Confirm via API (
POST /api/merchant/v1/orders/{orderId}/capture).
Example handler in /local/php_interface/include/sale_payment/yandex_split/:
public function initiatePay( \Bitrix\Sale\Payment $payment, \Bitrix\Main\Request $request = null ) { $this->setExtraParams([ 'MERCHANT_ID' => $this->getBusinessValue($payment, 'MERCHANT_ID'), 'CART_ITEMS' => $this->getCartItems($payment), 'AMOUNT' => $payment->getSum(), ]); return $this->showTemplate($payment, 'template'); } The template template/template.php renders the Yandex Pay button with the SPLIT parameter.
Technical implementation of Dolyami
The "Dolyami" service from T-Bank uses a REST API. Endpoint: https://partner.dolyame.ru/v1/orders. Authorization: HTTP Basic Auth + X509 certificate signature. Creating an order:
$response = $this->apiRequest('POST', '/v1/orders', [ 'id' => $payment->getField('ORDER_ID'), 'amount' => $payment->getSum(), 'prepaid_amount' => 0, 'items' => $this->formatItems($payment), 'client_info' => [ 'first_name' => $order->getPropertyValue('NAME'), 'last_name' => $order->getPropertyValue('LAST_NAME'), 'phone' => $order->getPropertyValue('PHONE'), 'email' => $order->getPropertyValue('EMAIL'), ], 'notification_url' => $this->getCallbackUrl($payment), 'success_url' => $this->getSuccessUrl($payment), 'fail_url' => $this->getFailUrl($payment), ]); The API returns a link — redirect to the confirmation page.
Status model and refunds
| Status | Yandex Split | Dolyami | Action in Bitrix |
|---|---|---|---|
| Created | PENDING | new | Awaiting |
| Confirmed | CONFIRMED | approved | $payment->setPaid('Y') |
| Rejected | REJECTED | rejected | Cancel payment |
| Canceled | CANCELED | canceled | Cancel payment |
| Refunded | REFUNDED | refunded | Refund in Bitrix |
Both services support partial refunds. For Yandex: POST /api/merchant/v1/orders/{orderId}/refund, for Dolyami: POST /v1/orders/{orderId}/refund. With a partial refund, the service recalculates the buyer's schedule, and only the excess amount is returned to the store.
Our approach: a real case
One of our clients, an electronics retailer with 5,000 orders per month, experienced payment confirmation delays of up to 10 seconds due to synchronous webhook processing. We moved the webhook handling to a Bitrix agent queue, implemented idempotency checks, and optimized the order creation logic. Result: average confirmation time dropped to 1.5 seconds, and lost orders due to timeout decreased by 80%. This is the typical depth we bring to every integration.
What the service includes
- Analysis of the current payment system and cart.
- Development of two handlers (Yandex Split and Dolyami) with webhook processing.
- Integration with 1C (order status exchange).
- Testing on test and real orders.
- Operational documentation.
- Training for managers on refund handling.
The cost is calculated individually, timeline is from 3 to 5 working days.
Security and monitoring of split integrations
Both services send webhook notifications with a signature that must be verified on the server side. For Yandex Split, the signature is in the JWT token of the Authorization header; for Dolyami, via HMAC-SHA256 in the X-Signature header. Without signature verification, an attacker could emulate payment confirmation and get the goods for free.
We recommend setting up webhook queue monitoring: if a confirmation status doesn't arrive within 10 minutes, send a repeat request via the service API. Both providers support manual order status checks via GET /api/merchant/v1/orders/{orderId} (Yandex) and GET /v1/orders/{id} (Dolyami). This protects against lost orders during temporary network failures.
For high-traffic stores (over 200 orders per day), we recommend processing webhooks through a task queue—for example, via Bitrix agents or Redis Queue—so as not to block the HTTP response to the service. The endpoint must respond within 3 seconds, otherwise the service will repeat the notification. Configure handler idempotency: upon receiving the same webhook twice, the order status should not change twice. This is done by checking the current payment status before updating and skipping the notification if the status is already set.
Advantages of our integration
Over 200 successful projects integrating payment systems with 1C-Bitrix, 10+ years on the market, in-house certified specialists. We use official SDKs and follow vendor recommendations (Yandex Pay SDK, Dolyami API).
Contact us — we'll evaluate your project and offer the best solution.







