1C-Bitrix Integration with Click Payment System (Uzbekistan)
Click is the largest payment service in Uzbekistan. It is used for payments via Uzcard and Humo cards (local Uzbek payment systems), as well as through the Click mobile application. For online stores, it operates in SPAY (Shopping) mode: the customer selects Click payment, enters their phone number, and confirms in the app or via SMS.
Click SPAY Workflow
- Store sends a payment creation request via Click API
- Customer receives a Push notification or SMS with the amount
- Confirms in the Click application
- Click notifies the store of the result
- Store updates the order status
API Integration
Click provides two APIs:
Merchant API — for creating payment forms and checking statuses. Base URL: https://api.click.uz/v2/merchant/
Prepare/Complete callbacks — Click notifies about payment preparation and completion via POST to the store's URL.
Authorization: serviceId + merchantId + signature based on merchantUserId and secretKey.
Payment Formation
$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 (Uzbek sum)
// Generate payment link (without API — via direct link)
$payUrl = sprintf(
'https://my.click.uz/services/pay?service_id=%s&merchant_id=%s&amount=%s&transaction_param=%s&return_url=%s',
$serviceId,
$merchantId,
$amount,
$orderId,
urlencode($returnUrl)
);
// Or via invoice creation API
$timestamp = time();
$digest = md5($timestamp . $secretKey);
$authHeader = $merchantId . ':' . $digest . ':' . $timestamp;
$invoiceData = [
'service_id' => $serviceId,
'amount' => $amount,
'phone_number' => $phone, // customer 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'] — invoice ID
Processing Prepare Callback
Click first sends Prepare (payment preparation), then Complete (completion). Both are POST requests:
// Prepare
$clickTransId = $_POST['click_trans_id'];
$merchantTransId = $_POST['merchant_trans_id']; // our orderId
$amount = $_POST['amount'];
$signString = $_POST['sign_string'];
$signTime = $_POST['sign_time'];
// Signature verification
$expectedSign = md5($clickTransId . $serviceId . $secretKey . $merchantTransId . $amount . $signTime);
if ($signString !== $expectedSign) {
echo json_encode(['error' => -1, 'error_note' => 'Invalid sign']);
exit;
}
// Check if order exists
$order = \Bitrix\Sale\Order::loadByAccountNumber($merchantTransId);
if (!$order) {
echo json_encode(['error' => -5, 'error_note' => 'Order not found']);
exit;
}
// Response to Prepare
echo json_encode([
'click_trans_id' => $clickTransId,
'merchant_trans_id' => $merchantTransId,
'merchant_prepare_id' => $orderId,
'error' => 0,
'error_note' => 'Success',
]);
// Complete
$merchantPrepareId = $_POST['merchant_prepare_id'];
$error = $_POST['error']; // 0 = success
if ($error === '0' || $error === 0) {
$order = \Bitrix\Sale\Order::loadByAccountNumber($merchantPrepareId);
// setPaid('Y'), 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',
]);
Uzbek Market Characteristics
- Amounts in Uzbek sum (UZS). As of early 2026, 1 USD ≈ 12,800 UZS. For an amount of 500,000 UZS — approximately 39 USD. Ensure UZS currency is correctly configured in Bitrix
- Uzcard and Humo cards are local cards without international BIN code. Click processes them through its own processing network
- Click application is installed by most active customers in Uzbekistan — a familiar payment method
Development Timeline
| Task | Timeline |
|---|---|
| Payment link + Prepare/Complete callbacks | 2–3 days |
| Testing on Click test environment | 0.5–1 day |
| UZS currency configuration in Bitrix | 0.5 day |







