Kaspi Pay invoice
из вашего кода.
Один SMS на ваш ИП-номер — и дальше выставляете удалённые счета программно: REST API, Telegram-бот, вебхуки с HMAC-SHA256. Подходит ботам, CRM, биллингу SaaS.
NEW proverkacheka.kz — проверка чеков Kaspi, та же подписка# Вы передаёте телефон клиента, товары и цены. # Счёт в Kaspi и статус оплаты — на нашей стороне. curl -X POST \ https://pay.proverkacheka.kz/api/v1/invoice/create \ -H "X-API-Key: $KEY" \ -H "Content-Type: application/json" \ -d '{ "phoneNumber": "87019009393", "comment": "Заказ #42", "items": [ { "name": "Капучино", "price": 1200, "count": 2 }, { "name": "Чизкейк", "price": 1800, "count": 1 } ] }'
Четыре шага от установки до первой оплаты.
SMS приходит на ваш собственный номер ИП или ТОО. Сессия живёт, пока вы не разлогинились или не вошли в Kaspi Pay на смартфоне — тогда мы возвращаем 412 kaspi_session_required и просим пройти SMS снова.
-
01
SMS-авторизация в Telegram-боте
Открываете @PayProverkaBot, отправляете номер ИП/ТОО, вводите код из SMS. Получаете персональный X-API-Key.
$ /login → 87019009393 → 123456 -
02
Выставляете счёт через API
POST на /v1/invoice/create с номером клиента и корзиной. В ответ — paymentId, по которому отслеживаете статус.
› phoneNumber + items[] ⟶ paymentId -
03
Клиент платит в один клик в Kaspi.kz
Клиенту приходит push в приложение Kaspi.kz. Он подтверждает оплату пальцем — комиссии стандартные эквайринговые, никаких посредников.
-
04
Вебхук с HMAC-подписью
Ваш сервер моментально получает payment.success с заголовком X-Webhook-Signature: sha256=.... Идемпотентный приёмник в две строки.
⟵ POST your-app/kaspi · 200 OK
Не «волшебный коннектор», а честный API.
Только то, что нужно для интеграции Kaspi Pay в существующий бизнес-софт. Без UI-конструкторов, без своих платёжных форм, без рекуррентов, которых у Kaspi нет.
POST /v1/invoice/create с корзиной 1–50 позиций. Возврат, отмена, история — отдельные эндпоинты.
Команда /invoice 87019009393 1500 Кофе — для случаев, когда счёт нужно выставить вручную, а не из кода.
Подписываем сырое тело общим секретом. Ретраи с экспоненциальным backoff до 24 часов. At-least-once.
Частичные и полные через /v1/invoice/{id}/refund. Несколько частичных по одному счёту разрешены.
Принимаем 87…, +7…, 77…, 7…, с пробелами и скобками. На вход в Kaspi уходит каноничный 8XXXXXXXXXX.
Если кто-то вошёл в Kaspi Pay на смартфоне — мгновенно 412 kaspi_session_required, никаких тихих сбоев.
Один запрос — один счёт.
Выберите свой стек. Все три примера делают одно и то же: создают счёт на 4 200 ₸ для клиента 87019009393 и возвращают paymentId.
import os, requests
API = "https://pay.proverkacheka.kz/api"
H = {"X-API-Key": os.environ["KASPI_API_KEY"]}
r = requests.post(f"{API}/v1/invoice/create", headers=H, json={
"phoneNumber": "87019009393",
"comment": "Заказ #42",
"items": [
{"name": "Капучино", "price": 1200, "count": 2},
{"name": "Чизкейк", "price": 1800, "count": 1},
],
})
r.raise_for_status()
payment_id = r.json()["paymentId"]
print("Счёт создан:", payment_id)
const API = "https://pay.proverkacheka.kz/api";
const res = await fetch(`${API}/v1/invoice/create`, {
method: "POST",
headers: {
"X-API-Key": process.env.KASPI_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
phoneNumber: "87019009393",
comment: "Заказ #42",
items: [
{ name: "Капучино", price: 1200, count: 2 },
{ name: "Чизкейк", price: 1800, count: 1 },
],
}),
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { paymentId } = await res.json();
console.log("Счёт создан:", paymentId);
curl -X POST https://pay.proverkacheka.kz/api/v1/invoice/create \
-H "X-API-Key: $KASPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phoneNumber": "87019009393",
"comment": "Заказ #42",
"items": [
{ "name": "Капучино", "price": 1200, "count": 2 },
{ "name": "Чизкейк", "price": 1800, "count": 1 }
]
}'
# → {"paymentId":"14918505280","amount":4200.0,"status":"RemotePaymentCreated"}
Три типа команд используют API.
У каждой — своя точка входа. Гайды на блоге показывают конкретные сценарии с кодом, который можно скопировать.
Разработчики Telegram-ботов
Принимаете оплату внутри бота. Поллинг для редких событий, вебхук — для нагрузки. Идемпотентность по (paymentId, event) в одной транзакции с эффектом.
Команды SaaS-биллинга
Тысячи счетов в день. Подписки, продление, частичные доплаты. Главное — корректная проверка HMAC-подписи (сырое тело, timing-safe сравнение) и replay-защита.
CRM-команды: Bitrix24, Kommo, amoCRM
Выставить счёт из карточки сделки, перевести в «Успешно» по вебхуку, прикрепить ссылку на чек. Middleware между CRM и API — пара десятков строк.
Свежие материалы.
Технические разборы, написанные людьми, которые сами интегрируют этот API в проде.
Вебхуки или поллинг: как правильно отслеживать оплату Kaspi Pay
Что выбрать для бота с одним пользователем, что — для SaaS с тысячами счетов, и почему вебхук не отменяет идемпотентности.
Проверка подписи вебхуков: HMAC-SHA256 без багов
HMAC от сырого тела, timing-safe сравнение, replay-защита. Готовые приёмники на Python, Node и Go с типичными ошибками.
Интеграция Kaspi Pay в Bitrix24, Kommo и amoCRM
Готовые сценарии: счёт из карточки сделки, перевод в «Успешно» по вебхуку, отправка чека клиенту — с примерами кода для middleware.
Счёт выставлен — чек проверен.
Этот API закрывает исходящую сторону: счёт уходит клиенту в Kaspi.kz. Входящую сторону закрывает наш второй сервис proverkacheka.kz — валидация чеков Kaspi по QR-коду и ИИН/БИН. Оба работают на одном Telegram-аккаунте и одной подписке.
Подписка одна на оба сервиса. Пока она активна, проверка чеков на proverkacheka.kz открыта по тому же Telegram-аккаунту — без второй регистрации, без ручной привязки и без отдельного счёта.
Если push не дошёл до клиента или вебхук потерялся, оплата не зависает: клиент присылает PDF-чек Kaspi, и proverkacheka.kz подтверждает платёж. Полный сценарий — в гайде о fallback.
Когда счёт становится Processed, мы резервируем QR{paymentId} на стороне proverkacheka.kz. Присланный позже PDF того же перевода вернётся как «уже обработан» — доступ или товар не выдадутся дважды.
Для чеков, пришедших мимо вашего счёта (перевод «на глазок», оплата в другом канале), proverkacheka.kz сверяет ИИН/БИН продавца и ловит повторно использованный чек.
Получите API-ключ за ~2 минуты.
Авторизация в Telegram-боте по SMS на ваш собственный номер ИП или ТОО. Бесплатно — платите только эквайринг Kaspi.
Открыть @PayProverkaBot →