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.

Предпосылки для интеграции:

  1. Регистрация ТОО/ИП с БИН в еGov.kz

  2. Открытие мерчант-счета в Kaspi Pay (kaspi.kz/business, 3-5 дней)

  3. Получение API-ключа xdev_... через xpayment.kz (виртуальный кассир)

  4. Сервер с HTTPS и публичный endpoint для webhook'ов

  5. Тестирование в 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 Pay72%0.5%D+1Высокое
Halyk Pay15%1.2%D+2Среднее
Jusan Pay8%0.9%D+3Низкое

Интеграция окупается за 2 месяца при обороте от 10 млн тг/мес.

OAuth2 аутентификация и получение токена

Kaspi Pay использует API-ключ xdev_... вместо OAuth2. Ключ генерируется в личном кабинете xpayment.kz после подключения виртуального кассира.

Шаг 1: Получение API-ключа

  1. Войти в xpayment.kz → "Устройства" → "Добавить виртуальный кассир"

  2. Скопировать ключ формата 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 день.

Читайте также

Источники

Фото: Daniil Komov / Unsplash