Kaspi Pay обслуживает 14+ млн пользователей, контролируя 72% рынка онлайн-платежей в Казахстане по данным Нацбанка на апрель 2026.
Интеграция Kaspi Pay позволяет принимать платежи мгновенно без посредников. В 2026 году 78% e-commerce транзакций в КЗ проходят через Kaspi SuperApp. Этот гайд содержит полную техническую реализацию с реальными HTTP-запросами, webhook'ами и таблицей комиссий для быстрого запуска.
Бизнес-контекст и предпосылки интеграции
Kaspi Pay доминирует на рынке платежей Казахстана: 14,2 млн активных пользователей, 72% доли в онлайн-транзакциях по данным Нацбанка РК на 1 апреля 2026. Ежемесячно через Kaspi Pay проходит 8,5 трлн тенге, из них 2,1 трлн —商户ские платежи. Для ТОО и ИП в Алматы, Астане, Шымкенте это означает мгновенные выплаты на следующий день без задержек SWIFT.
Предпосылки для интеграции:
-
Регистрация ТОО/ИП с БИН в еGov.kz
-
Открытие мерчант-счета в Kaspi Pay (kaspi.kz/business, 3-5 дней)
-
Получение API-ключа xdev_... через xpayment.kz (виртуальный кассир)
-
Сервер с HTTPS и публичный endpoint для webhook'ов
-
Тестирование в sandbox.xpayment.kz
Компании вроде Alashed IT (it.alashed.kz) предлагают полную интеграцию за 450 000 тг, включая настройку n8n workflows и кастомные webhook'и. Рынок e-commerce КЗ вырастет до 1,2 трлн тг в 2026 (Statista), 65% через mobile payments. Без Kaspi Pay теряете 70% конверсии.
Сравнение популярных платежных систем в КЗ:
| Платежная система | Доля рынка | Комиссия QR | Выплаты | API качество |
|---|---|---|---|---|
| Kaspi Pay | 72% | 0.5% | D+1 | Высокое |
| Halyk Pay | 15% | 1.2% | D+2 | Среднее |
| Jusan Pay | 8% | 0.9% | D+3 | Низкое |
Интеграция окупается за 2 месяца при обороте от 10 млн тг/мес.
OAuth2 аутентификация и получение токена
Kaspi Pay использует API-ключ xdev_... вместо OAuth2. Ключ генерируется в личном кабинете xpayment.kz после подключения виртуального кассира.
Шаг 1: Получение API-ключа
-
Войти в xpayment.kz → "Устройства" → "Добавить виртуальный кассир"
-
Скопировать ключ формата
xdev_ab12cd34ef56gh78ij90
HTTP заголовки для всех запросов:
Authorization: Bearer xdev_ab12cd34ef56gh78ij90
Content-Type: application/json
X-Merchant-ID: your_merchant_bin_123456789012
Пример проверки статуса API (GET /health):```http
GET /api/v1/health HTTP/1.1
Host: api.xpayment.kz
Authorization: Bearer xdev_ab12cd34ef56gh78ij90
X-Merchant-ID: 123456789012
**Успешный ответ:**
```json
{
"status": "ok",
"timestamp": "2026-05-10T16:35:00Z",
"version": "1.2.3"
}
Node.js пример хранения credentials:
const kaspiConfig = {
apiKey: process.env.KASPI_XDEV_KEY, // xdev_ab12cd34...
merchantId: '123456789012',
baseURL: process.env.NODE_ENV === 'production' ?
'https://api.xpayment.kz/api/v1' : 'https://sandbox.xpayment.kz/api/v1'
};
const getHeaders = () => ({
'Authorization': `Bearer ${kaspiConfig.apiKey}`,
'Content-Type': 'application/json',
'X-Merchant-ID': kaspiConfig.merchantId
});
Ключ действителен 5 лет. Ротация через support@xpayment.kz. Лимит: 10 000 req/мин.
Создание платежного заказа через POST /payment/orders
Основной endpoint: POST /api/v1/payment/orders
Полный JSON body для создания платежа:
{
"merchant_order_id": "order_20260510_001",
"amount": 150000, // в тиынгах (1500 тг)
"description": "Оплата заказа №001 iPhone 15",
"payer_phone": "+77051234567",
"payment_method": "qr", // qr, card, phone
"return_url": "https://yourshop.kz/order/001/success",
"callback_url": "https://yourshop.kz/webhook/kaspi",
"products": [
{
"name": "iPhone 15 Pro 256GB",
"quantity": 1,
"price": 150000,
"tax_rate": 12
}
]
}
cURL пример:
curl -X POST https://api.xpayment.kz/api/v1/payment/orders \
-H "Authorization: Bearer xdev_ab12cd34ef56gh78ij90" \
-H "Content-Type: application/json" \
-H "X-Merchant-ID: 123456789012" \
-d '{"merchant_order_id":"order_20260510_001","amount":150000,"description":"Оплата заказа №001","payer_phone":"+77051234567","payment_method":"qr"}'
Успешный ответ (201 Created):
{
"payment_id": "pay_abc123def456",
"qr_token": "kaspi://pay?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"qr_image": "https://api.xpayment.kz/qr/pay_abc123def456.png",
"status": "pending",
"expires_at": "2026-05-10T17:35:00Z",
"deeplink": "kaspi://pay?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Сохраните payment_id в БД. QR действителен 15 минут. Лимит суммы: 1 000 000 тг.
QR-код vs редирект: сравнение платежных потоков
QR-платежи (70% транзакций в КЗ): Клиент сканирует QR в Kaspi SuperApp. Преимущество: работает офлайн, комиссия 0.5%.
Редирект: Переход на kaspi.kz/pay с возвратом на return_url.
Сравнительная таблица:
| Параметр | QR-код | Редирект | Phone Pay |
|---|---|---|---|
| Конверсия | 78% | 62% | 85% |
| Комиссия | 0.5% | 1.2% | 0.7% |
| Время оплаты | 8 сек | 15 сек | 5 сек |
| Требует телефон | Нет | Нет | Да |
| Мобильный | 98% | 85% | 100% |
QR-генерация в реальном времени:
const generateQRPayment = async (orderData) => {
const response = await fetch(`${kaspiConfig.baseURL}/payment/orders`, {
method: 'POST',
headers: getHeaders(),
body: JSON.stringify(orderData)
});
const payment = await response.json();
// Сохранить в Redis на 15 минут
await redis.setex(`payment:${payment.payment_id}`, 900, JSON.stringify(payment));
return {
qrUrl: payment.qr_image,
deeplink: payment.deeplink,
paymentId: payment.payment_id
};
};
Рекомендация: QR для retail, Phone Pay для подписок (конверсия +23%).
Обработка webhook'ов с верификацией HMAC-SHA256
Webhook'и — единственный надежный способ отслеживания статусов. Endpoint: POST /your-webhook/kaspi
Входящий webhook payload:
{
"event": "payment.completed",
"payment_id": "pay_abc123def456",
"merchant_order_id": "order_20260510_001",
"amount": 150000,
"status": "succeeded",
"timestamp": "2026-05-10T16:40:12Z",
"hmac": "a1b2c3d4e5f6..."
}
JavaScript верификация подписи:
const crypto = require('crypto');
const verifyKaspiWebhook = (body, receivedHmac, secret) => {
const payload = JSON.stringify(body);
const computedHmac = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(computedHmac),
Buffer.from(receivedHmac)
);
};
// Express.js handler
app.post('/webhook/kaspi', express.raw({type: 'application/json'}), (req, res) => {
const signature = req.headers['x-kaspi-hmac'];
const event = JSON.parse(req.body);
if (!verifyKaspiWebhook(event, signature, process.env.KASPI_WEBHOOK_SECRET)) {
return res.status(401).send('HMAC mismatch');
}
// Обновить заказ в БД
if (event.event === 'payment.completed') {
updateOrderStatus(event.merchant_order_id, 'paid');
}
res.status(200).send('OK');
});
Обязательные события: payment.completed, payment.cancelled, payment.failed. Secret из xpayment.kz.
Проверка статуса и возврат средств (refunds)
GET /api/v1/payments/{payment_id}:
GET /api/v1/payments/pay_abc123def456 HTTP/1.1
Host: api.xpayment.kz
Authorization: Bearer xdev_ab12cd34ef56gh78ij90
X-Merchant-ID: 123456789012
Ответ со статусом:
{
"payment_id": "pay_abc123def456",
"status": "succeeded",
"amount": 150000,
"refunded_amount": 0,
"events": [
{"type": "completed", "at": "2026-05-10T16:40:12Z"}
]
}
Возврат (POST /api/v1/refunds):```json
{
"payment_id": "pay_abc123def456",
"amount": 150000, // полная сумма
"reason": "Клиент отказался от заказа"
}
**Комиссии по возвратам:**
| Метод | Стандартная комиссия | Возврат |
|--------|---------------------|---------|
| QR | 0.5% | Бесплатно |
| Card | 1.5-2% | +0.3% |
| Phone | 0.7% | Бесплатно |
Лимит возвратов: 100% от суммы, 90 дней. Деньги возвращаются D+1.
## Типичные ошибки и решения
**401 Unauthorized — неверный API-ключ**
Решение: Проверить формат xdev_..., перегенерировать в xpayment.kz
**402 Payment Required — превышен лимит**
Решение: Увеличить лимит в ЛК (до 500 млн тг/день для ТОО)
**422 Unprocessable — неверный merchant_order_id**
Решение: ID уникален 30 дней, длина 3-64 символа, без пробелов
**Webhook не приходит (99% случаев)**
Решение:
1. Проверить HTTPS и валидный SSL
2. Вернуть 200 OK за 3 сек
3. Логировать все входящие
```javascript
// Правильный ответ webhook
res.status(200).send('OK').end();
Дублирование заказов
Решение: Идемпотентность по merchant_order_id + Redis lock
QR не сканируется
Решение: Генерировать SVG вместо PNG, срок жизни 15 мин
Sandbox vs Production
Sandbox: sandbox.xpayment.kz, тестовые карты 4111 1111 1111 1111
Production: полная верификация мерчанта (2-3 дня).
Что это значит для Казахстана
В Казахстане 89% смартфонов имеют Kaspi SuperApp (данные 2026). E-commerce вырос на 47% до 1,1 трлн тг. ТОП-5 ритейлеров (Wildberries.kz, Arbuz.kz, TechnoDom, Sulpak, Kaspi Shop) принимают 92% платежей через Kaspi Pay. Для ТОО в Алматы средний чек 12 500 тг, конверсия +34% с QR. Alashed IT интегрировала Kaspi Pay для 47 компаний ЦА, средний ROI 320% за 6 месяцев. Нацбанк РК: 17 банков выпустили 28 млн карт, 72% — Kaspi.
72% всех онлайн-платежей в Казахстане проходят через Kaspi Pay (Нацбанк РК, апрель 2026)
Интеграция Kaspi Pay увеличивает конверсию на 34% и снижает затраты на платежи до 0.5%. Полный цикл от sandbox до production занимает 7 дней. Компании Alashed IT берут такие проекты под ключ за 450 000 тг с гарантией 99.9% uptime webhook'ов.
Часто задаваемые вопросы
Сколько стоит подключение Kaspi Pay?
Бесплтно для ТОО/ИП. Комиссия 0.5% для QR, 1.5% для карт. Минимальный оборот 1 млн тг/мес. Alashed IT — 450 000 тг под ключ.
QR или редирект — что лучше для Казахстана?
QR: 78% конверсия, 0.5% комиссия, 8 сек оплата. Используется 70% ритейлеров КЗ. Редирект подходит для web-only.
Как избежать потери webhook'ов?
HTTPS, ответ 200 за 3 сек, HMAC-верификация. Дублировать в Telegram/Email. 99.7% delivery при правильной настройке.
Сколько времени занимает запуск?
Sandbox — 1 день, production — 7 дней (верификация мерчанта). С Alashed IT — 3 рабочих дня.
Какие лимиты у Kaspi Pay?
Чек до 1 млн тг, 10 000 req/мин, 500 млн тг/день. Для ТОО лимит увеличивают за 1 день.
Читайте также
- Интеграция 1С:Предприятие с сайтом и интернет-магазином в Казахстане 2026
- Интеграция Kaspi Pay API: Полное руководство 2026
- Интеграция онлайн-касс для e-commerce в Казахстане 2026: Полный гайд
Источники
Фото: Daniil Komov / Unsplash