Коротко
Удалённый ключ перестаёт работать в ту же секунду: любой запрос с ним получает ошибку unauthorized (401). Восстановить удалённый ключ невозможно — такой кнопки нет, и поддержка его тоже не вернёт. Выход один: создать в кабинете новый ключ и заменить старый на новый в своей интеграции. Счетов, платежей и денег это не касается.
Что именно сломалось
Ключ — это способ подтвердить, кто отправил запрос, а не хранилище данных. Поэтому при удалении теряется только доступ.
| Что | Состояние |
|---|---|
| Ранее созданные счета | На месте, ничего не пропадает |
| Полученные деньги | Не затронуты, они на вашем счёте Kaspi |
| Проверка статуса открытых счетов | Продолжается, poller не останавливается |
| Доставка вебхуков | Продолжается, вебхуки к ключу не привязаны |
| Привязка кассира Kaspi | Не меняется, переподключать не нужно |
| Тариф и лимиты | Не меняются |
| Новые запросы с этим ключом | Не работают, приходит 401 |
| Вход в кабинет | Не затронут, кабинет работает без ключа |
То есть удалённый ключ — проблема только на стороне API. Создавать счета руками из кабинета можно по-прежнему, ссылки на оплату тоже продолжают работать.
Можно ли его восстановить
Нет. Полное значение ключа показывается вам один раз — в момент создания, у себя мы его не храним. Поэтому после удаления вернуть его не может никто, включая поддержку.
Это не недоработка, а осознанное решение по безопасности. Если бы значение ключа можно было посмотреть в любой момент, любой, кто вошёл в кабинет, скопировал бы все ваши ключи.
Что делать
- Создайте новый ключ. Кабинет → Интеграции → раздел ключей. Выберите правильный режим: для боевой работы
qp_live_…, для тестовqp_test_…. - Выдайте только нужные права. По тому, что делает интеграция:
invoices:read,invoices:write,refunds:write,subscriptions:manage,webhooks:manage,partner:manage. Лишнего не давайте. - Решите, нужна ли привязка к кассиру. Если старый ключ был привязан к конкретному кассиру, привяжите и новый — иначе счета пойдут через другой канал, а старые перестанут быть видны.
- Скопируйте ключ сразу. Второй раз он не показывается.
- Замените его в интеграции. Обновите значение в
.envили в хранилище секретов на сервере и перезапустите приложение. - Сделайте проверочный запрос.
GET /api/v1/statusили небольшой счёт в песочнице — убедитесь, что новый ключ работает.
Если ключ был привязан к кассиру
Ключ можно привязать к конкретному кассиру. Боевые счета привязанного ключа идут только через этого кассира, а чужие счета он не видит вовсе — по ним возвращается invoice_not_found (404).
Поэтому если удалить привязанный ключ и создать новый без привязки, картина получается странная: новые счета создаются, а прежние как будто «пропали». На самом деле они на месте, просто не видны. Привяжите новый ключ к тому же кассиру — и всё встанет на место.
Особенно внимательно проверьте это, если работаете с несколькими точками или несколькими кассирами: Можно ли подключить несколько кассиров.
Что проверить при замене ключа
Ключ мог быть прописан в нескольких местах. Там, где остался старый, начнут сыпаться 401.
.envили хранилище секретов на сервере- Настройки CMS-плагина на сайте (WooCommerce, OpenCart)
- Сценарии в n8n или другой автоматизации
- Сервисы, связанные с Telegram-ботом
- Прослойка интеграции с CRM
- Тестовый контур и продакшен — это два разных места
Правило «один ключ на одну интеграцию» в такие моменты очень выручает: сразу понятно, что менять, и отказ одного ключа не останавливает остальные.
Если после удаления видите ошибку
Если интеграция начала отвечать 401, значит новый ключ ещё не прописан или прописан неверно. Список проверок: API отвечает 401.
Частая ошибка: тестовый ключ используют в боевом режиме или наоборот. Ключ qp_test_… не создаёт реальных платежей Kaspi, а qp_live_… не выполняет операций песочницы.
Вопросы и ответы
Удалил ключ случайно — счета пропадут? Нет. Счета, платежи и возвраты на месте. Пропала только возможность делать запросы этим ключом.
Увидит ли новый ключ счета, созданные старым? Да, если оба принадлежат одной организации и совпадает привязка к кассиру. Если привязка не совпадает, счета видны не будут.
Мои покупатели не смогут заплатить? Ранее созданные открытые счета и ссылки на оплату продолжают работать. Остановилось только создание новых счетов через API.
Удаление ключа — правильный шаг с точки зрения безопасности? Да. Если есть подозрение, что ключ утёк, удалить его — самое быстрое и самое верное действие: API-ключ утёк.
Сколько ключей можно держать? Сколько нужно. Отдельный ключ на каждую интеграцию — рекомендуемый подход.