# Оплата не приходит покупателю

> Счёт создан, но на телефон покупателя ничего не пришло или QR не открывается. Чаще всего причина в том, что остался включённым тестовый режим. Шесть шагов проверки.

## Коротко

Самая частая причина — **остался включённым тестовый режим**. В песочнице настоящий Kaspi не вызывается: счёт создаётся у нас, статус даже меняется, но на телефон покупателя ничего не уходит и деньги не движутся. Первым делом посмотрите на начало ключа: если он начинается с `qp_test_`, вы в песочнице. Боевой ключ — `qp_live_`. Если с режимом всё в порядке, проверьте шесть вещей в порядке ниже.

## По симптому

| Что видите | Вероятная причина | Что делать |
|---|---|---|
| Счета создаются, покупателю ничего не приходит | Тестовый режим | Проверьте начало ключа и режим в кабинете |
| API не создаёт счёт и возвращает ошибку | Нет привязки кассира или она оборвалась | Кабинет → Kaspi → восстановите привязку |
| Ошибка `tariff_inactive` | Кончился пробный период или тариф не оплачен | Кабинет → Тариф |
| Ошибка `invalid_phone` | Неверный формат номера | `7XXXXXXXXXX`, 11 цифр, без пробелов |
| Push ушёл, покупатель не видит | Нет приложения Kaspi или оно на другом номере | Дайте QR или ссылку на оплату |
| QR открывается, но пишет «попробуйте позже» | Истекло окно сканирования | [QR показывает «попробуйте позже»](/kb/ru/qr-expired) |

## Порядок проверки

**1. Режим.** Посмотрите, какой режим включён в кабинете. В песочнице Kaspi не участвует вообще: push покупателю не уходит, QR не принимает настоящую оплату, деньги не движутся. Это не сбой — песочница так и должна работать, просто её забыли выключить.

Признак: счета успешно создаются, статусы меняются, но на счёт Kaspi не приходит ничего, а покупатели говорят, что ничего не получали.

**2. Ключ.** Какой ключ реально отправляет ваш код? Начало ключа говорит всё:

| Ключ | Режим | Что происходит |
|---|---|---|
| `qp_test_…` | Песочница | Настоящие деньги не движутся, Kaspi не вызывается, оплату вы симулируете сами |
| `qp_live_…` | Боевой | Настоящий QR Kaspi, настоящие деньги |

Частый случай: в кабинете режим переключили на боевой, а на сервере в переменной окружения остался тестовый ключ. Или наоборот — на проде всё верно, а вы работаете ключом от тестового стенда. Проверяйте не то, что написано в репозитории, а то значение, с которым сервер работает прямо сейчас.

**3. Активен ли кассир?** В боевом режиме счёт выставляется через роль «Кассир» в Kaspi. Если привязка оборвалась, счёт вообще не создаётся. В разделе **Kaspi** посмотрите, активна ли карточка подключения.

Самая частая причина обрыва: кто-то вошёл в приложение Kaspi Pay с номера кассира — Kaspi разрешает одному номеру только одно активное устройство, и наша сессия обрывается.

**4. Формат номера покупателя.** Счёт вида `phone` отправляет push в приложение Kaspi покупателя, поэтому `customer.phone` должен быть корректным: `7XXXXXXXXXX` — 11 цифр, без `+`, пробелов, скобок и дефисов. Номер, начинающийся с `8`, приводите к `7` на своей стороне.

Ещё одна частая ситуация: номер технически верный, но Kaspi у покупателя зарегистрирован на **другой номер**. Проверить это мы не можем — спросите у покупателя номер, на который у него оформлен Kaspi.

**5. Есть ли у покупателя приложение Kaspi?** Счёт на телефон доходит только до того, у кого установлено приложение Kaspi и оно привязано к этому номеру. Человеку без приложения не придёт ни push, ни счёт. В таком случае создайте счёт вида `qr` и дайте QR-код или ссылку на оплату.

**6. Активен ли тариф?** Если пробный период закончился, а тариф не оплачен, API отвечает `tariff_inactive` и новые счета не создаются. Состояние видно в разделе **Тариф**. Пробный период длится 7 дней и отсчитывается не от даты регистрации, а от **первого боевого счёта**.

## Как разделить причины за две минуты

1. Создайте счёт вручную из кабинета. Не создаётся — дело не в коде, а в привязке или тарифе.
2. Дошёл ли до покупателя счёт, созданный из кабинета? Дошёл — значит ваш код работает с другим ключом или в другом режиме.
3. Появился ли новый счёт в списке счетов? Нет — ваш запрос до нас вообще не дошёл.

## Частые ошибки

- **Переключить режим в кабинете и не поменять ключ в коде.** Это делается вместе.
- **Отправлять сумму с тиынами.** Счёт на телефон принимает только целые тенге.
- **Брать номер из формы без очистки.** Строка вида `+7 (777) 123-45-67` не принимается.
- **Судить о создании счёта по тому, что не пришёл вебхук.** Это две разные проблемы: [Вебхук не приходит](/kb/ru/webhook-not-arriving).

## Вопросы и ответы

**Приходит ли покупателю что-то в песочнице?** Нет. Песочница не обращается к Kaspi вообще, она нужна только для отладки вашего кода.

**Считаются ли счета из песочницы в лимит тарифа?** Нет, они не идут в месячный лимит и не запускают пробный период.

**Может ли номер кассира совпадать с номером покупателя?** Нет, это разные номера. К тому же с номера кассира нельзя входить в приложение Kaspi Pay — привязка оборвётся.

**Можно ли переотправить счёт покупателю?** Отмените старый и создайте новый — уйдёт новый push на ту же сумму.

**Покупатель спрашивает, чей номер он видит.** В уведомлении о счёте виден номер кассира — это обычное поведение Kaspi, от ваших настроек оно не зависит.
