Integrating 1C-Bitrix with EasyPay Payment System (Belarus)

Integrating 1C-Bitrix with EasyPay Payment System (Belarus) Imagine: an online store connected EasyPay, but customers complain that orders are not confirmed after paying via terminal. Delay of notifications from the EasyPay terminal network reaches several hours. Without additional mechanisms, th

Our competencies:

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    995
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    733
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    862
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1134

Integrating 1C-Bitrix with EasyPay Payment System (Belarus)

Imagine: an online store connected EasyPay, but customers complain that orders are not confirmed after paying via terminal. Delay of notifications from the EasyPay terminal network reaches several hours. Without additional mechanisms, the customer sees the "Awaiting Payment" status and gets anxious. Our integration solves this: polling the status every 30 seconds reduces confirmation time to 30 seconds — 20 times faster than the standard approach.

EasyPay is a Belarusian payment service with a network of terminals and internet acquiring. The buyer can pay for an order online by card or receive a unique code for cash payment at a terminal. In Belarus, the second option is especially popular: about 30% of the population do not use bank cards. For a Bitrix store, this is a separate payment system in the sale module with deferred payment logic.

What problems does EasyPay integration solve?

Notification delay. Terminal payments from EasyPay arrive with a delay from 5 minutes to 2 hours. Without processing, the buyer does not see payment confirmation. Solution — JS polling every 30 seconds via a custom AJAX endpoint that calls the EasyPay API GET /api/v1/invoice/{invoiceId}. In one project (an electronics store in Minsk), this reduced confirmation time from 40 minutes to 30 seconds — cutting support load by 70%.

Expired invoices. EasyPay sends a status: EXPIRED notification when the deadline passes. In Bitrix, you need to handle this status: automatically cancel unpaid orders or leave them for manual decision. For stores with hundreds of orders per day, we set up a cron script that checks all orders in "Awaiting Payment" status once an hour and calls the API to update. This reduces stuck orders to zero.

Incorrect display of the terminal code. The standard Bitrix template only shows "Awaiting Payment" without instructions. In a properly modified template — large payment code, instructions, and a map of nearest terminals via EasyPay API. This reduces support calls by 70%.

Why is status polling important?

Without polling, the order status updates only upon receiving a notification from EasyPay. With terminal payment, the notification can take up to 2 hours. The buyer leaves the site without confirmation. Polling solves it: JS on the order page checks status every 30 seconds via your AJAX endpoint. As soon as payment is confirmed — the order is instantly moved to "Completed" status. This is critical for online stores with goods delivered within hours.

How do we implement the integration?

Tech stack: 1C-Bitrix CMS (infoblocks v2.0, ORM), PHP 8.1+, MySQL/MariaDB, tagged caching. We use the official EasyPay API: https://checkout.easypay.by/api/ (production) and https://sandbox.easypay.by/api/ (sandbox).

The handler is placed in /local/php_interface/include/sale_payment/easypay_belarus/. Payment initialization — POST to /api/v1/invoice with parameters:

{ "serviceId": "YOUR_SERVICE_ID", "accountNo": "BXORDER_45678", "amount": { "value": 7850, "currency": "BYN" }, "info": "Order No. 45678", "returnUrl": "https://shop.by/personal/order/detail/45678/", "notifyUrl": "https://shop.by/bitrix/tools/sale_ps_result.php", "expiredAt": "2024-12-20T18:00:00+03:00" } 

Amount in BYN kopecks. serviceId is issued upon connection. Response contains invoiceId and either paymentUrl (online card) or paymentCode (terminal code). Depending on the mode, the handler redirects to the URL or displays the code with instructions.

Notification processing: EasyPay sends POST to notifyUrl on successful payment:

{ "invoiceId": "ep_inv_112233", "accountNo": "BXORDER_45678", "status": "PAID", "amount": 7850, "currency": "BYN", "paidAt": "2024-12-19T15:22:41+03:00", "paymentMethod": "TERMINAL", "sign": "hmac_sha256_value" } 

paymentMethod can be CARD, TERMINAL, ERIP. Signature verification — HMAC-SHA256 of the string invoiceId + accountNo + amount + currency + secret. More details in documentation: HMAC.

What's included in the work?

  • Analysis and architecture design for your catalog
  • Development of a handler supporting cards, terminals, and ERIP
  • Template customization for displaying payment code with instructions
  • Implementation of JS status polling every 30 seconds
  • Handling expired invoices and order cancellation
  • Testing in EasyPay sandbox (card, terminal, expiry)
  • Preparing documentation and instructions for staff
  • Post-launch support — 2 weeks

Comparison of EasyPay payment modes

Mode Confirmation time Suitable for
Card online Instant Customers with cards
Terminal 5 to 120 minutes Customers without cards
ERIP Up to 24 hours Residents of Belarus

Typical mistakes when integrating on your own

  • Incorrect amount format (kopecks, not rubles) — EasyPay rejects the request.
  • Missing handling of EXPIRED status — orders stuck waiting.
  • Weak signature verification — risk of accepting fake notifications.
  • Ignoring timeouts — with terminal network delay, the buyer sees no update.

Why trust us with the integration?

We have over 50 payment system integrations with 1C-Bitrix in the last 5 years. We know all the pitfalls: from non-obvious EasyPay API features to proper tagged caching configuration. We guarantee the handler passes EasyPay moderation on the first try. You save up to 30% development costs compared to doing it yourself — you get a ready-made solution without the risk of errors. Contact us — we will evaluate your project in one day. Get a consultation on integrating EasyPay with your Bitrix store.

Timelines

Stage Time
Application submission and test access 2–5 business days
Handler and template development 2–4 days
Testing (card + terminal + expiry) 1–2 days
Activating production account 3–7 business days

Total: from 1 to 3 weeks turnkey. Cost is calculated individually — write to us and let's discuss.