# Безопасно ли подключать и как всё устроено

> Сервис работает через ограниченную роль «Кассир» в Kaspi Pay: выставить счёт, увидеть статус, вернуть по своим счетам. Доступа к деньгам нет. Что мы храним и как отключить в любой момент.

## Коротко

Сервис работает через **роль «Кассир»** в вашем аккаунте Kaspi Pay. Прав у этой роли мало: выставить счёт, увидеть его статус и сделать возврат по своим же счетам. Перевести деньги, снять со счёта, изменить реквизиты, управлять сотрудниками — ничего этого роль не может. Сессия хранится в зашифрованном виде, привязку можно разорвать из кабинета одной кнопкой, а удалить сотрудника в самом Kaspi Pay достаточно и без нас.

## Что роль «Кассир» может и чего не может

В Kaspi Pay пять ролей: Управляющий, Бухгалтер, **Кассир**, Менеджер Магазина, Менеджер Маркетинга. Мы работаем с самой ограниченной из них — с «Кассиром», потому что право принимать оплату по QR есть только у неё.

| Действие | У роли «Кассир» |
|---|---|
| Выставить счёт (QR или на телефон) | Да |
| Посмотреть статус счёта | Да |
| Сделать возврат по своему счёту | Да |
| Сделать перевод со счёта | Нет |
| Вывести деньги, оплатить что-либо | Нет |
| Изменить реквизиты организации | Нет |
| Добавить или удалить сотрудника | Нет |
| Видеть расчётный раздел Kaspi | Нет |
| Кредиты, депозиты, другие банковские продукты | Нет |

То есть даже в худшем случае кто-то сможет выставить счёт от вашего имени, но не сможет забрать деньги. Куда идут деньги: [Когда и куда приходят деньги](/kb/ru/money-arrival).

## Как хранится сессия

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

- Данные сессии хранятся **в зашифрованном виде**.
- Kaspi разрешает **одному номеру кассира только одно активное устройство**. Если с этого номера войти в приложение Kaspi Pay, наша сессия оборвётся. Это ограничение самого Kaspi: [Привязка кассира оборвалась](/kb/ru/connection-lost).
- Когда сессия оборвана, выставление счетов останавливается, но ни с оплаченными ранее счетами, ни с вашим счётом Kaspi ничего не происходит.

## Отключить можно в любой момент

Разорвать привязку можно двумя способами, и оба в ваших руках:

1. **Из кабинета.** Зайти в раздел [Кассиры Kaspi](https://qut.kz/app/kaspi/) и отключить привязку. После этого мы не сможем выставить ни одного счёта от вашего имени.
2. **Из приложения Kaspi Pay.** Настройки → Сотрудники → удалить этого сотрудника. Этого тоже достаточно: без роли сессия становится недействительной, спрашивать разрешения у нас не нужно.

Второй способ важен принципиально: отключение целиком на стороне Kaspi и от нас не зависит.

## Что мы храним, а чего не храним

**Храним** — то, без чего сервис не работает:

- Сессию Kaspi (в зашифрованном виде) и номер кассира
- Счета: сумму, описание, статус, время, историю событий
- То, что передали вы сами: `externalOrderId`, `metadata`, имя/телефон/email покупателя — только если вы передаёте их при создании счёта
- Журнал доставки вебхуков и настройки API-ключей

**Не храним** — то, что до нас технически не доходит:

- Данные карты покупателя, номер его счёта, баланс. Оплата целиком проходит внутри приложения Kaspi, мы этот экран даже не видим
- Данные входа в ваш кабинет Kaspi Pay. Пароля у нас нет, привязка идёт по коду из SMS
- Баланс вашего счёта в Kaspi и расчётные выписки

## Безопасность на стороне интеграции

Часть отвечает за вас — то, как вы обращаетесь с API-ключом:

- **Ключ должен быть только на сервере.** Не кладите его в код, который выполняется в браузере, внутрь мобильного приложения (APK/IPA) или в публичный репозиторий.
- **Принцип минимальных прав.** Выдавайте ключу только нужные scope: `invoices:read`, `invoices:write`, `refunds:write`, `subscriptions:manage`, `webhooks:manage`, `partner:manage`.
- **Ключ можно привязать к конкретному кассиру.** Тогда он вообще не видит счета других кассиров.
- **Проверяйте подпись вебхука:** `HMAC-SHA256(secret, timestamp + "." + rawBody)` по неизменённому телу запроса, а `timestamp` старше 5 минут не принимайте.
- **Если ключ утёк** — удаляете старый и создаёте новый. Старый перестаёт работать сразу.

## В каких отношениях сервис с Kaspi

Qut Pay — **независимый сервис**. Мы не представитель Kaspi, не даём обещаний от его имени и не можем менять его условия. Всё, что мы делаем, — автоматизируем роль «Кассир» в вашем собственном аккаунте. Kaspi может в любой момент изменить свои правила, и мы стараемся под такие изменения подстраиваться.

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

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

**Вы можете добраться до моих денег?** Нет. У роли «Кассир» нет права на переводы, а деньги к нам вообще не поступают.

**Нужно ли давать вам пароль от Kaspi?** Нет. Привязка идёт по коду из SMS на номер кассира, пароль не запрашивается вообще.

**Что будет с моими данными, если я отключусь?** История счетов остаётся в кабинете, её можно выгрузить. На ваш счёт Kaspi и на прошедшие платежи это никак не влияет.

**Что увидит мой сотрудник, если зайдёт в кабинет?** Зависит от выданной роли: в кабинете есть owner, manager и developer, каждая видит свой набор разделов.

**Кому видны данные покупателей?** Только вам и сотрудникам с доступом в кабинет. Данные покупателя вы передаёте сами при создании счёта — если не передаёте, у нас их и не будет.
