Integrate bePaid with 1C-Bitrix for Belarusian Payments

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 t

Our competencies:

Frequently Asked Questions

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.