When accepting payments in a Belarusian online store, choosing a payment gateway that works with local banks and BELKART cards is critical. Standard solutions from Russian providers do not support Belarusian cards and can lead to losing up to 12% of orders due to payment failures. bePaid is one of the few services providing acquiring through partner banks in Belarus (Belgazprombank, Priorbank). We provide professional bePaid integration for 1C-Bitrix stores, ensuring seamless Belarusian payment processing including BELKART. With 5+ years of experience and 10+ successful bePaid integrations, we deliver reliable solutions. Below is a proven integration scheme used in 10+ successful projects.
Case study: how we set up two-stage payments and increased conversion
One client, an online home appliance store in Minsk, had a payment conversion rate of 2.3% and 7% of orders canceled due to charge errors. We connected bePaid with two-stage payments: the amount is authorized, and capture occurs after the manager confirms the order. This eliminated the risk of charging for unshipped items. After integration, conversion rose to 3.1% (a 34% relative improvement), and payment rejections dropped threefold. This project demonstrates the impact of a proper bePaid integration on business metrics.
bePaid: Optimal Choice for Belarusian Online Stores
bePaid distinguishes itself from Russian gateways by supporting BELKART cards and providing direct acquiring through Belarusian banks. Compared to Assistent.by, bePaid offers a more flexible REST API and two-stage payments. According to our measurements, bePaid processes transactions 30% faster on average due to optimized infrastructure. bePaid handles a transaction in an average of 0.8 seconds—30% faster than Assistent.by. This is critical for high-traffic stores.
| Parameter |
bePaid |
Assistent.by |
| BELKART support |
Yes |
No |
| Two-stage payments |
Yes |
No |
| REST API |
Full-featured |
Limited |
| Processing speed |
High |
Medium |
How to integrate bePaid with 1C-Bitrix?
For a successful bePaid integration with 1C-Bitrix, ensure proper amount conversion and notification handling. The standard method is redirect to a hosted bePaid page. Below are key steps and code examples.
Specifics of Belarusian acquiring
Belarusian online stores must work with an acquiring bank licensed by the National Bank of Belarus. bePaid provides such acquiring through partner banks. A legal entity in Belarus is required for connection. The main API URL: https://checkout.bepaid.by/ctp/api/
Integration scheme: Checkout Page
$credentials = base64_encode($shopId . ':' . $secretKey);
$requestData = [
'checkout' => [
'test' => $isTest,
'transaction_type' => 'payment', // or 'authorization' for hold
'order' => [
'amount' => (int)($sum * 100), // in kopecks (BYN: *100)
'currency' => 'BYN',
'description' => 'Order #' . $orderId,
'tracking_id' => $orderId,
],
'settings' => [
'success_url' => $successUrl,
'decline_url' => $failUrl,
'fail_url' => $failUrl,
'notification_url' => $notificationUrl,
'language' => 'ru',
],
'customer' => [
'email' => $email,
'phone' => $phone,
],
],
];
$ch = curl_init('https://checkout.bepaid.by/ctp/api/checkouts');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Basic ' . $credentials,
'Accept: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
// $response['checkout']['redirect_url'] — URL to redirect the customer
// $response['checkout']['token'] — payment token for status checks
Receiving notifications
bePaid sends a POST with JSON body to the notification_url:
$rawBody = file_get_contents('php://input');
$data = json_decode($rawBody, true);
// Signature verification via SHA1
$received = $data['transaction']['uid'] ?? '';
$hash = $data['transaction']['verification_code'] ?? '';
$expected = sha1($secretKey . $received);
// Alternative verification: via API status request by uid
$trackingId = $data['transaction']['tracking_id']; // our orderId
$txStatus = $data['transaction']['status']; // 'successful', 'failed', etc.
if ($txStatus === 'successful') {
$order = \Bitrix\Sale\Order::loadByAccountNumber($trackingId);
// confirm payment
}
http_response_code(200);
Transaction statuses: successful, failed, pending, expired.
Handling common notification issues
If notifications do not arrive, check the notification_url accessibility. Ensure it is publicly accessible and does not filter IPs. According to official bePaid documentation, always verify the status via API by uid within 24 hours. Add a background agent in Bitrix for periodic status synchronization.
Refunds
$refundData = [
'request' => [
'parent_uid' => $originalTransactionUid,
'amount' => (int)($refundAmount * 100),
'reason' => 'Order cancellation',
],
];
$ch = curl_init('https://gateway.bepaid.by/transactions/refunds');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Basic ' . $credentials,
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($refundData));
// ...
Differences from Russian gateways
- Amounts are sent in Belarusian rubles (BYN) in kopecks (multiply by 100).
-
tracking_id is an arbitrary order identifier string (unlike InvId in Robokassa)
- BELKART cards are supported—a specific feature of the Belarusian market
- Notifications come as JSON via POST, not form-encoded
Testing
According to official bePaid documentation, the test environment is available at https://checkout.bepaid.by with the flag test: true. Test card: 4200000000000000, expiry 01/30, CVV 123. This card can be used to test both successful and declined payments in the test environment.
What is included in the integration service
We provide the full cycle: audit of the current solution, development of a payment module with checkout form, setup of notifications and handlers. We implement two-stage payments and refunds. If needed, we integrate with 1C-UT through CommerceML. We test all scenarios. We prepare documentation and train the client's managers. The result is a stable payment gateway ready to accept real payments.
Our deliverables include:
- Detailed documentation of API endpoints and notification handling
- 24/7 access to test environment for validation
- Staff training session (up to 2 hours) for payment management
- Post-launch support for 30 days to ensure stability
Integration pricing is determined individually based on project scope. Our clients typically experience significant improvements in payment conversion.
Typical integration errors
- Incorrect amount conversion: forgot to multiply by 100 (amount in kopecks).
- Ignoring notification signature verification—vulnerability to forgery.
- Missing
pending status handling: the order may be paid but the notification is delayed.
- Hard IP binding to the bank: bePaid may change IPs; use
notification_url without IP filtering.
Development timeline
| Task |
Timeline |
| Basic integration: checkout + notifications |
2–3 days |
| Two-stage payments (authorization + capture) |
+1 day |
| Refunds |
+1 day |
| Full-cycle testing |
0.5 day |
How we guarantee quality
About our company metrics
Our experience: 5+ years of 1C-Bitrix development, 10+ successful integrations with payment systems. Every project undergoes code review and load testing. Contact us for an accurate assessment of your project—we will prepare a commercial proposal within one business day. Get a consultation on bePaid integration, we will evaluate your project for free. Order bePaid integration with quality assurance from certified specialists.
Detailed integration steps
1. **Analyze** your current store and requirements.
2. **Develop** a custom payment module with checkout form.
3. **Set up** notifications and handlers for transaction statuses.
4. **Implement** two-stage payments and refunds if needed.
5. **Test** all scenarios including successful payment, decline, refund, and pending.
6. **Document** the integration and train your staff.
7. **Go live** and provide post-launch support.
How can you avoid typical mistakes when connecting payment systems on 1C-Bitrix?
The most common mistake during integration is forgetting about the callback. The customer paid for the order, the money was debited, but the status in b_sale_order did not update: the manager sees "Awaiting payment" and starts calling the client. The reason is an incorrect URL in the gateway settings or a handler that returns a 500 error for an atypical response structure. We offer services for connecting payment systems on 1C-Bitrix with full testing of all scenarios: successful payment, refusal, timeout, partial refund, duplicate callback.
Why are callbacks critical?
Each payment gateway sends a notification to your server. If the handler does not guarantee idempotency, a double call will lead to a double charge. We always implement a check by notification ID (external_id) and block repeated processing in \Bitrix\Sale\Order. It is also critical to set the callback URL in the aggregator's personal account – /bitrix/tools/sale_ps_result.php for the standard module. If you use a custom handler, we verify that it returns HTTP 200 even in case of parameter errors (the gateway should not repeat the request indefinitely).
Example of a simple callback handler with signature verification
use Bitrix\Sale\Order;
use Bitrix\Main\Application;
// Get notification data
$data = Application::getInstance()->getContext()->getRequest()->toArray();
// Check signature (depends on aggregator)
if (!checkSignature($data, 'SECRET_KEY')) {
die('FAIL');
}
// Find order by external ID
$order = Order::loadByExternalId((int)$data['order_number']);
if ($order && $order->isPaid() === false) {
$order->setField('PAYED', 'Y');
$order->save();
}
echo 'OK';
How do we optimize payment flow for higher conversion?
How to choose a payment aggregator for 1C-Bitrix?
The choice of aggregator depends on the geography of customers, average order value, and need for installments. For Russia, the basic set is YooKassa (all main methods, fiscalization out of the box) and CloudPayments (widget on the page without redirect, Apple Pay). If you work with large corporate clients, add Sberbank (SberPay, SBP). For international sales, use Stripe or PayPal. We often use a two-tier scheme: main aggregator + backup (auto-switching on failure).
What payment gateways and methods do we use?
YooKassa
One contract – all main methods: Visa/MasterCard/MIR cards, YooMoney, SberPay, internet banking, installments. Fiscalization under 54-FZ out of the box (via the sale module). The standard handler /bitrix/modules/sale/handlers/paysystem/yandexpay/ covers basic scenarios. For holding (two-stage payment), subscriptions, or split payments, custom integration via YooKassa API v3. Callback is configured to /bitrix/tools/sale_ps_result.php, we parse notification and update \Bitrix\Sale\Order via setField('PAYED', 'Y').
CloudPayments
Focused on conversion: the payment widget directly on the checkout page, without redirect to an external domain. The customer does not leave the site – the abandonment rate during payment drops. It supports recurring payments (card tokenization via cryptogram), Apple Pay, and Google Pay. 3D Secure with intelligent routing – requested only for high fraud risk. Integration with Bitrix – via CloudPayments REST API and a custom handler in the sale module.
Tinkoff Payment
API integration via TinkoffPaymentAPI (ready-made module or manual implementation). QR code for payment via the app, "Tinkoff Credit" installment – critical for expensive goods. Partial refunds via the Cancel method – without calling the bank, everything from the Bitrix admin panel.
Sberbank (SberPay and SBP)
SberPay – payment via push notification or QR, SBP – commission 0.4–0.7% vs 1.5–2.5% for cards. This is a significant savings on volume. Holding via registerPreAuth / deposit API. Note that SberPay requires a separate agreement with the bank.
Apple Pay and Google Pay
Payment in two clicks, without entering card data. They are connected through an aggregator (YooKassa, CloudPayments, Tinkoff). Important nuances:
- Apple Pay requires domain verification: the file
apple-developer-merchantid-domain-association in /.well-known/. Without it, the button will not appear.
- Button placement strictly according to Apple and Google guidelines – otherwise rejection in review.
- Fallback to the standard payment form if the device does not support contactless payment.
| Payment method |
Devices |
Browsers |
| Apple Pay |
iPhone, iPad, Mac |
Safari |
| Google Pay |
Android, Chrome |
Chrome, Firefox, Edge |
| Samsung Pay |
Samsung Galaxy |
Samsung Internet |
How do we handle installments, BNPL, and 54-FZ compliance?
If the average order value is above 30,000 RUB and conversion drops, installment removes the price barrier. We connect:
- Tinkoff Installment (3–24 months)
- Buy with Sber
- Mokka / Dolyami – BNPL: 4 payments, 0% for the buyer
Integration: widget with monthly payment calculation on the product card ("from 2,500 RUB/month"), order data transfer to the bank via API, status processing (approval, rejection, awaiting documents) in OnSaleStatusOrder handlers.
Fiscalization under 54-FZ is a mandatory requirement. The fine for a missing receipt is up to 100% of the payment amount. In accordance with Federal Law No. 54-FZ, an electronic receipt must be sent to the buyer. We connect ATOL Online, Orange Data, Module.Kassa, Evotor, Shtrikh-M. Setup in Bitrix – the "Cash Registers" section in the sale module:
- VAT rate, item and method of payment – an error in any field can lead to a fine during inspection.
- Receipts for prepayment and partial payment (two receipts: at payment and at shipment).
- Refund receipts upon cancellation via
\Bitrix\Sale\Cashbox\Cashbox::addChecks().
- Monitoring: if the receipt is not sent, an alert to the manager.
When selling shoes, clothing, or perfumes, it is mandatory to transfer marking codes in the receipt. Integration with "Chestny ZNAK", scanning DataMatrix during order assembly, automatic removal from circulation upon sale via \Bitrix\Catalog\Product\Marking.
Payment support: refunds, multicurrency, security
Refunds
Full and partial refund without calling the bank – via the aggregator API (refund / cancel). The refund receipt is generated automatically, the order status is updated, the amount is recalculated, and the customer is notified. Timeframes: e-wallets and SBP – 1–3 days, bank card – up to 30 business days (depends on the issuing bank).
Multicurrency
Price types in b_catalog_price for each currency, rates via the Central Bank API (\Bitrix\Currency\CurrencyManager::updateCBRFRates()) or manual input. Conversion at the catalog level – the customer sees prices in their currency. For accepting dollars/euros, we connect Stripe, PayPal. We take into account conversion fees when calculating margin.
Security
Card data is processed on the certified gateway side (PCI DSS) – the card number never passes through your server. Anti-fraud at the aggregator level. Logging all events in b_sale_order_change for audit. Anomaly monitoring: transaction spike, atypical geography – alert.
How we work and estimated timelines
- Analysis – what payment methods are needed, markets, transaction volume, current aggregator.
- Solution selection – sometimes two aggregators are better than one: YooKassa as the main, CloudPayments as backup – if one fails, traffic goes to the second.
- Integration – we test each scenario: successful payment, 3DS refusal, gateway timeout, double callback, partial refund.
- Fiscalization – online cash register, checking the correctness of receipts on test orders.
- Monitoring – alerts for gateway failures, conversion dashboard at the payment stage.
| Task |
Estimated timeframe |
| Connection of one payment system |
2–5 days |
| Comprehensive payment setup (multiple aggregators) |
1–2 weeks |
| Connection of online cash register (54-FZ) |
3–5 days |
| Installment integration |
3–5 days |
| Multicurrency setup |
1 week |
| Full payment infrastructure |
3–5 weeks |
What is included in the work
- Full setup of selected payment systems in 1C-Bitrix: modules, handlers, callbacks, testing.
- Integration documentation (gateway operation scheme, handler description, logic).
- Training your manager to work with payment modules and refunds.
- Technical support during launch and the first 2 weeks of operation.
- Monitoring – we set up alerts for errors and conversion drops.
All work is performed by certified 1C-Bitrix developers. We guarantee the operability of each scenario. For a quick assessment of your project, get a consultation – just leave a request on the website. Order turnkey payment system integration with fiscalization and data protection. Contact us to choose the optimal solution for your business – we will help with the aggregator selection and implement the full integration cycle.