Qut Pay Сайт Кабинет База знаний Инструкции Документация API ҚАЗРУС
ГлавнаяБаза знаний → Справочник

Права доступа (scopes) — что может ключ

Обновлено: 2026-09-14 · Версия в Markdown

Коротко

Scope — это право API-ключа. При создании ключа вы выбираете, какие действия ему разрешены, и больше он ничего сделать не сможет. При вызове метода без нужного права придёт insufficient_scope (HTTP 403).

Всего есть шесть scope. Главный принцип простой: каждому ключу выдавайте только необходимое. Сайту, например, достаточно invoices:write и invoices:read — ни возвраты, ни подписки, ни управление вебхуками ему не нужны.

Шесть прав

ScopeЧто открывает
invoices:readЧтение счетов: список, один счёт, его события и возвраты
invoices:writeСоздание счетов, массовое создание, отмена
refunds:writeВозврат денег
subscriptions:manageСоздание и управление подписками
webhooks:manageДобавление, изменение и удаление адресов вебхуков
partner:manageПартнёрские методы: управление организациями клиентов

Какое право открывает какой метод

МетодНужное право
GET /api/v1/invoicesinvoices:read
GET /api/v1/invoices/{id}invoices:read
POST /api/v1/invoicesinvoices:write
POST /api/v1/invoices/bulkinvoices:write
POST /api/v1/invoices/{id}/cancelinvoices:write
POST /api/v1/invoices/{id}/simulateinvoices:write (только песочница)
POST /api/v1/invoices/{id}/refundrefunds:write
GET /api/v1/subscriptionssubscriptions:manage
POST /api/v1/subscriptionssubscriptions:manage
PATCH /api/v1/subscriptions/{id}subscriptions:manage
POST /api/v1/subscriptions/{id}/pause \/resume \/cancel \/runsubscriptions:manage
Управление адресами вебхуковwebhooks:manage
Партнёрские методыpartner:manage
GET /api/v1/statusПрава не нужны

Обратите внимание: возврат не входит в invoices:write. Это отдельное право refunds:write. Причина очевидна: выставить счёт и вернуть деньги — действия совершенно разного уровня риска.

Принцип минимальных прав

Не выдавать ключу лишнего — самая дешёвая и самая эффективная мера безопасности. Если ключ утечёт, посторонний сможет действовать только в пределах выданных прав.

Той части сайта, которая принимает заказы, хватает двух прав:

invoices:write   — создать счёт по заказу
invoices:read    — проверить, прошла ли оплата

Конкретные примеры:

ИнтеграцияДостаточные права
Интернет-магазин, сайтinvoices:write, invoices:read
Telegram-ботinvoices:write, invoices:read
Система отчётности или аналитикиinvoices:read
Панель оператора поддержкиinvoices:read, refunds:write
Платформа с подпискамиsubscriptions:manage, invoices:read
Скрипт мониторинга или CIничего (/status открыт)
Партнёрская платформаpartner:manage и остальное по необходимости

Обратный пример: коду сайта право refunds:write не нужно. Сайт никогда не возвращает деньги — возврат делается отдельным инструментом по решению человека. А при утечке разница огромная: в одном случае посторонний просто создаёт счета, в другом начинает возвращать деньги с вашего счёта Kaspi.

Ошибка insufficient_scope

{
  "error": "insufficient_scope",
  "message": "У ключа недостаточно прав для этого действия"
}

HTTP-статус — 403. Эта ошибка не означает «ключ недействителен»: ключ верный, просто у него нет права на запрошенное действие.

У 403 есть и другие причины, не путайте их:

КодЧто случилось
insufficient_scopeУ ключа нет нужного scope
forbiddenРесурс принадлежит другой организации
tariff_inactiveТариф неактивен или закончился пробный период
account_blockedАккаунт заблокирован
not_sandboxДействие доступно только в песочнице

А unauthorized (401) означает, что недействителен сам ключ — это совсем другая история. Порядок разбора: API отвечает 403.

Как добавить право ключу

Кабинет → Интеграции → API-ключи → откройте нужный ключ и измените права.

Важная деталь: менять ключ ради изменения прав не нужно. Сам ключ остаётся прежним, изменение вступает в силу сразу — ни переменную на сервере, ни код править не приходится.

Когда начинаете использовать новый метод, порядок обычный:

  1. Выпишите, какие методы вызывает ваш код.
  2. Найдите в таблице выше нужное право для каждого.
  3. Добавьте ключу только их.
  4. Проверьте в песочнице.

В обратную сторону так же: перестали использовать метод — уберите его право.

Права и привязка к кассиру — это разные вещи

Их часто путают:

ScopeПривязка к кассиру
Что ограничиваетКакое действие можно выполнитьКакие счета видны
Код ошибкиinsufficient_scope (403)invoice_not_found (404)
ПримерНе может сделать возвратНе видит счёт другого кассира

То есть, если у ключа есть refunds:write, но счёт принадлежит другому кассиру, возврат всё равно не пройдёт — только ошибка будет другая. Подробнее: API-ключи.

Чек-лист проверки

Перед выходом в прод пройдитесь по своим ключам:

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

Можно ли просто включить все права? Технически работать будет, но это многократно увеличивает ущерб от утечки ключа. Принцип минимальных прав — работа на одну минуту.

Если убрать право, старые счета пропадут? Нет. Scope влияет только на будущие запросы.

Разве invoices:write не покрывает возврат? Не покрывает. Для возврата нужен отдельный refunds:write: API возвратов.

Сколько прав нужно для подписок? Одно — subscriptions:manage. Для чтения выставленных подписками счетов пригодится ещё invoices:read: API подписок.

Действуют ли права в песочнице? Да, точно так же. Поэтому набор прав удобно обкатать сначала в песочнице.

Связанные статьи

API-ключи — создание, хранение, ротацияЧем отличаются ключи qp_live_ и qp_test_, как создать ключ в кабинете, где его хранить и где хранить категорически нельзя, зачем отдельный ключ на каждую интеграцию, как заменить ключ без простоя и что происходит при удалении.API отвечает 403 — не хватает прав403 значит, что ключ распознан, но на это действие прав нет. Причин пять: не хватает scope, неактивный тариф, чужая организация, привязка ключа к кассиру, действие только для песочницы.Каталог ошибок — что возвращает API и что делатьВсе основные коды ошибок Qut Pay API по группам: авторизация, привязка Kaspi, счета, возвраты, лимиты тарифа, вебхуки, подписки. Причина и решение для каждой.API возвратов — полный и частичный возвратСправочник по методу POST /invoices/{id}/refund: поля запроса, полный и частичный возврат, ограничение суммы, все коды ошибок, что делать при refund_unknown и какие события приходят после возврата.API подписок — счета по расписаниюПодписка выставляет счета по расписанию, а каждую оплату подтверждает сам покупатель. Все поля создания, интервалы, лестница повторов, политика пропуска, методы pause/resume/run и поля состояния.

Остались вопросы? WhatsApp +77788813333 · kazprose@gmail.com
Написать можно и из кабинета: Поддержка.

Qut Pay — независимый сервис, не аффилирован с АО «Kaspi Bank». Kaspi и Kaspi Pay — товарные знаки их правообладателя.