Документация Sezgir Pay
Sezgir Pay — платёжный шлюз поверх Kaspi Pay. Одним запросом вы создаёте платёж, покупатель оплачивает его в приложении Kaspi.kz, а ваш сервер получает подписанный вебхук. Деньги поступают напрямую на ваш счёт Kaspi.
Как это устроено
В кабинете вы заводите сервисы — интернет-магазин, бота, POS-терминал, мобильное приложение. У каждого сервиса свои API-ключи, вебхуки и платежи; сервисы не видят данные друг друга.
Каждый сервис привязан в кабинете к одному из подключённых кассиров Kaspi (Сервис → Настройки → «Кассир Kaspi»). Боевые платежи сервиса проводятся через этого кассира, и деньги зачисляются прямо на его счёт Kaspi — Sezgir Pay не хранит и не пересылает средства. Если сменить кассира, новые платежи пойдут на новый счёт, а уже созданные платежи и возвраты по ним останутся за прежним. Для API при этом ничего не меняется — те же ключи, запросы и вебхуки.
| Способ оплаты | Как платит покупатель | Когда использовать |
|---|---|---|
link | Открывает страницу оплаты Sezgir Pay и платит по QR или кнопкой «Открыть в Kaspi.kz» | Интернет-магазины, ссылки в мессенджерах и письмах |
qr | Сканирует QR, который вы показываете на своём экране | Кассы, киоски, экраны оплаты в приложении |
invoice | Получает счёт в приложении Kaspi.kz по номеру телефона и подтверждает его | Доставка, оплата по телефону, повторные клиенты |
Быстрый старт
Ниже — полный путь от ключа до оплаченного заказа в тестовом режиме. Деньги при этом не списываются.
Получите тестовый API-ключ
Откройте кабинет → Сервисы → ваш сервис → API-ключи и создайте ключ в тестовом режиме. Он начинается с
sk_test_и показывается один раз — сохраните его в переменной окружения:Терминалexport SEZGIR_API_KEY="sk_test_…"Создайте платёж
Платёжная ссылка — самый простой способ: вам не нужно рисовать QR, страницу оплаты Sezgir Pay берёт на себя. Сумма указывается в целых тенге.
curl https://pay.sezgir.com/api/v1/payments \ -H "Authorization: Bearer $SEZGIR_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: 9f1c2a4e-7b3d-4e8a-a1f0-5c6d7e8f9a0b" \ -d '{ "type": "link", "amount": 15000, "description": "Заказ №1042", "external_id": "order_1042", "metadata": { "order_id": 1042, "channel": "web" } }'В ответ придёт объект платежа в статусе
pending:Ответ · 201 Created{ "id": "pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws", "object": "payment", "livemode": false, "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy", "type": "link", "status": "pending", "amount": 15000, "amount_refunded": 0, "currency": "KZT", "description": "Заказ №1042", "phone": null, "external_id": "order_1042", "metadata": { "order_id": 1042, "channel": "web" }, "checkout_url": "https://pay.sezgir.com/pay/pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws", "provider": { "name": "test", "operation_id": null, "kind": null, "status": null, "qr_url": null, "qr_expires_at": null }, "failure_reason": null, "requires_review": false, "expires_at": "2026-11-01T09:14:03.512Z", "paid_at": null, "canceled_at": null, "created_at": "2026-10-25T09:14:03.512Z" }Отправьте покупателя на страницу оплаты
Перенаправьте покупателя на
checkout_urlили отправьте ссылку в мессенджер. На странице он увидит название вашего сервиса, сумму и кнопку оплаты через Kaspi.kz. В тестовом режиме там же есть кнопки «Оплатить» и «Отклонить» — нажмите «Оплатить».Получите вебхук и выполните заказ
Добавьте URL вебхука в кабинете (Сервис → Вебхуки). После оплаты на него придёт событие
payment.succeededс объектом платежа. Проверьте подпись, найдите заказ поexternal_idилиmetadataи отметьте его оплаченным. Подробно — в разделе Вебхуки.Перейдите в боевой режим
Убедитесь, что к сервису привязан подключённый кассир Kaspi, создайте ключ
sk_live_и боевой вебхук с адресомhttps://. Код менять не нужно — режим определяется ключом.
Основы API
| Базовый URL | https://pay.sezgir.com/api/v1 |
| Формат | JSON в запросах и ответах, кодировка UTF-8. Для POST с телом передавайте Content-Type: application/json. |
| Аутентификация | Секретный ключ в заголовке Authorization: Bearer sk_… — см. Аутентификация. |
| Суммы | Целые тенге (KZT), от 1 до 50 000 000. Тиыны не поддерживаются: 10.5 вернёт ошибку. |
| Идентификаторы | Строки с префиксом: pay_ — платёж, re_ — возврат, evt_ — событие, prj_ — сервис. |
| Время | Поля *_at — ISO 8601 в UTC; created у событий — Unix-время в секундах. |
| Режимы | Тестовые и боевые данные полностью разделены: ключ sk_test_ видит только тестовые платежи. |
| Лимит запросов | 300 запросов в минуту на ключ; сверх лимита — 429 rate_limited. |
checkout_url или QR.Что дальше
Чек-лист надёжной интеграции:
- передавайте Idempotency-Key при создании платежей и возвратов и повторяйте запрос с тем же ключом при сетевой ошибке;
- подтверждайте заказы по вебхуку
payment.succeeded, а не по возврату покупателя со страницы оплаты; - будьте готовы к
payment.succeededв любой момент — даже послеexpiredилиcanceled(см. поздняя оплата); - обрабатывайте ошибки по полям
typeиcode, а не по тексту сообщения.