Счета Cashier: обзор
Счёт Cashier — это запрос на оплату, который Eleven Pay отправляет на телефон плательщика (в приложение Kaspi). Плательщик подтверждает платёж в приложении, Eleven Pay фиксирует расчёт и присылает вам подписанный вебхук payment.succeeded.
Пилотный режим · реальный приём платежей ещё недоступен
Счета Cashier работают только в окружении live и только для организаций, которым включён доступ (пилот). Без авторизации организации запрос завершится ошибкой 409 с кодом вида cashier_not_authorized или cashier_live_disabled. Тестовой «песочницы» с реальными платежами нет. Публичный адрес API не определён — задавайте ELEVENPAY_BASE_URL.
Eleven Pay — независимый сервис: он не принадлежит Kaspi.kz, не одобрен и официально не связан с Kaspi.kz. Название приложения упоминается только для описания того, где плательщик подтверждает платёж.
Как это работает
- Ваш сервер создаёт счёт:
POST /v1/cashier/invoicesсIdempotency-Key. Eleven Pay не обращается к провайдеру внутри запроса: оно ставит счёт в очередь и сразу отвечает (invoice_state: "queued"). - Фоновый процесс отправляет счёт плательщику. Состояние меняется:
queued→sending→sent. - Плательщик подтверждает платёж в приложении.
- Eleven Pay фиксирует расчёт ровно один раз и отправляет
payment.succeededна ваш вебхук. - Вы проверяете подпись, сверяете заказ/сумму/валюту и выдаёте товар один раз.
Вебхук — основной источник; GET /v1/cashier/invoices/{reference} — путь сверки и прогресса для вашей страницы.
Что есть и чего нет
| Есть | Нет (сейчас) |
|---|---|
POST /v1/cashier/invoices, GET /v1/cashier/invoices/{reference} | отмена, продление или «истечение» счёта |
Идемпотентность и уникальность merchant_order_id | возвраты для счетов Cashier |
Событие payment.succeeded | события «просрочен» / «не удался» для счетов |
| Телефон плательщика не возвращается в ответах и вебхуках | тестовые деньги / песочница |
Если нужна отмена по таймауту — это ваша логика: см. Статусы и поздние платежи.
Ограничения контракта
- Только валюта
KZT; сумма — целое число тенге, строка вида"1500.00". Дробная сумма отклоняется (422 amount_not_whole_tenge), не округляется. - Один заказ — один счёт: повторное создание для того же
merchant_order_idс другим ключом идемпотентности отклоняется409 cashier_order_not_unique. - Запрос не содержит поля организации, окружения или подключения: организация определяется ключом. Чужие данные адресовать нечем.
- Телефон: только цифры, 10–15. Формат (с кодом страны или без) определяет получатель-провайдер; допустимая национальная форма не подтверждена (UNKNOWN) — не «чините» номер, передавайте как ввёл плательщик, очистив только пробелы, дефисы, скобки и ведущий
+.
Дальше
- Создание счёта — запрос, ответ, коды ошибок.
- Статусы и поздние платежи — состояния, неопределённость, таймаут, сверка.
- Вебхуки · Идемпотентность
- Чек-лист перед запуском