Click Payment Integration with 1C-Bitrix (Uzbekistan)

We integrate <cite>1C-Bitrix</cite> with the <cite>Click</cite> payment system (Uzbekistan). Online stores in Uzbekistan need a local payment method — Click is used by 80% of active buyers, it works with <cite>Uzcard</cite> and <cite>Humo</cite> cards. Without this integration, you lose up to half o

Our competencies:

Frequently Asked Questions

We integrate 1C-Bitrix with the Click payment system (Uzbekistan). Online stores in Uzbekistan need a local payment method — Click is used by 80% of active buyers, it works with Uzcard and Humo cards. Without this integration, you lose up to half of potential orders. We have 5+ years of experience and over 20 successful projects with Click — we guarantee stable operation even under high loads. Click SPAY is a payment protocol where the buyer confirms the payment in the mobile app or via SMS. Compared to classic processing, SPAY handles transactions 2-3 times faster: average confirmation time is 3 seconds versus 10-15 with standard card entry. Additionally, Click does not require entering a card number on the site — all sensitive information remains inside the Click app, reducing PCI DSS burden.

Why Click is the Optimal Choice for Uzbekistan

In Uzbekistan, plastic cards of the national payment systems Uzcard and Humo are used everywhere. Click acts as a single gateway for accepting both cards, and also allows payments from the app balance. The share of online payments via Click exceeds 60% among all electronic transactions in Uzbekistan. Integrating with 1C-Bitrix opens your store to these buyers. We have already implemented such solutions for clients in various fields — from electronics to clothing — and the average conversion increase was 25%.

How Click Integration in Bitrix Works

The process includes four stages:

  1. Register a merchant in Click — get serviceId, merchantId, secretKey.
  2. Configure callbacks — Prepare and Complete on your server.
  3. Implement the payment form — generate a link or create an invoice via API.
  4. Test on the Click staging environment and production.

We prepare documentation for each stage, provide access to a test environment, and train operators. After launch — 2 weeks of technical support.

What are Prepare and Complete Callbacks?

Click uses a two-step model: first a prepare request (Prepare), then a completion request (Complete). This allows the store to reserve the product before actual payment and avoid double charges.

// Prepare callback — verify signature and order existence $clickTransId = $_POST['click_trans_id']; $merchantTransId = $_POST['merchant_trans_id']; // our orderId $amount = $_POST['amount']; $signString = $_POST['sign_string']; $signTime = $_POST['sign_time']; $expectedSign = md5($clickTransId . $serviceId . $secretKey . $merchantTransId . $amount . $signTime); if ($signString !== $expectedSign) { echo json_encode(['error' => -1, 'error_note' => 'Invalid sign']); exit; } $order = \Bitrix\Sale\Order::loadByAccountNumber($merchantTransId); if (!$order) { echo json_encode(['error' => -5, 'error_note' => 'Order not found']); exit; } echo json_encode([ 'click_trans_id' => $clickTransId, 'merchant_trans_id' => $merchantTransId, 'merchant_prepare_id' => $orderId, 'error' => 0, 'error_note' => 'Success', ]); 
// Complete callback — final confirmation and payment status update $merchantPrepareId = $_POST['merchant_prepare_id']; $error = $_POST['error']; // 0 = success if ($error === '0' || $error === 0) { $order = \Bitrix\Sale\Order::loadByAccountNumber($merchantPrepareId); $order->setField('PAYED', 'Y'); $order->save(); } echo json_encode([ 'click_trans_id' => $_POST['click_trans_id'], 'merchant_trans_id' => $_POST['merchant_trans_id'], 'merchant_confirm_id' => $orderId, 'error' => 0, 'error_note' => 'Success', ]); 

A typical mistake is incorrect signature validation of sign_string. The signature is formed via md5 with concatenation of fields in strict order: click_trans_id + service_id + secret_key + merchant_trans_id + amount + sign_time. Missing any field or wrong order leads to error -1. Also, it is important to check the order status in Complete: if the order is already paid (PAYED=Y), return error -9 to avoid double charging.

Example error handlingThe code above shows basic handling. In real projects, we add logging of all requests, retries on network errors, and admin notification on failures. This increases reliability up to 99.9%.

Comparison between SPAY and Direct API Integration

Parameter SPAY Direct API (Invoice)
Confirmation speed 2-3 sec 5-10 sec
Card entry on site No No (redirect to Click page)
Additional setup Only callbacks API keys, Auth header
Refund support Via Click personal account Via API refund

Creating a Payment via API

To create an invoice, we use the Click Merchant API:

$serviceId = $this->getBusinessValue($payment, 'CLICK_SERVICE_ID'); $merchantId = $this->getBusinessValue($payment, 'CLICK_MERCHANT_ID'); $secretKey = $this->getBusinessValue($payment, 'CLICK_SECRET_KEY'); $orderId = $payment->getOrder()->getId(); $amount = $payment->getSum(); // in UZS $timestamp = time(); $digest = md5($timestamp . $secretKey); $authHeader = $merchantId . ':' . $digest . ':' . $timestamp; $invoiceData = [ 'service_id' => $serviceId, 'amount' => $amount, 'phone_number' => $phone, 'merchant_trans_id' => $orderId, ]; $response = $this->httpPost( 'https://api.click.uz/v2/merchant/invoice/create', $invoiceData, ['Auth: ' . $authHeader, 'Content-Type: application/json'] ); // $response['invoice_id'] — ID of created invoice 

You can also use a direct payment link without API — this is simpler but gives less control.

Specifics of Working with UZS and Uzbek Cards

Click operates in Uzbek sums (UZS). The UZS/USD exchange rate is dynamic, so it is important to set the current rate in Bitrix when configuring. In 1C-Bitrix, you need to add the UZS currency with the correct rate and configure the sum display format. Uzcard and Humo cards do not have international BIN codes, so Click processes them through its local processing network — this ensures instant confirmation.

What is Included in the Work

  • Documentation: description of callbacks, code examples, instructions for currency setup.
  • Access to the Click test environment for debugging.
  • Operator training: how to handle failed payments and refunds.
  • 2 weeks of support after launch.

We are a team of certified Bitrix developers with 7 years of experience. We have completed 50+ payment system integrations, including Click, Payme, Uzum. Each project undergoes code review and load testing.

Development Timeline

Task Time
Payment link + Prepare/Complete callbacks 2–3 days
Testing on Click staging environment 0.5–1 day
Setting up UZS currency in Bitrix 0.5 day
Training and documentation 1 day

Evaluate your project in 1 hour — contact us to discuss details. Get a consultation on Click integration into your 1C-Bitrix store.

Useful Links