Files
alfa-bank-sdk/_docs/xml/alfa_payout_docs.xml

9788 lines
373 KiB
XML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<qr_payout>
<_0_full_md>
<![CDATA[
## Главная
### Инструкция по интеграции СБП C2B (Альфа-Банк)
Добро пожаловать в руководство по прямой интеграции с платежным шлюзом (ПШ) Альфа-Банка для реализации сервиса СБП C2B.
---
### ⚠️ Важное объявление (Изменение адресов)
С **01.11.2024** адрес тестового стенда изменен. Старые адреса недоступны.
* **Новый URL тестового стенда:** `https://217.12.103.132:2443/fsCryptoProxy`
* **Условие доступа:** Обязательное установление **MTLS соединения**.
---
### 1. Обзор API
Взаимодействие с платежным шлюзом Альфа-Банка строится на следующих принципах:
| Параметр | Описание |
| :--- | :--- |
| **Протокол** | HTTPS |
| **Архитектура** | REST |
| **Методы** | POST |
| **Формат данных** | JSON (аргументы и ответы) |
| **Кодировка текста** | urlencoded (внутри JSON ответов) |
| **Поддержка** | [acquiring@alfabank.ru](mailto:acquiring@alfabank.ru) |
#### Особенности обработки ошибок
* Каждый ответ содержит поле `ErrorCode`.
* При возникновении логической ошибки описание возвращается в поле `message`.
---
## 2. Процесс аутентификации
Для работы со шлюзом (и на тестовой, и на промышленной среде) используется двусторонняя аутентификация **MTLS** и подпись тела запроса.
### 2.1. Генерация сертификатов (Self-signed)
Клиент должен самостоятельно сгенерировать ключевую пару RSA для подписи запросов.
**Команда OpenSSL:**
```bash
openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 3650
```
**Рекомендуемые параметры заполнения:**
* **Country (RU)**, **City (Moscow)**, **Organization (Ваша компания)**.
* **Common Name:** Company Pay C2B.
* **Срок действия:** не менее 10 лет.
* **Длина ключа:** 2048 или 4096 бит.
### 2.2. Регистрация в банке
Файл `client.crt` необходимо отправить на [acquiring@alfabank.ru](mailto:acquiring@alfabank.ru).
**Шаблон письма:**
> **Тема:** Регистрация сертификата на [тестовом/промышленном] стенде СБП C2B
>
> **Тело:**
> Просим зарегистрировать сертификат для работы с СБП C2B.
> * **Тип регистрации:** Впервые / Повторно (взамен истёкшего alias...)
> * **Организация:** [Название]
> * **ИНН:** [Номер]
> * **Вложение:** client.crt (в архиве без пароля)
### 2.3. Что вы получите от банка
После регистрации банк предоставит:
1. **Alias** — имя вашего сертификата (передается в заголовке `key-name`).
2. **Клиентский сертификат RSA/TLS** — для поднятия MTLS-соединения.
3. **Корневые сертификаты банка** — для проверки серверного сертификата.
4. **TermNo** — тестовый номер терминала.
5. **Эндпойнт** — для промышленной среды.
---
## 3. Техническая реализация запроса
### 3.1. Формирование заголовков (Headers)
При каждом запросе необходимо передавать следующие заголовки:
| Заголовок | Значение |
| :--- | :--- |
| `Content-Type` | `application/x-www-form-urlencoded` |
| `Authorization` | Base64-строка зашифрованного хеша (см. ниже) |
| `key-name` | Ваш **Alias**, полученный от банка |
### 3.2. Подпись сообщения (Security)
Процесс формирования заголовка `Authorization`:
1. **Подготовка данных:** Сформируйте JSON-тело запроса. Исключите все пробелы, табуляции и переносы строк между ключами и значениями.
2. **Вычисление хеша и подпись:**
```bash
# Расчет SHA256 и подпись приватным ключом
openssl dgst -sha256 -sign client.key -out signature.txt block.txt
```
3. **Кодирование в Base64:**
```bash
# Получение строки для заголовка Authorization
base64 signature.txt > signature64.txt
```
---
## 4. Тестирование
### 4.1. Эндпойнт тестовой среды
`https://217.12.103.132:2443/fsCryptoProxy`
### 4.2. Пример запроса (GetQRCd)
**Body:**
```json
{
"command":"GetQRCd",
"TermNo":"90080567",
"qrcType":"01",
"amount":"100",
"currency":"RUB",
"paymentPurpose":"Назначение платежа"
}
```
> **Важно по полю `paymentPurpose`:**
> * Макс. длина: 140 символов.
> * Допустимы: Латиница, Кириллица (кроме Ё/ё), цифры и спецсимволы.
> * Перенос строки передается как `\\n` (двойной слэш для JSON).
### 4.3. Как провести тестовую оплату
1. Сгенерируйте QR-код через API.
2. Откройте на смартфоне: [testpay.alfabank.ru/sbp-page](https://testpay.alfabank.ru/sbp-page).
3. Нажмите **"Сканировать QR"** и наведите камеру на код.
4. Нажмите **"Произвести оплату"**. Выбор банка не требуется.
---
## 5. Статусы и уведомления
### Получение статуса платежа
Существует два способа:
1. **Запрос `GetQRCstatus`:** Опрос шлюза клиентом.
2. **Callback-уведомления:** ПШ банка отправляет POST-запрос на ваш сервер.
### Настройка Callback
* Сервер ТСП должен быть публичным (HTTPS, порт 443).
* IP-адреса банка для белого списка: `217.12.97.124`, `217.12.101.32`.
* Для включения отправьте URL обработчика на [acquiring@alfabank.ru](mailto:acquiring@alfabank.ru).
### Лимиты на тестовой среде (`GetQRCstatus`)
* **Лимит ТСП:** не более 4 запросов в минуту.
* **Общий лимит НСПК:** 60 запросов в минуту на весь банк.
* При превышении возвращается ошибка `429 Too Many Requests`.
---
## 6. Переход в промышленную среду (Production)
Для выхода в "бой" необходимо:
1. Заключить договор по СБП с Альфа-Банком.
2. Сгенерировать новую ключевую пару для промышленной среды.
3. Направить письмо на регистрацию (аналогично тестовой, но с пометкой "промышленный стенд").
4. Срок предоставления доступов — **до 3 рабочих дней**.
## Общие положения
### Техническая документация СБП: Общие положения
Данный документ описывает принципы взаимодействия, идентификации и основные бизнес-сценарии при работе с Системой Быстрых Платежей (СБП) через хост Альфа-Банка.
---
## 1. Каналы взаимодействия и безопасность
Взаимодействие осуществляется по протоколу **HTTP(S)** с обязательной двусторонней аутентификацией.
### Требования к сертификатам
* **Тип:** Клиентские сертификаты RSA/TLS.
* **Управление:** Порядок выпуска и установки определяется Удостоверяющим Центром Заказчика.
* **Именование (Alias):** На прокси-сервере Заказчика должны соблюдаться строгие правила именования:
| Параметр | Требование к имени (алиасу) |
| :--- | :--- |
| **Обычный запрос** | Должно соответствовать коду терминала и реквизиту заголовка `key-name`. |
| **Проверка соединения** | Должно быть равно параметру `TermNo` в теле запроса и заголовку `key-name`. |
---
## 2. Идентификация Виртуального терминала
Для работы в системе каждому терминалу присваивается уникальный идентификатор — **TermNo**.
* **Назначение:** Определение конкретного виртуального терминала, кассы или системы.
* **Привязка:** TermNo определяет принадлежность к Юридическому лицу (ЮЛ), конкретной точке продаж (ТСП) и расчетному счету, на который будут поступать средства.
* **Лимиты:** Минимум 1 терминал на адрес ТСП, максимум — по запросу.
* **Применение:**
* Сохраняется в настройках терминала.
* Используется на прикладном уровне протокола совместно с сертификатом.
* **Обязателен** для генерации динамических QR-кодов и проверки статуса оплаты.
---
## 3. Общий порядок работы
### 3.1. Оплата покупки (C2B)
Процесс проведения оплаты через динамический QR-код:
1. **Инициация:** Кассир вводит сумму (валюта и назначение платежа обычно подставляются автоматически).
2. **Запрос QR:** ТСП запрашивает динамический QR-код у Банка.
3. **Отображение:** ТСП выводит QR на экран или печатает пре-чек.
4. **Действия клиента:**
* Сканирует QR через банковское приложение.
* Подтверждает оплату.
5. **Проверка:** ТСП запрашивает подтверждение статуса платежа.
6. **Фискализация:** При получении статуса «Оплачено» ТСП печатает чек.
**Обязательные реквизиты в чеке оплаты:**
* `qrcId` (Идентификатор QR-кода)
* Код транзакции СБП
* Дата и время операции
---
### 3.2. Возврат покупки
Возврат средств имеет ряд технологических особенностей.
> [!IMPORTANT]
> **Ограничения возврата:**
> * Возможен только при наличии чека и кода транзакции СБП.
> * Осуществляется только по номеру телефона плательщика.
> * Средства возвращаются только в тот же Банк-участник СБП, с которого была оплата.
**Параметры для инициации возврата:**
* Сумма (полная или частичная) и валюта.
* Данные из чека: `qrcId`, Код транзакции, Дата оплаты.
**Процесс подтверждения:**
1. Хост Банка проверяет наличие исходной операции.
2. Кассир проходит аутентификацию (ввод одноразового кода SMS/Push или иная проверка полномочий).
3. ТСП отправляет финальный запрос на возврат.
**Реквизиты в чеке возврата:**
* Код транзакции `payrrn`
* Сумма возврата
---
## 4. Работа с кассовыми ссылками
Кассовая ссылка — это многоразовый QR-код, который активируется под конкретную покупку.
### Жизненный цикл ссылки
1. **Регистрация:** ТСП через Агента регистрирует ссылку в ОПКЦ СБП. QR-код размещается в кассовой зоне.
2. **Активация:** В момент покупки ТСП отправляет запрос на активацию ссылки, передавая `сумму`, `валюту` и `назначение платежа`.
* *Совет:* Для получения уведомлений передавайте адрес `callback-url`.
3. **Оплата:** Клиент считывает статическую ссылку, которая после активации ведет на оплату конкретного счета.
4. **Деактивация:** Если оплата не состоялась, ТСП отправляет запрос на деактивацию.
5. **Изменение счета:** ТСП может изменить расчетный счет, привязанный к ссылке, через запрос к Агенту ТСП (автоматические уведомления об изменении не поддерживаются).
---
## 5. Привязка счета и рекуррентные платежи
Сценарии для реализации оплат «в один клик» или подписок.
### Сценарии регистрации привязки
| Тип сценария | Описание |
| :--- | :--- |
| **Чистая привязка** | Регистрация QR-кода типа `03`. Клиент сканирует код только для привязки счета без оплаты. |
| **Оплата + Привязка** | При регистрации обычного QR на оплату передается параметр `subscriptionPurpose`. После оплаты банк предлагает клиенту привязать счет. |
### Оплата по инициативе ТСП (Списание без участия клиента)
1. ТСП регистрирует QR для оплаты с привязанного счета.
2. ТСП направляет запрос на оплату в НСПК.
3. НСПК запрашивает подтверждение у Банка Плательщика.
4. При положительном ответе инициируется C2B операция, и Агент ТСП получает уведомление о финальном статусе.
---
## Справочник параметров (Сниппеты данных)
При формировании запросов используйте следующие ключевые поля:
```json
// Пример ключевых полей для активации кассовой ссылки / оплаты
{
"TermNo": "12345678", // Номер терминала
"amount": 10000, // Сумма в копейках/единицах
"currency": "RUB", // Валюта
"qrcId": "AD100000...", // ID QR-кода
"payrrn": "3021...", // Код транзакции (для возвратов)
"callbackUrl": "https://..." // Адрес для уведомлений
}
```
# Статический QR-код (СБП)
Статический QR-код — это инструмент безналичной оплаты через Систему быстрых платежей (СБП), являющийся альтернативой эквайрингу. Изображение QR-кода остается неизменным, его можно распечатать и разместить в кассовой зоне.
### Особенности
* **Варианты реализации:**
* С открытой суммой (вводит покупатель).
* С фиксированной суммой (задает продавец при генерации).
* **Способы оплаты:** Сканирование камерой смартфона или использование NFC-метки.
* **Скорость:** Средства поступают на счет продавца мгновенно.
* **Оборудование:** Терминал не требуется.
---
## 1. Регистрация статического QR-кода
Метод `GetQRCd` используется для формирования платежной ссылки и получения изображения QR-кода.
### Параметры запроса
| Параметр | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String | Y | Константа `GetQRCd`. |
| `TermNo` | String(20) | Y | Уникальный идентификатор терминала. |
| `qrcType` | String(2) | Y | Тип QR-кода. Для статического — `01`. |
| `amount` | Number | O | Сумма в копейках. Если не указана — сумма открытая. |
| `currency` | String(3) | O | Код валюты (например, `RUB`). |
| `paymentPurpose` | String(140) | O | Назначение платежа. |
| `width` / `height` | String | O | Размеры изображения QR-кода в пикселях. |
| `redirectUrl` | String(1024)| O | Ссылка для возврата клиента в приложение/на сайт ТСП. |
| `messageID` | String(1024)| O | Уникальный ID сообщения (GUID). Только латиница. |
| `queryData.notificationUrl` | String(512) | O | URL для получения уведомления о статусе оплаты. |
### Пример запроса
```json
{
"command": "GetQRCd",
"TermNo": "90080567",
"qrcType": "01",
"width": "600",
"height": "600",
"amount": 10000,
"currency": "RUB",
"paymentPurpose": "Оплата заказа №123",
"messageID": "550e8400-e29b-41d4-a716-446655440000",
"queryData": {
"notificationUrl": "https://yourserver.com/sbp/notify"
},
"redirectUrl": "https://yourshop.ru/success"
}
```
### Параметры ответа
| Параметр | Тип данных | Назначение |
| :--- | :--- | :--- |
| `ErrorCode` | String | Код ответа (0 — успех). |
| `image` | String | Изображение QR-кода в формате BASE64. |
| `payload` | String | Платежная ссылка (содержимое QR-кода). |
| `qrcId` | String | Уникальный идентификатор QR-кода. |
| `status` | String | Статус регистрации ссылки (например, `CREATED`). |
---
## 2. Нотификация о статусе оплаты
После успешной оплаты Банк отправляет POST-запрос на `notificationUrl`, указанный при регистрации.
### Параметры уведомления
| Параметр | Тип данных | Назначение |
| :--- | :--- | :--- |
| `qrcId` | String | Идентификатор QR-кода. |
| `trxId` | String | Уникальный ID платежа в НСПК. |
| `status` | String | `ACWP` — успех, `RJCT` — отклонено. |
| `amount` | Number | Сумма платежа в копейках. |
| `timestamp` | String | Время операции по Гринвичу (GMT). |
| `payerId` | String | Маскированный номер телефона плательщика. |
### Пример уведомления
```json
{
"command": "qrc/notification",
"qrcId": "AS10000NJTDV88TN82CRT8CG1AU690OF",
"trxId": "A31040920067662400000550448AD7B3",
"status": "ACWP",
"amount": 10000,
"timestamp": "2023-04-14T09:20:06.000Z",
"payrrn": "000051992395",
"TermNo": "90080567"
}
```
*ТСП должно ответить HTTP-кодом `200 OK`.*
---
## 3. Проведение возврата
Возврат средств выполняется в два этапа.
### 3.1. Проверка возможности возврата (`GetQRCreversalData`)
Используется для получения данных о плательщике и проверки доступности операции.
**Запрос:**
| Параметр | Обяз. | Описание |
| :--- | :---: | :--- |
| `qrcId` | Y | ID QR-кода из оригинального платежа. |
| `trxId` | Y | ID транзакции НСПК. |
| `amount` | O | Сумма возврата. Если пусто — полный возврат. |
**Пример ответа:**
```json
{
"ErrorCode": 0,
"payerBnkName": "Альфа-Банк",
"payerId": "*1779",
"trxDT": "20230414062006",
"message": "OK"
}
```
### 3.2. Выполнение возврата (`QRCreversal`)
Непосредственная инициация перевода средств клиенту.
**Запрос:**
| Параметр | Обяз. | Описание |
| :--- | :---: | :--- |
| `messageID` | Y | GUID, полученный в ответе `GetQRCreversalData`. |
| `queryData.notificationUrl` | O | URL для уведомления о статусе возврата. |
---
## 4. Запрос статуса возврата
Метод `GetQRCreversalStatus` используется для уточнения финального статуса операции возврата (B2C).
### Параметры запроса
Для поиска операции необходимо передать одну из пар:
1. `payrrn` ИЛИ `originalTrxId` (для поиска исходного платежа).
2. `trxId` ИЛИ `messageID` (для идентификации самого возврата).
### Статусы возврата в ответе
* `ACWP` — Возврат успешно завершен.
* `RJCT` — Операция отклонена.
* `NTST` — Статус неизвестен (в обработке).
### Пример ответа
```json
{
"ErrorCode": 0,
"amount": 10000,
"status": "ACWP",
"originalTrxId": "A31040920067662400000550448AD7B3",
"trxId": "B31071502287201D00001650448AD7B3"
}
```
---
*Примечание: Все текстовые данные в запросах должны передаваться в кодировке UTF-8, формат передачи данных — JSON.*
# Интеграция динамических QR-кодов (СБП)
Оплата по динамическому QR-коду — это способ безналичной оплаты через Систему Быстрых Платежей (СБП). QR-код создается отдельно под каждую покупку, содержит сумму и реквизиты. Средства мгновенно поступают на счёт продавца.
## 1. Регистрация динамического QR-кода
**Метод:** `GetQRCd`
Используется для генерации QR-кода под конкретный заказ.
### Параметры запроса
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String | Y | Константа `GetQRCd` |
| `TermNo` | String(20) | Y | Уникальный идентификатор терминала |
| `qrcType` | String(2) | Y | Тип QR-кода. Для динамического — `02` |
| `amount` | Number | Y | Сумма в минорных единицах (копейках) |
| `currency` | String(3) | Y | Код валюты (для рублей — `RUB`) |
| `OrderNumber` | String(1000)| O | Номер заказа (только латиница и цифры) |
| `paymentPurpose`| String(140) | O | Назначение платежа |
| `qrTtl` | String(6) | O | Срок жизни ссылки в минутах (мин. 1, рек. от 5) |
| `queryData.notificationUrl` | String(512) | O | URL для уведомления о статусе оплаты |
| `redirectUrl` | String(1024)| O | Ссылка для возврата клиента в приложение/сайт |
| `extJsonParams` | Object | O | Блок дополнительных параметров (JsonParam1-10) |
**Для подписок (рекуррентных платежей):**
* `subscriptionServiceId`: Идентификатор привязки.
* `subscriptionServiceName`: Наименование привязки.
### Пример запроса
```json
{
"command": "GetQRCd",
"TermNo": "90080567",
"amount": "10000",
"currency": "RUB",
"qrcType": "02",
"qrTtl": "5",
"OrderNumber": "FYI123456",
"queryData": {
"notificationUrl": "https://sbp-payments.your-site.com/callback"
}
}
```
### Параметры ответа
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `ErrorCode` | String | Y | Код ответа (0 — успех) |
| `image` | String | Y | Изображение QR-кода в формате Base64 |
| `payload` | String | Y | Платежная ссылка СБП |
| `qrcId` | String | Y | Уникальный идентификатор QR-кода |
| `status` | String | Y | Статус регистрации (например, `CREATED`) |
---
## 2. Запрос статуса оплаты
**Метод:** `GetQRCstatus`
Направляется кассой/терминалом для проверки факта оплаты.
> **Важно:** Запрос следует направлять не ранее, чем через 10 секунд после формирования QR, и не чаще чем раз в 3 секунды.
### Параметры запроса
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String | Y | Константа `GetQRCstatus` |
| `TermNo` | String | Y | Идентификатор терминала |
| `qrcId` | String | Y/O | ID QR-кода (обязательно, если нет payrrn) |
| `payrrn` | String | Y/O | Референс запроса в системе Банка |
### Возможные статусы (`status`)
1. `ACWP` (ACCEPTED) — Операция завершена успешно.
2. `RJCT` (REJECTED) — Операция отклонена.
3. `NTST` (NOT_STARTED) — Операция не найдена (нужен повтор запроса).
4. `RCVD` (RECEIVED) — Операция в обработке.
### Пример ответа (Успех)
```json
{
"ErrorCode": 0,
"status": "ACWP",
"qrcId": "AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
"trxId": "A3013090427361010000057B3DA2D4A7",
"amount": 10000,
"payerId": "*********1234"
}
```
---
## 3. Нотификация о финальном статусе
**Метод:** `qrc/notification`
Запрос отправляется со стороны Банка на `notificationUrl` ТСП.
### Формат уведомления
```json
{
"command": "qrc/notification",
"qrcId": "AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
"status": "ACWP",
"amount": "10000",
"trxId": "A3013090427361010000057B3DA2D4A7",
"timestamp": "2022-10-27T14:33:49.000Z"
}
```
*ТСП должно ответить HTTP-кодом `200`.*
---
## 4. Проведение возврата
Возврат может быть выполнен в два этапа (проверка + выполнение) или в один этап (при передаче `messageID`).
### 4.1 Проверка возможности возврата (`GetQRCreversalData`)
Используется для получения данных о плательщике и проверки доступного остатка.
### 4.2 Выполнение возврата (`QRCreversal`)
**Параметры запроса:**
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String | Y | Константа `QRCreversal` |
| `amount` | Number | O | Сумма возврата (если не указана — полный возврат) |
| `qrcId`/`trxId` | String | Y | Идентификаторы оригинальной операции |
| `ReturnRestAmount`| Boolean| O | Вернуть остаток доступных средств в ответе |
### Пример ответа на возврат
```json
{
"ErrorCode": 0,
"message": "Возврат проведен",
"amount": 10000,
"trxId": "A3024113609260070000086B8426B817",
"restAmount": "99.87"
}
```
---
## 5. История и статусы возвратов
### Запрос истории (`GetQRCreversalHistory`)
Позволяет получить список всех попыток возврата по одной транзакции оплаты.
**Пример структуры массива `refunds` в ответе:**
```json
"refunds": [
{
"status": "ACWP",
"amount": 10000,
"trxId": "B51390823097450W0000180011510503",
"trxDT": "20250519082345"
},
{
"status": "RJCT",
"amount": 10000,
"trxId": "A4327120041167130000020011381101"
}
]
```
---
## 6. Нотификация о возврате
**Метод:** `b2c-refund/notification`
Банк уведомляет систему ТСП о финальном статусе операции возврата.
### Пример уведомления
```json
{
"command": "b2c-refund/notification",
"status": "ACWP",
"amount": "10000",
"originalTrxId": "X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
"trxId": "A3024113609260070000086B8426B817"
}
```
---
## Примечания
* **Формат данных:** Все текстовые данные в ответах передаются в формате `urlencoded`.
* **Суммы:** Все суммы в запросах передаются как целые числа в копейках.
* **Ошибки:** Список кодов ошибок приведен в Приложении №2 (согласно основной документации Банка).
* **Успешная оплата:** Считается подтвержденной только при получении статуса `ACWP` и наличии `trxId`.
# Кассовая платёжная ссылка СБП: Техническая документация
**Кассовая платёжная ссылка** — это гибридное решение, объединяющее преимущества статического и динамического QR-кодов. QR-код остается неизменным (его можно распечатать один раз), но сумма оплаты передается с кассы в момент покупки, что исключает ошибки ручного ввода со стороны клиента.
## Общие положения
* Для каждой кассы/терминала создается уникальная ссылка.
* Сумма передается в **минорных единицах** (копейках).
* Текстовые данные в ответах передаются в формате `urlencoded`.
---
## 1. Регистрация кассовой платёжной ссылки
Метод `RegCashQRc` используется для генерации постоянного QR-кода для терминала.
### Параметры запроса
| Параметр | Тип | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String | Y | Константа `RegCashQRc` |
| `TermNo` | String | Y | Уникальный ID терминала (до 20 симв.) |
| `mediaType` | String | N | Тип картинки (напр., `image/png`) |
| `width` | String | N | Ширина изображения |
| `height` | String | N | Высота изображения |
| `redirectUrl` | String | N | Ссылка для возврата клиента в приложение ТСП |
| `qrcId` | String | N | ID для привязки предвыпущенных NFC-табличек |
**Пример запроса:**
```json
{
"command": "RegCashQRc",
"TermNo": "90080567",
"mediaType": "image/png",
"width": "600",
"height": "600",
"redirectUrl": "https://exampletsp.io/callback"
}
```
---
## 2. Активация ссылки (Передача суммы)
Метод `ActivateCashQRc` вызывается кассой в момент совершения покупки для установки суммы и параметров платежа.
### Параметры запроса
| Параметр | Тип | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String | Y | Константа `ActivateCashQRc` |
| `TermNo` | String | Y | ID терминала |
| `qrcId` | String | Y | ID QR-кода |
| `amount` | Number | Y | Сумма в копейках |
| `currency` | String | N | Валюта (по умолчанию `RUB`) |
| `qrTtl` | String | N | Срок жизни активации (5–20 мин) |
| `queryData.notificationUrl` | String | N | URL для уведомления об оплате |
**Пример запроса:**
```json
{
"command": "ActivateCashQRc",
"TermNo": "90080567",
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"amount": 10000,
"currency": "RUB",
"qrTtl": "5",
"queryData": {
"notificationUrl": "https://sbp-payments.your-site.ru"
}
}
```
---
## 3. Проверка статуса оплаты
Метод `GetQRCstatus` используется для получения финального статуса транзакции. Рекомендуется запрашивать не ранее 10 сек. после активации и не чаще раза в 3 сек.
### Статусы оплаты (поле `status`)
* **ACWP** (ACCEPTED) — Оплата успешно завершена.
* **RJCT** (REJECTED) — Операция отклонена.
* **NTST** (NOT_STARTED) — Оплата еще не инициирована.
* **RCVD** (RECEIVED) — В обработке.
**Пример ответа (Успех):**
```json
{
"ErrorCode": 0,
"status": "ACWP",
"trxId": "A30180803159571F0000097B3DA2D4A7",
"amount": 10000,
"payerId": "*********1234",
"payrrn": "000056251465"
}
```
---
## 4. Деактивация ссылки
Метод `DelCashQRc` используется для досрочной отмены ожидания оплаты (например, если клиент отказался от покупки).
**Пример запроса:**
```json
{
"command": "DelCashQRc",
"TermNo": "90080567",
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
}
```
---
## 5. Возврат платежа
Возврат по СБП выполняется в два этапа (или в один при наличии `messageID`).
### Этап 1: Проверка возможности возврата (`GetQRCreversalData`)
Позволяет узнать доступный остаток и получить данные для проведения возврата.
### Этап 2: Проведение возврата (`QRCreversal`)
**Пример запроса на возврат:**
```json
{
"command": "QRCreversal",
"TermNo": "90080567",
"payrrn": "000056251465",
"amount": 10000,
"messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8"
}
```
---
## 6. Нотификации (Webhooks)
Банк отправляет POST-запросы на ваш `notificationUrl` при изменении статуса оплаты или возврата.
### Уведомление об оплате (`qrc/notification`)
```json
{
"command": "qrc/notification",
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"status": "ACWP",
"amount": 10000,
"trxId": "A30180803159571F0000097B3DA2D4A7"
}
```
---
## 7. Изменение параметров ссылки
Метод `ChangeAccForCashQRc` позволяет перепривязать QR-код к другому счету, терминалу или изменить `redirectUrl`.
| Параметр | Назначение |
| :--- | :--- |
| `NewTermNo` | Перенос на новый ID терминала |
| `NewMerchantId` | Перенос на другую торговую точку |
| `account` | Смена расчетного счета |
---
## Приложение: Коды ошибок (ErrorCode)
| Код | Описание |
| :--- | :--- |
| `0` | Успешно |
| `3` | Не передан обязательный параметр |
| `16` | Некорректный TermNo |
| `41` | Некорректный qrcId |
| `301` | Превышен временной диапазон поиска |
| `RQ05019` | Не передан параметр amount при активации |
> **Примечание:** При получении статуса `NTST` необходимо продолжать опрос статуса до получения финального результата (`ACWP` или `RJCT`).
# Привязка счёта и подписки СБП: Техническая документация
Данный функционал позволяет ТСП (Торгово-сервисным предприятиям) выполнять привязку банковского счёта клиента для проведения последующих платежей без участия плательщика (рекуррентные платежи, оплата в один клик).
---
## 1. Привязка счёта без оплаты
Используется для регистрации QR-кода, целью которого является только установление связки между счётом клиента и ТСП.
### 1.1. Метод `RegQRcSub`
**Параметры запроса:**
| Параметр | Тип | Обяз. | Описание |
| :--- | :--- | :---: | :--- |
| `command` | String | Да | Тип запроса. Константа: `RegQRcSub`. |
| `TermNo` | String | Да | Уникальный идентификатор терминала. |
| `qrcType` | String | Да | Тип QR-кода. Константа: `03`. |
| `subscriptionPurpose` | String | Да | Цель привязки. Отображается клиенту в приложении банка. |
| `queryData.notificationUrl` | String | Да | URL для получения уведомления о результате привязки. |
| `qrTtl` | String | Нет | Срок жизни ссылки в минутах (1 — 129 600). По умолчанию: 4320 (3 суток). |
| `redirectUrl` | String | Нет | Ссылка для возврата клиента в приложение/на сайт ТСП. |
| `subscriptionServiceId` | String(32) | Нет | Идентификатор сервиса подписки (используется с `subscriptionServiceName`). |
| `subscriptionServiceName`| String(70) | Нет | Наименование сервиса подписки. |
**Пример запроса:**
```json
{
"command": "RegQRcSub",
"TermNo": "90080567",
"qrTtl": "10",
"qrcType": "03",
"subscriptionPurpose": "Подписка на оплату услуг Интернет 500р./мес.",
"queryData": {
"notificationUrl": "https://sbp-subscription.example.com"
},
"redirectUrl": "https://exampletsp.io/callback"
}
```
**Параметры ответа:**
| Параметр | Описание |
| :--- | :--- |
| `ErrorCode` | Код ответа (0 или RQ00000 — успех). |
| `qrcId` | Идентификатор QR-кода. |
| `payload` | Платежная ссылка для формирования QR или перехода. |
| `payrrn` | Референс запроса в системе Банка. |
---
### 1.2. Нотификация о результате привязки (`subscription/notification`)
Банк отправляет POST-запрос на `notificationUrl` ТСП.
**Параметры нотификации:**
* `status`: `ACWP` (оформлено) или `RJCT` (отказ).
* `subscriptionToken`: Уникальный токен привязки (необходим для будущих оплат).
* `memberId`: Идентификатор банка плательщика.
> **Важно:** Значения `subscriptionToken` и `memberId` необходимо сохранить. Без них проведение платежей по инициативе ТСП невозможно.
---
## 2. Оплата с последующей привязкой счёта
Позволяет клиенту совершить первую покупку и одновременно разрешить ТСП списывать средства в будущем.
### 2.1. Метод `GetQRCd` (Тип 02)
Для этого сценария используется стандартный метод генерации QR, но с обязательным заполнением поля `subscriptionPurpose`.
**Ключевые параметры:**
* `qrcType`: `02` (динамический QR).
* `amount`: Сумма первого платежа в копейках.
* `subscriptionPurpose`: Описание подписки (наличие этого поля активирует сценарий привязки).
* `queryData.notificationUrl_sub`: (Опционально) Отдельный URL для уведомления именно о привязке.
**Логика уведомлений:**
1. При успешной операции ТСП получает **два** callback-уведомления:
- О статусе платежа (`qrc/notification`).
- О статусе привязки (`subscription/notification`).
2. Если платеж прошел, но клиент отказался от привязки — придет уведомление об успехе оплаты и уведомление об отказе в подписке.
---
## 3. Оплата с привязанного счёта (по инициативе ТСП)
Сценарий "бесшовной" оплаты без участия клиента. Проводится в два этапа.
### Этап 1: Генерация ссылки через `GetQRCd`
Создается технический QR-код (тип `02`), к которому будет "привязан" платеж.
* `paymentPurpose`: Обязательно для заполнения.
* `amount`: Сумма списания.
### Этап 2: Запрос на списание `QRCSubPayPetition`
ТСП отправляет команду банку на исполнение платежа, используя полученный ранее токен.
**Параметры запроса:**
| Параметр | Обяз. | Описание |
| :--- | :---: | :--- |
| `command` | Да | `QRCSubPayPetition` |
| `subscriptionToken` | Да | Токен, полученный при регистрации привязки. |
| `SenderMemberId` | Да | Идентификатор банка плательщика (`memberId`). |
| `qrcId` | Да | ID QR-кода, созданного на Этапе 1. |
**Пример запроса:**
```json
{
"command": "QRCSubPayPetition",
"TermNo": "90080567",
"subscriptionToken": "70LSS7DN18SJQRS10006DNPKLJL24B05",
"SenderMemberId": "100000000008",
"qrcId": "AD10000BBJKO23GB98LA1FGBRIHH3K89"
}
```
### 3.1. Статусы решения банка (`resolution/notification`)
После запроса на списание банк присылает уведомление с результатом:
| Код | Описание |
| :--- | :--- |
| `RQ00030` | **Успех.** Согласие на проведение платежа. |
| `RQ05031` | Отказ: Привязка не найдена (клиент мог её удалить). |
| `RQ05060` | Отказ: Недостаточно средств. |
| `RQ05061` | Отказ: Превышен лимит СБП. |
| `RQ05063` | Отказ: Подозрение на мошенничество. |
---
## 4. Запрос статуса привязки
Если ТСП не получило callback, можно запросить статус привязки вручную.
### Метод `GetQRCSubStatus`
**Запрос:**
```json
{
"command": "GetQRCSubStatus",
"TermNo": "90080567",
"qrcId": "BB1S002PRSK6SR3E9R7P0H077UKN1QVF"
}
```
**Ответ (успешная привязка):**
```json
{
"ErrorCode": 0,
"status": "ACWP",
"subscriptionToken": "70LSS7DN18SJQRS10006DNPKLJLAGT77",
"memberId": "600000000015",
"message": "OK"
}
```
---
## Важные примечания для разработчиков
1. **Лимиты:** Оплата с привязанного счета возможна на сумму до **1 000 000 руб.** за одну операцию.
2. **Кодировка:** Текстовые данные в ответах могут передаваться в формате `urlencoded` (например, `%u0423%u0441%u043F%u0435%u0445` для слова "Успех").
3. **Безопасность:** Система ТСП должна игнорировать неизвестные дополнительные параметры в уведомлениях от НСПК/Банка, не считая их ошибкой.
4. **Хранение данных:** Потеря `subscriptionToken` делает невозможным рекуррентное списание. В этом случае потребуется повторная привязка через QR-код.
# Цифровой рубль: Техническая документация по интеграции
Цифровой рубль (ЦР) — это третья форма национальной валюты, дополняющая наличные и безналичные средства. Счета цифрового рубля открываются на платформе Центрального банка, а доступ к ним осуществляется через мобильные приложения и интернет-банки коммерческих банков.
Прием платежей в ЦР осуществляется в рамках **Универсального платёжного кода (УПК)**.
---
## 1. Динамический QR-код (Одноразовый УПК)
Динамический код формируется под конкретную операцию с фиксированной суммой.
### 1.1. Регистрация динамического УПК
Для генерации кода можно использовать существующий метод `GetQRCd` или специализированный метод `ReqUniQr`.
#### Метод `ReqUniQr`
Запрос направляется ТСП в Банк для регистрации универсальной платёжной ссылки в API СБП.
**Параметры запроса:**
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String | Y | Константа `ReqUniQr` |
| `TermNo` | String | Y | Уникальный идентификатор терминала |
| `amount` | Number | O* | Сумма в копейках (обязательна для `uniQrType = 02`) |
| `uniQrType` | String | Y | Тип ссылки: `01` — многоразовая, `02` — одноразовая |
| `mediaType` | String | O | Расширение QR-кода (напр., `image/png`) |
| `width` / `height` | String | O | Размеры изображения в пикселях |
| `paymentPurpose` | String | O | Назначение платежа |
| `redirectUrl` | String | O | URL для возврата в приложение ТСП (ASCII/RFC3986) |
| `messageID` | String | O | Уникальный GUID сообщения |
| `qrTtl` | String | O | Срок жизни ссылки в минутах |
| `queryData.notificationUrl` | String | O | URL для уведомления о статусе оплаты |
**Пример запроса:**
```json
{
"command": "ReqUniQr",
"TermNo": "90080567",
"amount": "10000",
"uniQrType": "02",
"redirectUrl": "https://alfabank.ru/sme/payservice/sbp/",
"mediaType": "image/png",
"width": "600",
"height": "600",
"messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8",
"queryData": {
"notificationUrl": "https://sbp-payments",
"SenderFIO": "Иванов Иван Иванович"
}
}
```
**Параметры ответа:**
- `ErrorCode`: `0` — успех.
- `payload`: Платёжная ссылка.
- `image`: Изображение QR-кода в Base64.
- `uniQrId`: Идентификатор ссылки.
- `status`: Статус (обычно `CREATED`).
---
### 1.2. Проверка статуса оплаты динамического УПК
Используется метод `GetUniQrStatus`.
**Специфические статусы для Цифрового рубля:**
* `ENDD`: Платёж в ЦР обработан, но финальный результат (успех/отказ) пока неизвестен.
* `ACDR`: Платёж в ЦР успешно выполнен (аналог `ACWP` для СБП).
**Структура блока `data` (массив Record) в ответе:**
| Ключ | Описание |
| :--- | :--- |
| `paymentServiceId` | `PS0000000001` (СБП) или `PS0000000002` (ЦР) |
| `status` | `NTST` (не начат), `RCVD` (в процессе), `ACWP` (успех СБП), `RJCT` (отказ), `ENDD` (ЦР в обработке), `ACDR` (успех ЦР) |
---
## 2. Кассовая платёжная ссылка (Многоразовый УПК)
Многоразовый код, который обычно размещается в кассовой зоне.
### 2.1. Регистрация кассового УПК
Метод: `RegCashUniQr`.
**Особенности:**
* Позволяет привязать конкретный `qrcId`.
* В настройках ТСП на стороне Банка должен быть обязательно указан счет ЦР (`accountDR`).
**Пример ответа:**
```json
{
"ErrorCode": "0",
"message": "OK",
"TermNo": "90080567",
"payload": "https://qr.nspk.ru/BS2R003FS8EFGAVM852PQS13N894HDLU?type=01...",
"image": "iVBORw0KGgoAAAANSUhEUgAAAlg...",
"qrcId": "BS2R003FS8EFGAVM852PQS13N894HDLU",
"status": "CREATED"
}
```
---
### 2.2. Изменение параметров кассового УПК
Метод `ChangeAccForCashUniQr` позволяет обновить привязанные счета или параметры терминала без смены самого QR-кода.
**Ключевые параметры для изменения:**
* `account`: Новый счет для СБП.
* `accountDR`: Новый счет для Цифрового рубля (строго 55 символов).
* `NewTermNo`: Смена ID терминала.
* `NewMerchantId`: Смена ID мерчанта в НСПК.
---
### 2.3. Проверка статуса кассового УПК
Метод: `GetCashUniQrStatus`.
**Важные поля ответа:**
* `paymentServiceId`: Определяет, как заплатил клиент (`PS0000000002` — Цифровой рубль).
* `cashRegisterQrcStatus`: Статус самой ссылки (`WAITING_PAYMENT`, `IN_PROGRESS`, `DEACTIVATED`).
---
## 3. Нотификация об исполнении перевода (C2B)
Сообщение отправляется со стороны Банка на сервер ТСП при получении финального статуса платежа.
**Метод:** `paymentDR/notification` (POST запрос)
**Параметры запроса:**
| Код ключа | Тип данных | Назначение |
| :--- | :--- | :--- |
| `command` | String | `paymentDR/notification` |
| `uniQrId` | String | Идентификатор платежа |
| `operationId` | String | ID операции на платформе ЦР |
| `status` | String | Статус (напр. `ACWP` или `RCVD`) |
| `amount` | String | Сумма в рублях (с разделителем-точкой) |
| `timestamp` | ISO8601 | Дата и время операции |
| `payrrn` | String | Референс платежа |
**Пример нотификации:**
```json
{
"command": "paymentDR/notification",
"uniQrId": "AD2000670LSS7DN18SJQDNP4B05KLJL1",
"operationId": "546464AX45546",
"status": "ACWP",
"amount": "10241.21",
"timestamp": "2024-08-01T10:15:00.000Z",
"payrrn": "102345678912",
"TermNo": "90080567",
"merchantName": "Рога и Копыта",
"purpose": "Кофе и булочка"
}
```
**Ожидаемый ответ от ТСП:**
* `HTTP 200 OK` — уведомление успешно принято.
* `HTTP 500` — внутренняя ошибка (будет произведена повторная попытка).
---
## Приложение: Справочник статусов (status)
| Код | Описание | Применимость |
| :--- | :--- | :--- |
| **NTST** | Платёж не начат | СБП / ЦР |
| **RCVD** | Платёж инициирован / в обработке | СБП / ЦР |
| **ACWP** | Платёж успешно выполнен | СБП |
| **RJCT** | Платёж отклонён | СБП |
| **ENDD** | Платёж обработан (результат уточняется) | **ЦР** |
| **ACDR** | Платёж успешно выполнен | **ЦР** |
# Дополнительные методы API СБП (Альфа-Банк)
Данный документ содержит описание дополнительных методов API для работы с Системой Быстрых Платежей (СБП) через платежный шлюз (ПШ) Альфа-Банка.
> **Примечание:** Таблицы кодов ответов (`ErrorCode`) и их расшифровок приведены в Приложении №2 к основной документации.
---
## 1. Запрос списка банков-участников СБП (`GetBankList`)
Метод используется ТСП для получения актуального списка банков, поддерживающих оплату через СБП.
### 1.1. Параметры запроса
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String (an-1..50) | **Y** | Тип запроса. Константа: `GetBankList` |
| `messageID` | String (ans-1..1024) | N | Уникальный идентификатор сообщения (GUID) |
| `BankMemberIdFilter` | String (n-11) | N | Фильтр по ID участника СБП (если нужен только один банк) |
**Пример запроса:**
```json
{
"command": "GetBankList"
}
```
### 1.2. Параметры ответа
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `ErrorCode` | String (an-20) | **Y** | Код ответа |
| `message` | String (ans-1024) | **Y** | Расшифровка кода ответа |
| `BankList` | Array | N | Коллекция банков-участников |
| `BankList.BankName` | String (an-50) | N | Наименование банка |
| `BankList.BankID` | String (an-12) | N | Идентификатор участника СБП в НСПК |
| `BankList.BankBIK` | String (n-9) | N | БИК банка (если передан из НСПК) |
**Пример успешного ответа:**
```json
{
"ErrorCode": 0,
"message": "Запрос обработан успешно",
"BankList": [
{
"BankName": "Наименование банка 1",
"BankID": "10000001100",
"BankBIK": "044525823"
},
{
"BankName": "Наименование банка N",
"BankID": "10000001145",
"BankBIK": "044525829"
}
]
}
```
---
## 2. Блокирование QR-кода (`BlockQRcId`)
Запрос направляется для блокировки ранее сгенерированного QR-кода любого типа.
### 2.1. Параметры запроса
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String (an-1..50) | **Y** | Тип запроса. Константа: `BlockQRcId` |
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
| `qrcId` | String (an-32) | **Y** | Идентификатор QR-кода |
| `reason` | String (ans-1024) | N | Причина блокировки |
**Пример запроса:**
```json
{
"command": "BlockQRcId",
"TermNo": "90080567",
"qrcId": "BS1R003FN6RS6HL48QMBFVO5C4K9GQRV",
"reason": "Заказ 12345 направлен в стоп-лист"
}
```
### 2.2. Параметры ответа
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `ErrorCode` | String (an-20) | **Y** | Код ответа |
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
| `message` | String (ans-1024) | **Y** | Расшифровка кода ответа |
**Пример успешного ответа (200 OK):**
```json
{
"ErrorCode": 0,
"TermNo": "90080567",
"message": "OK"
}
```
---
## 3. Разблокирование QR-кода (`UnblockQRcId`)
Запрос используется для восстановления активности ранее заблокированного QR-кода.
### 3.1. Параметры запроса
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String (an-1..50) | **Y** | Тип запроса. Константа: `UnblockQRcId` |
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
| `qrcId` | String (an-32) | **Y** | Идентификатор QR-кода |
**Пример запроса:**
```json
{
"command": "UnblockQRcId",
"TermNo": "90080567",
"qrcId": "BS1R003FN6RS6HL48QMBFVO5C4K9GQRV"
}
```
### 3.2. Параметры ответа
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `ErrorCode` | String (an-20) | **Y** | Код ответа |
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
| `message` | String (ans-1024) | **Y** | Расшифровка кода ответа |
**Пример успешного ответа:**
```json
{
"ErrorCode": 0,
"TermNo": "90080567",
"message": "OK"
}
```
---
## 4. Список заблокированных QR-кодов (`GetBlockedQRcIdList`)
Запрос позволяет получить перечень всех заблокированных QR-кодов по конкретному терминалу или кассе.
### 4.1. Параметры запроса
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `command` | String (an-1..50) | **Y** | Тип запроса. Константа: `GetBlockedQRcIdList` |
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
**Пример запроса:**
```json
{
"command": "GetBlockedQRcIdList",
"TermNo": "90080567"
}
```
### 4.2. Параметры ответа
| Код ключа | Тип данных | Обяз. | Назначение |
| :--- | :--- | :---: | :--- |
| `ErrorCode` | String (an-20) | **Y** | Код ответа |
| `message` | String (ans-1024) | **Y** | Расшифровка кода ответа |
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
| `QRcIdList` | Collection | N | Список заблокированных QR-кодов |
| `QRcIdList.qrcId` | String (an-32) | **Y** | Идентификатор QR-кода |
| `QRcIdList.reason` | String (ans-1024) | N | Причина блокировки |
| `QRcIdList.date` | String (an-20) | **Y** | Дата и время блокировки |
**Пример успешного ответа:**
```json
{
"ErrorCode": 0,
"TermNo": "90080567",
"message": "OK",
"QRcIdList": [
{
"date": "2024-04-18 17:17:45",
"qrcId": "BD100000K5II0G369JHR3KBA6SM3FD3V",
"reason": "Заказ 12345 направлен в стоп-лист"
},
{
"date": "2024-05-01 19:07:15",
"qrcId": "BD100002JN871TSC9SJB7HPVRFD3HQ8T",
"reason": "Заказ 96780 направлен в стоп-лист"
}
]
}
```
---
## Обработка ошибок (Общий формат)
В случае ошибки (например, `400 Bad Request`), шлюз возвращает JSON следующего вида:
```json
{
"ErrorCode": "Код ошибки",
"message": "Расшифровка причины ошибки"
}
```
# Приложения к технической спецификации СБП
## Приложение 1. Формат Payload
В Системе быстрых платежей (СБП) используется формат двухмерного кода **QR Code (ISO/IEC 18004-2015)**. Payload (полезная нагрузка) может быть представлен в двух вариантах.
### Варианты Payload
* **Короткий вариант:** `https://{HOST}/{QR_ID}`
* **Длинный вариант:** `https://{HOST}/{QR_ID}?type={QR_TYPE}&bank={MEMBER_ID}&sum={SUM}&cur={CUR}&crc={CRC}`
### Описание параметров URL-based payload
| Параметр | Описание | Обяз. | Формат |
| :--- | :--- | :---: | :--- |
| **HOST** | `qr.nspk.ru` — для QR_TYPE 01 и 02<br>`sub.nspk.ru` — для QR_TYPE 03 | y | String |
| **QR_ID** | Идентификатор зарегистрированного QR-кода в СБП | y | String (32 симв.) |
| **QR_TYPE** | Тип QR-кода:<br>01 — QR Static (наклейка)<br>02 — QR Dynamic (на кассе)<br>03 — QR-Subscription (привязка счета) | y | String (2 цифры) |
| **MEMBER_ID** | Идентификатор Банка Получателя (ТСП) | y | String (12 симв.) |
| **SUM** | Сумма в копейках. Обязательна для типа 02. Отсутствует для типа 03. | y/o | String (до 12 цифр) |
| **CUR** | Валюта операции (обязательна, если присутствует SUM) | y/o | String (3 симв.) |
| **CRC** | Значение контрольной суммы | y | String (4 симв.) |
---
## Приложение 2. Описание кодов ответа
Полный перечень кодов представлен на сайте НСПК. Коды, не описанные ниже, следует обрабатывать как **техническую (системную) ошибку**.
### Общие коды ошибок системы
| Код | Сообщение / Описание |
| :--- | :--- |
| **0** | **OK** (Успешно) |
| **-999** | Прочее сообщение FSCryptoProxy |
| **-71** | Неверные данные Basic-авторизации запроса |
| **-9** | Система перегружена. Повторите запрос позже |
| **-7** | Неверная подпись сообщения (ошибка ключей) |
| **-6** | Не передана подпись в заголовке Authorization |
| **-1** | Возникли проблемы при обработке запроса |
| **1** | Внутренняя ошибка |
| **2** | Терминал не обнаружен |
| **8** | Таймаут ответа |
| **25** | Терминал заблокирован |
| **1001** | Сервис временно недоступен |
### Коды ОПКЦ СБП (RQ-серия)
| Код | Описание |
| :--- | :--- |
| **RQ00000** | Запрос обработан успешно |
| **RQ03001** | Ошибка валидации. Неверный формат запроса |
| **RQ05002** | Участник (memberId) не найден в СБП |
| **RQ05005** | ТСП (merchantId) не зарегистрировано в СБП |
| **RQ05009** | Сумма (amount) меньше минимально допустимой |
| **RQ05010** | Сумма (amount) больше максимально допустимой |
| **RQ05014** | Идентификатор qrcId не найден |
| **RQ05032** | Отказ Банка Плательщика в выполнении платежа |
| **RQ05040** | Сумма возврата превышает сумму исходной операции |
| **RQ07999** | Техническая ошибка |
---
### Ошибки по конкретным методам
#### Метод `GetQRCd` (Запрос QR-кода)
| Код | Описание |
| :--- | :--- |
| **3** | Не заполнены данные запроса |
| **28** | Запрос QR-кода не удался, не получен QR_ID |
| **301** | Некорректно заполнены данные |
| **999*** | Неизвестная ошибка. Требуется уточнение статуса |
#### Метод `GetQRCstatus` (Статус платежа)
| Код | Описание |
| :--- | :--- |
| **4** | Не передан qrcId или payrrn |
| **5** | Не получены данные от СБП |
| **18** | Платеж не найден в запросах B07, B23 |
#### Методы возврата (`GetQRCreversalData`, `QRCreversal`)
| Код | Описание |
| :--- | :--- |
| **12** | Не найдены данные для возврата |
| **20** | Получен отказ на запрос возврата |
| **22** | Несоответствие payrrn и qrcId в запросе |
| **27** | Возврат невозможен: счет зачисления не равен счету списания |
| **121** | Операция оплаты еще не имеет финального статуса |
| **201** | Отказ: Недостаточно средств на счете для возврата |
---
### Коды callback-уведомлений (Оплата с привязанного счета)
Используются в методе `resolution/notification`.
| Код | Описание |
| :--- | :--- |
| **RQ05060** | Недостаточно денежных средств |
| **RQ05061** | Превышен лимит по сумме операций СБП |
| **RQ05063** | Подозрение в мошенничестве (Anti-fraud) |
| **RQ05065** | Счет заблокирован |
| **RQ05067** | Запрещено по требованию законодательства |
> **Примечание:** Использование кода `RQ05032` допускается не более чем в 20% случаев от общего числа отказов Банка Плательщика.
---
## Приложение 3. Пояснение для колонки «Required»
| Метка | Значение |
| :---: | :--- |
| **y** | **Yes** — обязательное поле |
| **o** | **Optional** — опциональное поле |
| **y/o** | **Conditional** — условно обязательное (зависит от условий запроса) |
---
## Приложение 4. Типы данных
| Нотация | Описание |
| :--- | :--- |
| **a** | Символы латинского (A-Z, a-z) и русского (А-Я, а-я) алфавитов. |
| **n** | Цифры 0-9. |
| **an** | Буквенно-цифровой формат (смесь **a** и **n**). |
| **ans** | Буквенно-цифровой формат со спецсимволами (пробел, пунктуация, знаки `№`, `%` и т.д.). |
**Кодировка:** Все данные передаются в кодировке **UTF-8**.
]]>
</_0_full_md>
<_1_main_md>
<![CDATA[
Главная
Добро пожаловать на портал с инструкцией по интеграции СБП C2B
Здесь есть вся необходимая информация, которая поможет успешно провести прямую интеграцию с платёжным шлюзом Альфа-Ба
Важное объявление
С 1.11.2024 адрес тестового стенда будет изменён на новый URL — https://217.12.103.132:2443/fsCryptoProxy
Старые адреса http://217.12.103.147:9914/fsCryptoProxy и https://217.12.103.147:443/fsCryptoProxy станут недоступны
В случае если ваши запросы перестанут успешно отрабатываться ПШ банка до 1.11.2024, необходимо заменить URL на новый, не д
Для направления запросов на новый URL обязательно устанавливается MTLS соединение
В случае если у вас нет ключевой пары для поднятия MTLS соединения на тестовой среде, вам необходимо обратиться в банк по 
Информация о том, как направлять запросы с установлением MTLS соединения на тестовой среде, находится по ссылке в разделе
Обзор API
• API позволяет направлять запросы на платёжный шлюз Альфа-Банка (далее — ПШ), чтобы совершать операции с помощью сервис
• Взаимодействие с платёжным шлюзом Альфа-Банка происходит по протоколу HTTPS
• API использует REST-архитектуру, методы POST
• POST-запросы используют JSON-аргументы
• API всегда возвращает ответ в формате JSON
• Ответ от платежного шлюза всегда содержит код ответа — ErrorCode
• Если в процессе обработки запроса произойдёт логическая ошибка, API вернёт её описание в поле message
• Текстовые данные возвращаются в ответе на запрос в формате urlencoded
• Все вопросы по процессу имплементации через данный протокол API можно направлять на адрес сопровождения — acquiring@alfa
Процесс аутентификации
Аутентификация на тестовой среде
Взаимодействие с платёжным шлюзом Альфа-Банка (далее — ПШ) на тестовой среде происходит через интернет по протоколу HTTP
Чтобы установить MTLS-соединение на тестовой среде, банк выдаёт клиенту ключевую пару RSA/TLS: сертификат и приватный клю
MTLS-соединение позволяет произвести двустороннюю аутентификацию.
Внимание
ПШ не обрабатывает запросы с сертификатом MTLS-соединения, по которому истёк срок жизни
Если ПО клиента пытается верифицировать серверный сертификат банка, необходимо добавить в доверенные сертификат удостове
Клиентский самоподписанный сертификат подписывает каждое тело запроса, которое клиент направляет на тестовой среде с помо
Чтобы получить этот сертификат, необходимо самостоятельно сгенерировать ключевую пару client.crt и client.key:
• client.crt — сертификат, который клиент передаёт в банк, чтобы зарегистрировать на тестовой среде
• client.key — приватный ключ, который клиент оставляет у себя, чтобы подписывать тело запроса на тестовой среде
Пример генерации запроса на ключевую пару client.crt и client.key с помощью OpenSSL:
openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 3650
12/23/25, 11:20 AM Главная
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 1/7
https://alfabank.ru/sme/payservice/sbp/docs/welcome/?rp-menuOpen=1
https://217.12.103.132:2443/fsCryptoProxy
http://217.12.103.147:9914/fsCryptoProxy
https://217.12.103.147/fsCryptoProxy
https://alfabank.ru/sme/payservice/sbp/docs/welcome/?rp-menuOpen=1#authentication_process
mailto:acquiring@alfabank.ru
Пример заполнения полей:
• Country Name (2 letter code) []: RU
• State or Province Name (full name) []:
• Locality Name (eg, city) []: Moscow
• Organization Name (eg, company) []: COMPANY
• Organizational Unit Name (eg, section) []: IT
• Common Name (eg, fully qualified host name) []: Company Pay C2B
• Email Address []: admin@test.ru
Примечание
• Длина RSA ключа может быть 2048 или 4096 бит
• Ключевую пару генерируют на срок не менее 10 лет
Файл client.crt необходимо направить в банк, чтобы зарегистрировать его на тестовой среде по адресу acquiring@alfabank.ru
Вместе с файлом client.crt нужно указать:
1. ИНН, наименование организации, на которую регистрируете сертификат
2. Тип среды, для которой выпущен сертификат: тестовая или промышленная
3. Информацию о том, как регистрируете сертификат: первично или повторно взамен истёкшего с alias…
4. К письму обязательно приложите файл client.crt в архиве без пароля
Пример письма:
• Тема письма:
Регистрация сертификата на тестовом стенде СБП C2B
• Тело письма:
Просим зарегистрировать сертификат, чтобы направлять запросы на тестовый стенд банка по продукту СБП C2B.
Сертификат выпущен впервые / повторно взамен истёкшего с alias…
Название организации:
ИНН:
Сертификат — во вложении.
Письмо на регистрацию сертификата можно направить, если кликнуть на email-адрес acquiring@alfabank.ru. Тогда откроется предзап
После регистрации сертификата на тестовой среде банк передаёт клиенту:
1. Аlias — имя сертификата, который зарегистрирован на тестовой среде. Оно должно быть указано в headers — key-name при напра
2. Клиентский сертификат RSA/TLS — он нужен, чтобы поднять MTLS-соединение на тестовой среде
3. Сертификат удостоверяющего центра c2b-ca-test.crt вместе с промежуточным и удостоверяющим сертификатом root для тестово
4. Тестовый номер терминала TermNo
Аутентификация на промышленной среде
Взаимодействие с платёжным шлюзом Альфа-Банка на промышленной среде происходит через интернет по протоколу HTTPS, при
Чтобы установить MTLS-соединение на промышленной среде, банк выдаёт клиенту ключевую пару RSA/TLS — сертификат и приватн
Внимание
ПШ не обрабатывает запросы с сертификатом MTLS-соединения, по которому истёк срок жизни
Если ПО клиента пытается верифицировать серверный сертификат банка, необходимо добавить в доверенные сертификат удостове
Клиентский самоподписанный сертификат подписывает каждое тело запроса, которое клиент направляет на промышленной среде
Чтобы получить этот сертификат, клиенту необходимо самостоятельно сгенерировать ключевую пару client.crt и client.key:
• client.crt — сертификат, который клиент передаёт в банк, чтобы зарегистрировать на промышленной среде
12/23/25, 11:20 AM Главная
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 2/7
mailto:admin@test.ru
mailto:acquiring@alfabank.ru
mailto:acquiring@alfabank.ru
• client.key — приватный ключ, который клиент оставляет у себя, чтобы подписывать тело запроса на промышленной среде
Пример генерации запроса на ключевую пару client.crt и client.key с помощью OpenSSL:
Пример заполнения полей
• Country Name (2 letter code) []: RU
• State or Province Name (full name) []:
• Locality Name (eg, city) []: Moscow
• Organization Name (eg, company) []: COMPANY
• Organizational Unit Name (eg, section) []: IT
• Common Name (eg, fully qualified host name) []: Company Pay C2B
• Email Address []: admin@test.ru
Примечание
• Длина RSA ключа может быть 2048 или 4096 бит
• Ключевую пару генерируют на срок не менее 10 лет
Файл client.crt необходимо направить в банк, чтобы зарегистрировать его на промышленной среде по адресу acquiring@alfabank.ru
Вместе с файлом client.crt необходимо указать:
1. ИНН, наименование организации, на которую регистрируете сертификат
2. Тип среды, для которой выпущен сертификат: тестовая или промышленная
3. Информацию о том, как регистрируете сертификат: первично или повторно взамен истёкшего с alias…
4. К письму обязательно приложите файл client.crt в архиве без пароля
• Тема письма:
Регистрация сертификата на промышленном (боевом) стенде СБП C2B
• Тело письма:
Просим зарегистрировать сертификат, чтобы направлять запросы на промышленный (боевой) стенд банка по продукту СБП C2B.
Сертификат выпущен впервые / повторно взамен истёкшего с alias…
Название организации:
ИНН:
Сертификат во вложении.
Письмо на регистрацию сертификата можно направить, если кликнуть на email-адрес acquiring@alfabank.ru. Тогда откроется предзап
После регистрации сертификата на промышленной среде банк передаёт клиенту:
1. Аlias — имя сертификата, который зарегистрирован на промышленной среде. Оно должно быть указано в headers — key-name при
2. Клиентский сертификат RSA/TLS — он нужен, чтобы поднять MTLS-соединение на промышленной среде
3. Сертификат удостоверяющего центра c2b-ca.crt вместе с промежуточным и удостоверяющим сертификатом root для промышлен
4. Эндпойнт промышленной среды
Тестирование
Чтобы провести тестирование, клиент может использовать тестовый стенд.
Эндпойнт тестовой среды (маршрут отправки) — https://217.12.103.132:2443/fsCryptoProxy
Для направления запросов обязательны следующие headers:
openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 3650
12/23/25, 11:20 AM Главная
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 3/7
mailto:admin@test.ru
mailto:acquiring@alfabank.ru
mailto:acquiring@alfabank.ru
https://217.12.103.132:2443/fsCryptoProxy
• Content-Type — application/x-www-form-urlencoded
• Authorization — помещается hash полученного тела запроса
• key-name — помещается alias зарегистрированного самоподписанного клиентского сертификата
На тестовой среде взаимодействие происходит по протоколу HTTPS.
Пример, как можно направить запрос на тестовом стенде
1. Составить тестовый запрос.
Порядок параметров в строке для вычисления hash должен соответствовать порядку, в котором параметры передаются в запрос
Пример, как сформировать блок данных:
Обязательно
В блоке данных для подписи сообщения нужно исключить все пробелы, символы табуляции и переноса строки между ключа
Примечание по полю «paymentPurpose»:
• Максимальная длина значения paymentPurpose — 140 символов
• Для значения paymentPurpose можно использовать такие символы:
• Символы латинского алфавита (A–Z и a–z) с десятичными кодами из диапазонов [065–090] и [097–122] в кодировке UTF-8
• Символы русского алфавита (А–Я и а–я) с десятичными кодами из диапазона [1040–1103] в кодировке UTF-8
• Цифры 0–9 с десятичными кодами из диапазона [048–057] в кодировке UTF-8
• Специальные символы с десятичными кодами из диапазонов [032–047], [058–064], [091–096], [123–126] в кодировке UTF-8
• Символ № под номером 8470 в кодировке UTF-8
• Символы ё с кодом 1105 и Ё с кодом 1025 не входят в допустимый диапазон для методов СБП API. Если paymentPurpose исполь
• Нельзя переводить каретку и знак табуляции НСПК допускает символы \ и n, но, чтобы совместно использовать их в JSON, н
• paymentPurpose: Платеж по дог\nовору… — неправильно
• paymentPurpose: Платеж по дог\\nовору… — правильно
{
"command":"GetQRCd",
"TermNo":"90080567",
"qrcType":"01",
"amount":"100",
"currency":"RUB",
"paymentPurpose":"Назначение платежа"
}
12/23/25, 11:20 AM Главная
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 4/7
2. Из готового запроса необходимо вычислить hash по функции sha256 и зашифровать его приватным ключом тестовой среды
Рассчитать и закрыть hash приватным ключом с помощью такой команды:
Рассмотрим пример с использованием библиотеки OpenSSL:
• client.key — имя файла приватного ключа
• signature.txt — имя файла, в который будет записан зашифрованный hash
• block.txt — имя файла с блоком данных, необходимых, чтобы рассчитать hash
Десериализовать полученные байты в base64 при помощи команды:
• signature64.txt — имя файла, в который будет записан зашифрованный hash по стандарту base64
Готовую строку нужно поместить в заголовок Authorization.
3. Проверить результат можно так:
Извлечь открытый ключ из сертификата client.crt командой:
• client.crt — имя файла клиентского сертификата
• signing-pub.key — имя файла, который получает открытый ключ
С открытым ключом можно проверить данные командой:
• signature.txt — имя файла, в который записан зашифрованный hash
• signing-pub.key — имя файла открытого ключа
• block.txt — имя файла с блоком данных, по которому рассчитан hash
Если проверка прошла успешно, придёт ответ Verified OK.
Примечание
• Команда для проверки кодировки: file -bi block.txt
• Команда для проверки символа новой строки в конце: cat -e block.txt
• Команда для удаления символа новой строки в конце: truncate -s -1 block.txt
Пример поля в составе запроса:
Клиент отправляет запрос с заголовком autorization и сообщением, которое подписано приватным ключом клиента client.key и загол
openssl dgst -sha256 -sign client.key -out signature.txt block.txt
base64 signature.txt > signature64.txt
openssl x509 -in client.crt -pubkey -noout > signing-pub.key
openssl dgst -sha256 -signature signature.txt -verify signing-pub.key block.txt
Content-Type: application/x-www-form-urlencoded
Authorization: QMm5QWnAAj8Tp1hoIvGf1Hv7RPBoGgsDyGiR5GQ2v/MaS7Yaix6LDwAcry0UBWDZzqle2hx2fC7WbWkxXGvxK2Hcx
key-name: c2b-tsp-test
12/23/25, 11:20 AM Главная
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 5/7
Body:
Как провести тестовую оплату
1. Откройте на смартфоне ссылку https://testpay.alfabank.ru/sbp-page и нажмите Сканировать QR
2. Наведите камеру смартфона на QR-код
3. Нажмите Произвести оплату.
Готово: оплата на тестовом контуре выполнена. Переходить в выбор банков не надо.
{"command":"GetQRCd","TermNo":"30000018","qrcType":"01","amount":"100","currency":"RUB","paymentPurpose"
12/23/25, 11:20 AM Главная
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 6/7
https://testpay.alfabank.ru/sbp-page
Получение статуса платежа по QR-коду, который уже оплачен
Получить статус платежа по QR-коду можно с помощью запроса GetQRCstatus или callback-уведомления от ПШ.
Запрос GetQRCstatus позволяет получить статус по оплаченному динамическому QR-коду, кассовой платёжной ссылке или при опла
Callback-уведомление уходит по оплаченному статическому и динамическому QR-коду, по кассовой платёжной ссылке или при опла
Чтобы получать callback-уведомления, торгово-сервисному предприятию (далее — ТСП) необходимо направить на email acquiring@alf
Сервер на стороне ТСП должен быть публичным, иметь протокол HTTPS и 443 порт.
Адреса, с которых ПШ отправляет callback-уведомления: 217.12.97.124, 217.12.101.32.
Дополнительная информация по вызову метода GetQRCstatus
• В интеграционном тестовом окружении для метода GetQRCstatus введено ограничение частоты запросов: не более 4 запросов в м
• Ограничение введено в связи с лимитами на стороне НСПК (Национальная система платёжных карт): общий лимит — 60 запросов в
• Чтобы исключить паразитический/избыточный трафики обеспечить стабильность работы тестового контура, мы выделили для да
• При превышении лимита запросы будут отвергаться кодом 429 (Too Many Requests).
Переход на промышленную среду
Чтобы перейти на промышленную среду, необходимо заключить сделку по СБП с Альфа-Банком и запросить боевые доступы — для
Пример письма есть в разделе Аутентификация на промышленной среде
Срок, за который банк предоставит боевые данные, — до трёх рабочих дней.
12/23/25, 11:20 AM Главная
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 7/7
mailto:acquiring@alfabank.ru
]]>
</_1_main_md>
<_2_general_provisions_md>
<![CDATA[
Общие положения
Каналы взаимодействия
1. Взаимодействие с хостом Альфа-Банка осуществляется через сеть Интернет по протоколу HTTP(S) с использованием клиентских
сертификатов RSA/TLS.
2. Порядок выпуска, установки и применения сертификатов определяется Удостоверяющим Центром Заказчика и не является пред
данных ТУ, за исключением требований к имени (алиас) сертификатов на прокси-сервере Заказчика:
• Имя (алиас) сертификата должно соответствовать коду терминала запроса и реквизиту заголовка запроса key-name;
• При проверке соединения используется сертификат с именем равным обязательному параметру TermNo тела запроса и реквиз
заголовка запроса key-name.
Идентификация Виртуального терминала
Описание по идентификации
1. Каждый виртуальный терминал получает регистрационный номер (далее — «TermNo»).
2. TermNo требуется для определения виртуального терминала, кассы или системы.
3. Для каждого адреса ТСП присваивается минимум 1 виртуальный терминал и максимум по запросу.
4. TermNo определяет принадлежность терминала ЮЛ и конкретному ТСП, а также расчетный счет ЮЛ в системе Заказчика, на кото
будут поступать средства покупателей.
5. TermNo сохраняется в настройках виртуального терминала и с клиентским сертификатом используется в информационном обмен
на прикладном уровне протокола взаимодействия.
6. Оплата производится покупателями самостоятельно, необходимая для оплаты информация передается покупателю посредством
кода СБП, отображаемом на экране Агент ТСПа, или распечатанном на чеке или кассе или ссылке и т. д.
7. Получение динамических QR-кодов СБП и проверка их оплаты осуществляются с обязательным использованием TermNo.
Общий порядок работы
Оплата покупки через СБП
1. Кассир указывает на терминале (в случае кассового решения получает из ПО кассы) следующие параметры:
• Сумма;
• Валюта (подставляются автоматически);
• Назначение платежа (подставляется автоматически).
2. ТСП запрашивает динамический QR-код;
3. ТСП отображает полученное изображение (или печатает предварительный чек с изображением);
4. Покупатель:
• сканирует QR-код в приложении своего смартфона;
• получает и проверяет необходимую для подтверждения доп. информацию;
• подтверждает оплату;
• сообщает о проведении оплаты кассиру.
5. Кассир на терминале запрашивает подтверждение оплаты;
6. ТСП запрашивает подтверждение оплаты полученного ранее QR-кода
12/23/25, 11:21 AM Общие положения
https://alfabank.ru/sme/payservice/sbp/docs/general/?rp-menuOpen=1 1/4
7. Получив подтверждение, ТСП печатает чек оплаты QR-кода с указанием:
•  qrcId
• кода транзакции СБП
• даты и времени оплаты QR-кода
Возврат покупки через СБП
Особенность возврата покупки через ТСП:
1. Требует обязательного наличия чека и указания кода транзакции СБП;
2. Может производиться исключительно:
• по идентификатору плательщика (номеру телефона), осуществившего оплату;
• возврат средств возможен только в Банк-участник СБП из которого проводилась оплата;
• возврат осуществляется на счет плательщика, предназначенный для приема переводов СБП (счет по умолчанию для номера
телефона получателя).
Кассир указывает на терминале следующие параметры:
1. Сумма возврата покупки (частичного возврата);
2. Валюта;
3. Назначение платежа;
4. Данные из чека оплаты QR-кода покупателя:
• Код транзакции СБП;
• qrcId;
• Дату оплаты QR-кода.
ТСП запрашивает возможность возврата оплаты QR-кода;
После подтверждения возможности возврата:
• На хосте Банка найдена исходная операция и имеются все необходимые данные для возврата, кассир указывает на терминале
одноразовый код подтверждения возврата (порядок получения кассиром одноразового кода подтверждения (SMS/PUSH сообще
или производится иная аутоинтефикация ответственного пользователя, обладающего правом выполнения подобны действий.
• Любой способ проверки полномочий сотрудника ЮЛ совершать возвраты, если таковой необходим оговаривается отдельно.
ТСП запрашивает возврат и печатает чек возврата с указанием:
Данные из чека оплаты QR-кода покупателя: * Код транзакции «payrnn»; * Сумма возврата, может быть меньше или равна сумме,
указанной в чеке оплаты; * Конечный список используемых при возврате параметров может быть измен, оговаривается отдельно.
Регистрация кассовой ссылки
• ТСП отправляет запрос на создание кассовой ссылки Агенту ТСП;
• Агент ТСП отправляет запрос на создание кассовой ссылки в ОПКЦ СБП;
• ОПКЦ СБП возвращает данные новой Кассовой ссылки Агенту ТСП;
• Агент ТСП передает данные Кассовой ссылки в ТСП
• Агент ТСП размещает QR-код с данными Кассовой ссылки у кассы или иными аналогичными способами для возможности считыва
его электронными устройствами клиентов (смартфон, планшет и т. п.) в процессе оплаты ими покупок.
Активация кассовой ссылки
1. ТСП направляет запрос на активацию Кассовой ссылки Агенту ТСП;
• В запросе активации ТСП передает идентификатор ранее зарегистрированной кассовой ссылки и параметры оплаты;
• В параметрах оплаты обязательно следует передавать сумму платежа, валюту платежа и назначение платежа, а также другие
служебные параметры запроса, описанные в спецификации.
• Для получения уведомлений о статусе оплаты по активированной ссылке ТСП должно передать в специальном параметре запр
активации адрес для коллбеков с уведомлением от НСПК о статусе операций оплаты.
2. Агент ТСП передает запрос на активацию Кассовой ссылки в ОПКЦ СБП;
12/23/25, 11:21 AM Общие положения
https://alfabank.ru/sme/payservice/sbp/docs/general/?rp-menuOpen=1 2/4
3. ОПКЦ СБП передает Агенту ТСП уведомление об активации Кассовой ссылки;
4. Агент ТСП передает в ТСП уведомление об активации Кассовой ссылки;
5. ТСП сообщает клиенту о возможности оплаты по QR-коду, полученного в процессе создания (регистрации) кассовой ссылки, кото
клиент может считать с помощью своего электронного устройства;
6. Клиент производит оплату C2B с помощью своего электронного устройства;
7. Агент ТСП получает уведомление от НСПК о финальном статусе операции C2B;
8. ТСП запрашивает статус операции у Агента ТСП или получает уведомление о статусе операции в случае, если ранее в запросе
активации кассовой ссылки был передан адрес для коллбеков с уведомлением о статусе оплат.
Деактивация кассовой ссылки
1. Клиент или ТСП принимает решение об отсутствии возможности или необходимости оплаты по ранее активированной кассовой
ссылке;
2. ТСП отправляет запрос Агенту ТСП на деактивацию кассовой ссылки;
3. Агент ТСП передает запрос на деактивацию Кассовой ссылки в ОПКЦ СБП;
4. ОПКЦ деактивирует ссылку и передает Агенту ТСП оповещение об этом;
5. Агент ТСП передает оповещение о деактивации ссылки в ТСП.
Возврат по ранее оплаченной кассовой ссылке
a) Для возврата по ранее оплаченной кассовой ссылке отличий от ранее реализованных процессов возврата по операциям C2B нет
за исключением того, что обязательно требуется передавать значение параметра «payrrn» без «qrcid».
Изменение счета ТСП для ранее зарегистрированной кассовой ссылки
a) ТСП принимает решение о необходимости смены счета, который был использован в процессе создания (регистрации) кассовой
платежной ссылки;
b) ТСП обращается с запросом о изменении счета по ранее зарегистрированной кассовой ссылке к Агенту ТСП;
c) Агент ТСП передает запрос о смене счета в НСПК;
d) НСПК сообщает о результате выполнения запроса Агенту ТСП;
e) ТСП уточняет статус операции смены счета у Агента ТСП. Автоматического уведомления ТСП о смене счета по ранее
зарегистрированной кассовой ссылки не поддерживается.
Регистрация QR-кода для привязки счета
1. ТСП регистрирует QR-код с типом «03» для привязки счета клиента к функциональности оплат по инициативе ТСП;
2. Агент ТСП передает запрос на регистрацию QR-кода для привязки счета в НСПК;
3. Клиент считывает QR-код при помощи своего электронного устройства;
4. Банк Плательщика получает данные QR-кода из запроса в НСПК;
5. Банк Плательщика отображает детали привязки счета на электронном устройстве Клиенту;
6. Клиент принимает решение о привязке счета;
7. Банк плательщика сообщает о решении клиента в НСПК;
8. НСПК сообщает Агенту ТСП о решении по привязке счета;
9. ТСП получает уведомление о статусе совершенной Плательщиком привязки счета в случае, если в запросе на регистрацию QR-ко
был передан адрес для коллбеков.
Регистрация QR-кода для оплаты с привязкой счета
1. ТСП регистрирует QR-код для оплаты как описано в пункте «Оплата покупки через СБП», но с дополнительным параметром
«subscriptionPurpose»;
2. После успешного завершения оплаты по QR-коду Банк Плательщика должен инициировать на электронном устройстве клиента
сценарий получения решения клиента по привязке счета для оплат по инициативе ТСП, оплату в пользу которого только что сов
клиент;
3. Банк Плательщика отображает детали привязки счета на электронном устройстве Клиенту;
12/23/25, 11:21 AM Общие положения
https://alfabank.ru/sme/payservice/sbp/docs/general/?rp-menuOpen=1 3/4
4. Клиент принимает решение о привязке счета;
5. Банк плательщика сообщает о решении клиента в НСПК;
6. НСПК сообщает Агенту ТСП о решении по привязке счета;
7. ТСП получает уведомление о статусе совершенной Плательщиком привязки счета в случае, если в запросе на регистрацию QR-ко
был передан адрес для коллбеков.
Оплата с привязанного счета по инициативе ТСП
1. ТСП регистрирует QR-код для оплаты с привязанного счета;
2. Агент ТСП передает запрос регистрации QR в НСПК;
3. ТСП направляет запрос оплаты с привязанного счета в НСПК;
4. НСПК направляет запрос оплаты с привязанного счета в Банк Плательщика;
5. Банк Плательщика сообщает о своем решении по оплате с привязанного счета своего клиента в пользу ТСП из запроса НСПК;
6. НСПК Сообщает Агенту ТСП о решении Банка плательщика об оплате с привязанного счета;
7. Банк Плательщика начинает операцию C2B;
8. НСПК уведомляет Агента ТСП о финальном статусе операции C2B.
12/23/25, 11:21 AM Общие положения
https://alfabank.ru/sme/payservice/sbp/docs/general/?rp-menuOpen=1 4/4
]]>
</_2_general_provisions_md>
<_3_static_QR_cods_md>
<![CDATA[
Статический QR-код
Статический QR-код
Оплата по статическому QR-коду — это один из способов безналичной оплаты, альтернатива платежам совершаемых банковскими к
Статический QR-код представляет из себя изображение, которое можно распечатать и разместить на видном месте возле кассовой
Изображение такого QR-кода всегда остается неизменным.
Данный вид QR-кода реализован в двух вариантах:
• с открытой суммой, которую вводит сам покупатель;
• с фиксированной суммой, заполняемой продавцом.
Совершить оплату по статическому QR-коду возможно следующими способами:
• отсканировать изображение QR-кода камерой смартфона и далее перейти в приложение мобильного банка или отсканировать не
приложения банка;
• в случае если изображение QR-кода содержит NFC-метку, то приложить смартфона с включенным NFC-модулем и совершить опл
Если QR-код уже с фиксированной суммой, то произвести оплату по цене, указанной в реквизитах платежа, если сумма открытая, то
Средства мгновенно поступают на счёт продавца.
Терминал или дополнительное устройство в данном случае не требуется.
1. Запрос на регистрацию статического QR-кода
Метод GetQRCd
• Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…
50)
y Тип запроса. Константа «GetQRCd».
TermNo String (an-20) y Уникальный идентификатор терминала.
qrcType String (n-2) y Тип запрашиваемого QR-кода — «01».
amount Number o Сумма платежа в минорных единицах (копейках).
Значение не указывается, если сумма по платежу вводится плательщиком (сумма открыта).
width String o Ширина картинки QR-кода (только числовое значение).
height String o Высота картинки QR-кода (только числовое значение).
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»).
paymentPurpose String (ans-
140)
o Назначение платежа.
redirectUrl String (ans-
1024)
о Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаются только си
соответствовать правилам кодировки URL.
Если все же требуется использовать в redirectUrl кириллические символы, необходимо перекодировать
encoded octets согласно RFC3986.
messageID String (ans-
1024)
o Уникальный идентификатор сообщения, GUID. Только латинские символы!
12/23/25, 11:22 AM Статический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 1/9
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1
Код ключа Тип данных required Назначение
queryData.notificationUrl String (ans-
512)
o Полный URL для получения уведомления о финальном статусе оплаты QR-кода. Если параметр отсутс
• Примерный формат запроса:
• Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
TermNo String (an-20) y Уникальный идентификатор терминала.
image String (an)
Длинна зависит от формата, порядок 7000 символов.
y Изображение QR-кода содержит энкодированный BASE64 файл из
message String (ans-1024) y Расшифровка кода ответа**.
payload String (1…999) y Платежная ссылка***.
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
qrcId String (an-32) y Идентификатор QR-кода.
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
status String (an-20) y Статус регистрации Платежной ссылки СБП.
*, ** Таблица возможных кодов ответа приведена в приложении 2.
*** Формат payload может быть двух видов:
- https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF
- https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF?type=01&bank=100000000008&sum=100&cur=RUB&crc=2D0D
• Примерный формат ответа:
• 200 ОК
1 {
2 "command":"GetQRCd",
3 "TermNo":"90080567",
4 "qrcType":"01",
5 "width":"600",
6 "height":"600",
7 "amount":"10000",
8 "currency":"RUB",
9 "paymentPurpose":"Назначение платежа",
10 "messageID":"message",
11 "queryData":
12 {
13 "notificationUrl":"https://sbp-payments"
14 },
15 "redirectUrl": " https://exampletsp.io/qwertyui "
16 }
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "image": "iVBORw0KGgoAAAANSUhEUgAABEoAAARKCAIKFIRoUEQWVNAAAQA/w…...YII",
5 "message": "OK",
6 "messageID": "message",
12/23/25, 11:22 AM Статический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 2/9
https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF
https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF?type=01&bank=100000000008&sum=100&cur=RUB&crc=2D0D
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
2. Нотификация о финальном статусе оплаты статического QR-кода
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
Метод «qrc/notification»
• Описание параметров запроса:
Код ключа Тип данных required Назначение
qrcId String (an-32) y Идентификатор QR-кода.
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
status String (an-10) y Статус оплаты QR-кода в НСПК.
Возможные значения:
— ACWP — ACCEPTED операция завершена успешно;
— RJCT — REJECTED операция отклонена.
amount Number y Сумма платежа в минорных единицах (копейках).
timestamp YYYY-MMDDThh: mm: ss[.SSS]
или
YYYY-MMDDThh: mm:
ss[.SSSZ]
y Метка времени НСПК по Гринвичу (GMT).
payerId String (ans) y Идентификатор плательщика (маскированный номер телефона плательщика).
kzo String (ans 1-128) y Контрольное Значение Операции СБП.
Формируется ОПКЦ СБП. Присутствует при условии, что Операция СБП C2B по запрашиваемом
="ACWP»).
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
TermNo String (an-20) y Уникальный идентификатор терминала.
CreditDatePos String (ans 1-256) o Дата операции, установленная Банком Получателя в ходе обработки уведомления НСПК.
• Примерный формат запроса:
7 "payload": "https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF",
8 "payrrn": "000051992395",
9 "qrcId": "AS10000NJTDV88TN82CRT8CG1AU690OF",
10 "status": "CREATED"
11 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
1 {
2 "command":"qrc/notification",
3 "qrcId":"AS10000NJTDV88TN82CRT8CG1AU690OF",
12/23/25, 11:22 AM Статический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 3/9
• ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП сейчас находится в разработк
В случае добавления со стороны НСПК дополнительных параметров уведомления, система, принимающая их от шлюза Альфа-Банк
неожиданные параметры как ошибочный запрос.
3. Запрос проведения возврата по успешной оплате по статическому QR-коду
Возврат по СБП состоит из 2х последовательных запросов:
• GetQRCreversalData — проверка возможности проведения возврата;
• QRCreversal — выполнение непосредственно самого возврата.
В случае если ТСП инициирует выполнение повторных операций СБП B2C по одной и той же операции СБП C2B, то допускается не б
операций СБП B2C в течение одного операционного дня.
3.1. Запрос возможности проведения возврата
Запрос GetQRCreversalData направляется ТСП в Банк для проверки возможности возврата по ранее оплаченному QR-коду и получен
Метод GetQRCreversalData
• Описание параметров запроса:
Код
ключа Тип данных required Назначение
command String (an-1…
50)
y Тип запроса. Константа GetQRCreversalData».
TermNo String (an-20) y Уникальный идентификатор терминала.
qrcId String (an-32) y Идентификатор QR-кода.
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
trxDT String (n-14) o Дата и время отменяемого платежа.
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата не передана, то значение будет принято зн
возвратов.
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого значения валюта будет взята из данных о
messageID String (ans-
1024)
o Уникальный идентификатор сообщения, GUID. Только латинские символы!
Примечание: Терминалы с подключенным сканером и распознаванием QR-кодов могут получить «qrcId», распарсив строку QR-кода
соответствует полю «payload».
• Примерный формат запроса:
4 "trxId":"A31040920067662400000550448AD7B3",
5 "status":"ACWP",
6 "amount":"10000",
7 "timestamp":"2023-04-14T09:20:06.000Z",
8 "payerId":"\*\*\*\*\*\*\*\*\*1779",
9 "kzo":"580d2f38370f378db5915c047ba7b72014327ce455caa927b2488f224926daac85e82984c889d66e79dad8039ccdefd
10 "payrrn":"000051992395",
11 "TermNo":"90080567",
12 "CreditDatePos":"20230414"
13 }
{
` `"command":"GetQRCreversalData",
` `"TermNo":"90080567",
` `"qrcId":"AS10000NJTDV88TN82CRT8CG1AU690OF",
` `"trxId":"A31040920067662400000550448AD7B3",
` `"trxDT":"20230414062006",
` `"amount":"10000",
12/23/25, 11:22 AM Статический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 4/9
• Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
TermNo String (an-20) y Уникальный идентификатор терминала.
message String (ans-1024) y Расшифровка кода ответа**.
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
Значение параметра возвращается в случае, если оно указано в запр
payerBnkBIC String (n-9) y БИК банка получателя.
payerBnkName String (an-50) y Наименование банка получателя.
payerId String (n-13) y Идентификатор получателя (маскированный номер телефона получате
payerPam String (ans 1…140) y PAM получателя.
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
qrcId String (an-32) y Идентификатор QR-кода.
trxDT String (n-14) y Дата и время платежа по Гринвичу (GMT).
Формат времени — ГГГГММДДччммсс.
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
*, ** Таблица возможных кодов ответа приведена в приложении 2.
• Примерный формат ответа:
• 200 ОК
Примечание:
• Текстовые данные передаются в формате urlencoded;
• В случае получения "message»: «Получен отказ на запрос возврата. Статус Recall, ErrDebetMerchant: KSM0284 Invalid special cond
счёт ТСП. Он должен быть положительным и без ограничений.
• 400 Bad Request
` `"currency":"RUB",
` `"messageID":"message"
}
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "message": "OK",
5 "messageID": "message",
6 "payerBnkBIC": "044525593",
7 "payerBnkName": "%u0410%u043B%u044C%u0444%u0430%20%u0411%u0430%u043D%u043A",
8 "payerId": "*1779",
9 "payerPam": "%u0424%u0421%u0418",
10 "payrrn": "000051992395",
11 "qrcId": "AS10000NJTDV88TN82CRT8CG1AU690OF",
12 "trxDT": 20230414062006
13 "trxId": "A31040920067662400000550448AD7B3"
14 }
12/23/25, 11:22 AM Статический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 5/9
3.2. Запрос возврата оплаты по QR-коду
Запрос QRCreversal направляется ТСП в Банк для возврата по ранее произведенной оплате QR. Возврат производится только на сче
возврата (метод GetQRCreversalData).
Метод QRCreversal.
• Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…
50)
y Тип запроса. Константа «QRCreversal».
TermNo String (an-20) y Уникальный идентификатор терминала.
qrcId String (an-32) y Идентификатор QR-кода.
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
trxDT String (n-14) o Дата и время отменяемого платежа.
amount Number o Сумма платежа в минорных единицах (копейках). Если сумма возврата не передана, то значение будет
совершенных возвратов.
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого значения валюта будет взята
messageID String (ans-
1024)
o Уникальный идентификатор сообщения, GUID из сообщения «GetQRCreversalData». Обязательно если
queryData.notificationUrl String (ans-512) o Полный URL для получения уведомления о финальном статусе возврата QR-кода. Уведомление не про
* messageID — необходимо передавать точное значение, которые было указано в ответе на запрос GetQRCreversalData. Если значени
запрос GetQRCreversalData с указанием messageID и затем использовать полученный GUID при запросе на возврат.
• Примерный формат запроса:
• Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответ*.
TermNo String (an-20) y Уникальный идентификатор терминала.
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
1 {
2 "command":"QRCreversal",
3 "TermNo":"90080567",
4 "qrcId":"AS10000NJTDV88TN82CRT8CG1AU690OF",
5 "trxId":"A31040920067662400000550448AD7B3",
6 "trxDT":"20230414062006",
7 "amount":"10000",
8 "currency":"RUB",
9 "messageID":"message"
10 "queryData":
11 {
12 "notificationUrl":"http://sbp-refunds"
13 }
14 }
12/23/25, 11:22 AM Статический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 6/9
Код ключа Тип данных required Назначение
amount Number y Сумма платежа в минорных единицах (копейках).
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
message String (ans-1024) y Расшифровка кода ответа.
messageID String (ans-1024) y/o Уникальный идентификатор сообщения, GUID. Только латинские символы!
trxDT String (n-14) y Дата и время совершенного возврата по Московскому времени (MSK).
Формат времени — ГГГГММДДччммсс.
trxId String (an-32) y Уникальный идентификатор операции возврата в НСПК.
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
*, ** Таблица возможных кодов ответа приведена в приложении 2.
• Примерный формат ответа:
• 200 OK
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
{ "ErrorCode":"Код ответа", "message":"Расшифровка кода ответа" }
4. Запрос статуса возврата СБП (B2C)
Метод «GetQRCreversalStatus» необходим ТСП для уточнения статуса операции B2C (метод QRCreversal).
В запросе «GetQRCreversalStatus» обязательно должна быть передана пара параметров:
1. «payrrn» или «originalTrxId»
Один из параметров «payrrn» или «originalTrxId» используется для нахождения исходного платежа C2B.
2. «trxId» или «messageID».
Один из параметров «trxId» или «messageID» используется для нахождения операции возврата B2C, по которому требуется уточнит
Метод «GetQRCreversalStatus»
• Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «Ge
TermNo String (an-20) y Уникальный идентификатор
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "amount": 10000,
5 "currency": "RUB",
6 "message": "%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043F%u0440%u043E%u0432%u0435%u0434%u043
7 "messageID": "message",
8 "payrrn": "000051992395",
9 "trxDT": 20230414093406,
10 "trxId": "B31071502287201D00001650448AD7B3"
11 }
12/23/25, 11:22 AM Статический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 7/9
Код ключа Тип данных required Назначение
payrrn String (n-12) y/o
(обязательно, если не передан параметр «originalTrxId»)
Значение параметра «payrrn
originalTrxId String (an-32) y/o
(обязательно, если не передан параметр «payrrn»)
Идентификатор исходной оп
trxId String (an-32) y/o
(обязательно, если не передан «messageID»)
Уникальный идентификатор
messageID String (ans-1024) y/o
(обязательно, если не передан «trxId»)
Значение параметра «messa
• Примерный формат запроса:
• Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ошибки*.
TermNo String (an-20) y Уникальный идентификатор терминала.
Url String (ans 1-512) o Полный URL получения уведомления для ТСП -значение параметра, переданного при запросе возврата Q
amount Number y Сумма Операции СБП в копейках. Целое, положительное число. Валюта операции — рубли РФ.
message String (ans-1024) y Описание результата выполнения запроса**.
messageID String (an-32) o Значение параметра «messageID» из запроса «QRCreversal».
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежной ссылки СБП, по которому была выполнена исходная Опе
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B.
payerId String (an-13) y Маскированный номер телефона Клиента-Получателя (Плательщика в исходной Операции C2B, кому дел
status String (an-4) y Статус операции возврата СБП (B2C):
ACWP — ACCEPTED операция завершена успешно;
RJCT — REJECTED операция отклонена;
NTST — Статус операции неизвестен.
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C по сценарию «Возврат по Операции СБП C2B» (ГГГГММДД
trxId String (an-32) y Уникальный идентификатор операции возврата в НСПК.
*, ** Таблица возможных кодов ответа приведена в приложении 2.
• Примерный формат ответа:
{
"command": "GetQRCreversalStatus",
"TermNo": "90080567",
"payrrn": "000051992395",
"originalTrxId": "A31040920067662400000550448AD7B3",
"trxId": "B31071502287201D00001650448AD7B3",
"messageID":"message"
}
12/23/25, 11:22 AM Статический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 8/9
• 200 OK
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "amount": 10000,
5 "message": "OK",
6 "messageID":"123Rersal_Num567",
7 "originalQrcId": "AS10000NJTDV88TN82CRT8CG1AU690OF",
8 "originalTrxId": "A31040920067662400000550448AD7B3",
9 "payerId": "*********1779",
10 "URL":"http://sbp-payment/status",
11 "status": "ACWP",
12 "trxDT": 20230414093406,
13 "trxId": "B31071502287201D00001650448AD7B3"
14 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:22 AM Статический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 9/9
]]>
</_3_static_QR_cods_md>
<_4_dynamic_QR_cods_md>
<![CDATA[
Динамический QR-код
Динамический QR-код
Оплата по динамическому QR-коду — это один из способов безналичной оплаты, альтернатива платежам совершаемых банковскими
Динамический QR-код создается отдельно под каждую конкретную покупку, поэтому он сразу содержит стоимость покупки и все не
Для генерации динамического QR-кода необходимо устройство: компьютер, смартфон или терминал. Чтобы провести оплату касси
мобильного телефона или через банковское приложение, подтверждает оплату. Средства мгновенно поступают на счёт продавца.
1. Запрос на регистрацию динамического QR-кода
Метод GetQRCd
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «GetQRCd».
TermNo String (an-20) y Уникальный идентификатор терминала.
qrcType String (n-2) y Тип запрашиваемого QR-кода — «02».
amount Number y Сумма платежа в минорных единицах (копейках).
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
OrderNumber String (ans-1000) o Номер заказа.
В параметре должны передаваться только английские буквы и/или арабские
width String o Ширина картинки QR-кода (только числовое значение).
height String o Высота картинки QR-кода (только числовое значение).
paymentPurpose String (ans-140) o Назначение платежа.
messageID String (an-1…1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
qrTtl String (an-1…6) o Срок жизни Платежной ссылки СБП в минутах.
Минимальное допустимое значение — «1». Максимальное допустимое значен
Рекомендация: устанавливать срок жизни Платежной ссылки СБП не менее «
queryData.notificationUrl String (ans-512) o Полный URL для получения уведомления о финальном статусе оплаты QR-ко
Если параметр отсутствует, уведомление не производится.
redirectUrl String (ans-1024) о Содержит ссылку для автоматического возврата в приложение или на сайт ТСП
Если все же требуется использовать в redirectUrl кириллические символы, необх
Блок для внесения д
Код ключа Тип данных required
extJsonParams Object o
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 1/16
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1
Код ключа Тип данных required
JsonParam1 String (ans-250) o
JsonParam2 String (ans-250) o
... ... ...
JsonParam10 String (ans-250) o
Если требуется сформировать динамический QR-ко
Код ключа Тип
данных required Назначение
subscriptionServiceId String (32) o Идентификатор привязки. Обязательно при наличии subscriptionServiceName, т. к. параметры subscriptionS
их в ходе проверки данных привязки счёта на уникальность.
subscriptionServiceName String (70) o Наименование привязки. Обязательно при наличии subscriptionServiceId, т. к. параметры subscriptionServic
их в ходе проверки данных привязки счёта на уникальность.
Если требуется сформировать динамический QR-код под о
Код ключа Тип данных required Назначен
queryData.SenderFIO String (an-140) o Фамилия,
queryData.SenderID String (an-11.13) o Идентифи
queryData.SenderBankBIC String (n-9) o БИК Банка
* Блок для передачи дополнительных идентификаторов ТСП в ежедневные реестры СБП. Функционал потребует дополнительной н
b) Примерный формат запроса:
1 {
2 "command":"GetQRCd",
3 "TermNo":"90080567 ",
4 "qrTtl":"5",
5 "amount":"10000",
6 "currency":"RUB",
7 "qrcType":"02",
8 "width":"600",
9 "height":"600",
10 "paymentPurpose":"Назаначение платежа",
11 "OrderNumber":"FYI123456",
12 "subscriptionServiceId":"3842ca282aea11e88feca860b60304d5",
13 "subscriptionServiceName":"Подписка на онлайн-кинотеатр",
14 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
15 "redirectUrl": "https://alfabank.ru/sme/payservice/sbp/",
16 "extJsonParams":
17 {
18 "JsonParam1":"Value",
19 "JsonParam2":"Value",
20 "JsonParam3":"Value",
21 "JsonParam4":"Value",
22 "JsonParam5":"Value",
23 "JsonParam6":"Value",
24 "JsonParam7":"Value",
25 "JsonParam8":"Value",
26 "JsonParam9":"Value",
27 "JsonParam10":"Value"
28 },
29 "queryData":
30 {
31 "notificationUrl":"https://sbp-payments",
32 "SenderFIO":"Иванов|Иван|Иванович",
33 "SenderID":"0079123456789",
34 "SenderBankBIC":"44525593"
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 2/16
c) Описание параметров ответа:
Код ключа Тип данных required Назначен
ErrorCode String (an-20) y Код ответа
TermNo String (an-20) y Уникальны
image String (an)
Длинна зависит от формата, порядок 7000 символов.
y Изображен
message String (ans-1024) y Расшифро
messageID String (ans-1024) o Уникальны
Значение
payload String (1…999) y Платежная
payrrn String (n-12) y Референс
qrcId String (an-32) y Идентифи
status String (n-7) y Статус рег
*, ** Таблица возможных кодов ответа приведена в приложении 2.
*** Формат payload может быть двух видов:
- https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM
- https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM?type=02&bank=100000000008&sum=10000&cur=RUB&crc=4244
d) Примерный формат ответа:
• 200 OK
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request { "ErrorCode":"Код ответа", "message":"Расшифровка кода ответа" }
2. Запрос статуса оплаты по динамическому QR-коду
Запрос статуса GetQRCstatus направляется кассой/терминалом ТСП в Банк для получения статуса Операции оплаты выпущенного ра
Запрос статуса направляется не ранее, чем через 10 секунд после формирования QR-кода и не чаще чем каждые 3 секунды.
Успешный ответ на запрос статуса можно получить в течении 30 дней после совершения оплаты по данному QR-коду.
В случае, если срок хранения данных истек, то в ответе на запрос вернется:
35 }
36 }
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "image":"iVBORw0KGgoAAAANSUhEUgAAghjysAAAAgjjafggkqqBEoAAARKCAIAAAQA/w……………..................Y
5 "message": "OK",
6 "messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8",
7 "payload": "https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
8 "payrrn": "000000022154",
9 "qrcId": "AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
10 "status": "CREATED"
11 }
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 3/16
https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM
https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM?type=02&bank=100000000008&sum=10000&cur=RUB&crc=4244
Метод GetQRCstatus
• Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «GetQRCstatus».
TermNo String (an-20) y Уникальный идентификатор терминала.
qrcId String (an-32) y/o Идентификатор QR-кода (обязательно, есл
payrrn String (n-12) y/o Референсный идентификатор запроса в си
messageID String (ans-1024) o Уникальный идентификатор сообщения, G
• Примерный формат запроса:
• Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
message String (ans-1024) y Расшифровка кода ответа**.
qrcId String (an-32) y Идентификатор QR-кода.
status String(an-10) y Статус оплаты QR-кода в НСПК***.
Возможные значения:
1. ACWP — ACCEPTED операция завершена успешно;
2. RJCT — REJECTED операция отклонена;
3. NTST — NOT_STARTED операции по QR коду не существует;
4. RCVD — RECEIVED операция в обработке.
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
trxDT String (n-14) y Дата и время платежа по Гринвичу.
Формат — ГГГГММДДччммсс.
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
CreditDatePos String (ans 1-256) y Дата операции, установленная Банком Получателя (ГГГГММДД)
TermNo String (an-20) y Уникальный идентификатор терминала.
{
"ErrorCode":999,
"message":"Неизвестный код проблемы 999RQ05014"
}
{
"command":"GetQRCstatus",
"TermNo":"90080567",
"qrcId":"AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
"payrrn":"000000022154",
"messageID": "message"
}
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 4/16
Код ключа Тип данных required Назначение
amount Number y Сумма платежа в минорных единицах (копейках).
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»).
Url String (ans 1-512) o Полный URL для получения уведомления ТСП о финальном статусе оплаты QR-кода. Зн
payerId String (n-13) y Идентификатор плательщика (маскированный номер телефона плательщика).
Kzo String (ans 1-128) o Контрольное Значение Операции СБП.
Формируется на стороне НСПК.
Присутствует при условии, что Операция СБП C2B по запрашиваемому qrcId заверше
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
Значение параметра возвращается в случае, если оно указано в запросе.
merchantId String (12) o ID мерчанта (ТСТ) в Банке
*, ** Таблица возможных кодов ответа приведена в приложении 2.
Примечание:
• Успешно оплаченным считается только QR-код, для которого получен «status» = «ACWP» с идентификатором платежа «trxId» и «E
• В случае если получен «status» = «NTST» — означает необходимость повтора запроса до получения одного из финальных статусов
• Получение «status» = «RJCT» означает отказ в оплате данного QR-кода.
— Примерный формат ответа:
• 200 OK
Примечание:
• Текстовые данные передаются в формате urlencoded.
• В поле " trxDT» содержится дата и время транзакции на ПШ Банка в формате ГГГГММДДччммсс.
В случае получения значения trxId = null необходимо повторить запрос. Отсутствие значения означает, что в СБП еще нет успешного
• 400 Bad Request
1 {
2 "ErrorCode": 0,
3 "message": "OK",
4 "qrcId": "AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
5 "status": "ACWP",
6 "trxId": "A3013090427361010000057B3DA2D4A7",
7 "trxDT": "20230113090427",
8 "payrrn": "000000022154",
9 "CreditDatePos": "20230113",
10 "TermNo": 90080567,
11 "amount": 10000,
12 "currency": "RUB",
13 "Url":"https://sbp-payments",
14 "payerId": "*********1234",
15 "kzo": "212b906a810f2562fd88e145199b30f4b4ea5c7cd7d0261236a73a6152f07f56b7feb915712a055522ee9b76
16 "messageID": "message",
17 "merchantId": "MB0000009603"
18 }
{
"ErrorCode":"Код ответа",
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 5/16
3. Нотификация ТСП о финальном статусе оплаты по динамическому QR-коду
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
Метод «qrc/notification»
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1...50) y Тип запроса. Константа «qrc/notification»
qrcId String (an-32) y Идентификатор QR-кода.
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
status String (an-10) y Статус оплаты QR-кода в НСПК.
Возможные значения:
— ACWP — ACCEPTED операция завершена успешно;
— RJCT — REJECTED операция отклонена.
amount Number y Сумма платежа в минорных единицах (копейках)
timestamp YYYY-MMDDThh: mm: ss[.SSS]
или
YYYY-MMDDThh: mm: ss[.SSSZ]
y Метка времени НСПК по Гринвичу (GMT).
payerId String (n-13) y Идентификатор плательщика (маскированный номер те
kzo String (ans 1-128) o Контрольное Значение Операции СБП.
Формируется ОПКЦ СБП. Присутствует при условии, чт
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка
TermNo String (an-20) Y Уникальный идентификатор терминала.
CreditDatePos String (ans 1-256) o Дата операции, установленная Банком Получателя в хо
b) Примерный формат запроса:
c) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП находится в разработке.
В случае добавления со стороны НСПК дополнительных параметров уведомления, система, принимающая их от шлюза Альфа-Банка,
"message":"Расшифровка кода ответа"
}
1 {
2 "command":"qrc/notification",
3 "qrcId":"AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
4 "trxId":"A3013090427361010000057B3DA2D4A7",
5 "status":"ACWP",
6 "amount":"10000",
7 "timestamp":"2022-10-27T14:33:49.000Z ",
8 "payerId":"*********1779",
9 "kzo":"580d2f38370f378db5915c047ba7b72014327ce455caa927b2488f224926daac85e82984c889d66e79dad8039cc
10 "payrrn":"000000022154",
11 "TermNo":"90080567",
12 "CreditDatePos":"20221027"
13 }
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 6/16
4. Запрос проведения возврата по успешной оплате по динамическому QR-коду
Возврат по СБП состоит из 2х последовательных запросов:
• GetQRCreversalData — проверка возможности проведения возврата;
• QRCreversal — выполнение непосредственно самого возврата.
В случае если ТСП инициирует выполнение повторных операций СБП B2C по одной и той же операции СБП C2B, то допускается не б
Возврат в один этап. При направлении запроса «QRCReversal», с заполненным полем messageID будет произведен возврат в один
4.1. Запрос возможности проведения возврата
Запрос GetQRCreversalData направляется ТСП в Банк для проверки возможности возврата по ранее оплаченному QR-коду и получен
Метод GetQRCreversalData
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «GetQRCreversalData».
TermNo String (an-20) y Уникальный идентификатор терминала.
qrcId String (an-32) y/o Идентификатор QR-кода (обязательно, если не передан «payrrn» или «trxId»).
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка (обязательно, если не 
trxId String (an-32) y/o Уникальный идентификатор платежа в НСПК (обязательно, если не передан «q
trxDT String (n-14) o Дата и время отменяемого платежа.
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата не пер
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого значе
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
ReturnRestAmount Boolean o Проверка доступного остатка для совершения возврата.
Доступные значения:
— true
— false
Примечание:
• Для поиска оригинальной транзакции обязательным является один из параметров: «qrcId», «payrrn» или «trxId»;
• Терминалы с подключенным сканером и распознаванием QR-кодов могут получить «qrcId», распарсив строку QR-кода с чека опла
b) Примерный формат запроса:
c) Описание параметров ответа:
1 {
2 "command":"GetQRCreversalData",
3 "TermNo":"90080567",
4 "qrcId":"AS1000670LSS7DN18SJQDNP4B05KLJL2",
5 "payrrn":"000063441405",
6 "trxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
7 "trxDT":"20230313052005",
8 "amount":"10000",
9 "currency":"RUB",
10 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
11 "ReturnRestAmount":true
12 }
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 7/16
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
TermNo String (an-20) y Уникальный идентификатор терминала.
message String (ans-1024) y Расшифровка кода ответа**.
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
payerBnkBIC String (n-9) y БИК банка получателя.
payerBnkName String (an-50) y Наименование банка получателя
payerId String (n-13) y Идентификатор получателя (маскированный номер телефона получателя).
payerPam String (ans 1…140) y PAM получателя
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка
qrcId String (an-32) y Идентификатор QR-кода
trxDT String (n-14) y Дата и время платежа по Гринвичу (GMT).
Формат времени — ГГГГММДДччммсс.
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
restAmount Number (с двумя знаками после точки) o Сумма доступного остатка к возврату.
Если в запросе передано значение "ReturnRestAmount" : true, то в ответе д
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
Примечание:
• Текстовые данные передаются в формате urlencoded;
• В случае получения «message»: «Получен отказ на запрос возврата. Статус Recall, ErrDebetMerchant: KSM0284 Invalid special cond
• 400 Bad Request
4.2. Запрос возврата оплаты QR-кода
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "message": "OK",
5 "payerBnkBIC": "044525593",
6 "payerBnkName": "Альфа-Банк",
7 "payerId": "*1234",
8 "payerPam": "ФСИ",
9 "payrrn": "000063441405",
10 "qrcId": "AS1000670LSS7DN18SJQDNP4B05KLJL2",
11 "trxDT": 20200728114531,
12 "trxId": "X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
13 "restAmount":"99.87"
14 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 8/16
Запрос QRCreversal направляется ТСП в Банк для возврата по ранее произведенной оплате QR. Возврат производится только на сче
Метод QRCreversal
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «QRCreversal».
TermNo String (an-20) y Уникальный идентификатор терминала.
qrcId String (an-32) y/o Идентификатор QR-кода (обязательно, если не передан «payrrn» или «trx
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка (обязательно, есл
trxId String (an-32) y/o Уникальный идентификатор платежа в НСПК (обязательно, если не перед
trxDT String (n-14) o Дата и время отменяемого платежа.
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата н
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого
messageID String (an-1…50) y/o Уникальный идентификатор сообщения, GUID из сообщения «GetQRCrev
queryData.notificationUrl String (ans-512) o Полный URL для получения уведомления о финальном статусе возврата
ReturnRestAmount Boolean o Проверка доступного остатка для совершения возврата.
Доступные значения:
— true
— false
Блок для внесения д
Код ключа Тип данных required
extJsonParams Object o
JsonParam1 String (ans-250) o
JsonParam2 String (ans-250) o
... ... ...
JsonParam10 String (ans-250) o
* messageID — необходимо передавать точное значение, которые было указано в ответе на запрос GetQRCreversalData. Если значени
на возврат.
** Блок для передачи дополнительных идентификаторов ТСП в ежедневные реестры СБП. Функционал потребует дополнительной
Примечание: Для поиска оригинальной транзакции обязательным является один из параметров: «qrcId», «payrrn» или «trxId».
b) Примерный формат запроса:
1 {
2 "command":"QRCreversal",
3 "TermNo":"90080567",
4 "qrcId":"AS1000670LSS7DN18SJQDNP4B05KLJL2",
5 "payrrn":"000063441405",
6 "trxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
7 "trxDT":"20230313052005",
8 "amount":"10000",
9 "currency":"RUB",
10 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 9/16
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
TermNo String (an-20) y Уникальный идентификатор терминала.
amount Number y Сумма платежа в минорных единицах (копейках).
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
message String (ans-1024) y Расшифровка кода ответа**.
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
trxDT String(n-14) y Дата и время операции возврата (ГГГГММДДччммсс).
trxId String(an-32) y Уникальный идентификатор операции возврата в НСПК.
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
restAmount Number (с двумя знаками после точки) o Сумма доступного остатка к возврату.
Если в запросе передано значение "ReturnRestAmount" : true, то в ответе дол
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
11 "extJsonParams":
12 {
13 "JsonParam1":"Value",
14 "JsonParam2":"Value",
15 "JsonParam3":"Value",
16 "JsonParam4":"Value",
17 "JsonParam5":"Value",
18 "JsonParam6":"Value",
19 "JsonParam7":"Value",
20 "JsonParam8":"Value",
21 "JsonParam9":"Value",
22 "JsonParam10":"Value"
23 },
24 "queryData":
25 {
26 "notificationUrl":"http://sbp-refunds/"
27 },
28 "ReturnRestAmount": true
29 }
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "amount": 10000,
5 "currency": "RUB",
6 "message": "%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043F%u0440%u043E%u0432%u0435%u0434%
7 "messageID":"message"
8 "payrrn": "000063441405",
9 "trxDT": 20230624143642,
10 "trxId": "A3024113609260070000086B8426B817",
11 "restAmount": "99.87"
12 }
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 10/16
5. Запрос статуса возврата СБП (B2C)
Метод «GetQRCreversalStatus» необходим ТСП для уточнения статуса операции B2C (метод QRCreversal).
В запросе «GetQRCreversalStatus» обязательно должна быть передана пара параметров:
1. «payrrn» или «originalTrxId» Один из параметров «payrrn» или «originalTrxId» используется для нахождения исходного платежа C2
2. «trxId» или «messageID». Один из параметров «trxId» или «messageID» используется для нахождения операции возврата B2C, по 
Метод «GetQRCreversalStatus»
a) Описание параметров запроса:
Код ключа Тип данных required
command String (an-1…50) y
TermNo String (an-20) y
payrrn String (n-12) y/o
(обязательно, если не передан параметр «originalTrxId»)
originalTrxId String (an-32) y/o
(обязательно, если не передан параметр «payrrn»)
trxId String (an-32) y/o
(обязательно, если не передан messageID,)
messageID String (ans-1…1024) y/o
(обязательно, если не передан trxId)
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ошибки*.
TermNo String (an-20) y Уникальный идентификатор терминала.
Url String (ans 1-512) o Полный URL получения уведомления для ТСП — значение параметра,
amount Number y Сумма Операции СБП в копейках. Целое, положительное число. Валют
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
{
"command":"GetQRCreversalStatus",
"TermNo":"90080567",
"payrrn":"000063441405",
"originalTrxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
"trxId":"A3024113609260070000086B8426B817",
"messageID":"message"
}
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 11/16
Код ключа Тип данных required Назначение
message String (ans-1024) y Описание результата выполнения запроса**.
messageID String (ans-1024) o Значение параметра «messageID» из запроса «QRCreversal».
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежной ссылки СБП, по которо
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B.
payerId String (an-13) y Маскированный номер телефона Клиента-Получателя (Плательщика в 
status String (an-4) y Статус операции возврата СБП (B2C):
ACWP — ACCEPTED операция завершена успешно;
RJCT — REJECTED операция отклонена;
NTST — Статус операции неизвестен.
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C по сценарию «Возврат п
trxId String (an-32) y Уникальный идентификатор операции возврата в НСПК.
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 ОК
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
6. Запрос истории возвратов по определённой транзакции СБП C2B
Запрос позволяет ТСП проверить все совершённые возвраты по определённой транзакции СБП C2B.
В ответе на запрос возвращаются как успешные, так и неуспешные попытки возвратов.
Метод GetQRCreversalHistory
a) Описание параметров запроса:
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "amount": 10000,
5 "message": "OK",
6 "messageID": "message"
7 "originalQrcId": "AS1000670LSS7DN18SJQDNP4B05KLJL2",
8 "originalTrxId": "X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
9 "payerId": "*********1234",
10 "status": "ACWP",
11 "trxDT": 20230624143642,
12 "trxId": "A3024113609260070000086B8426B817"
13 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 12/16
Код ключа Тип данных required
command String (an-1…50) y
TermNo String (an-20) y
payrrn String (n-12) y
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*
message String (ans-1024) y Расшифровка кода ответа**
Refunds Array y Массив объектов, содержащих информацию о возвратах по плат
При отсутствии возвратов, будет возвращён ответ с сообщением
refunds.TermNo String (an-20) y Уникальный идентификатор терминала
refunds.amount Number y Сумма Операции СБП B2C (возврат) в копейках. Целое, положител
refunds.originalQrcId String (an-32) y Идентификатор зарегистрированной Платёжной ссылки СБП (QR-к
refunds.originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B в НСПК
refunds.payerId String (an-15) y Маскированный номер телефона Клиента-Получателя (Плательщи
refunds.status String (an-4) y Статус операции возврата СБП (B2C):
1. ACWP — ACCEPTED возврат успешно выполнен
2. RJCT — REJECTED возврат отклонён
3. NTST — NOT_STARTED возврат не инициирован (получен успе
refunds.trxId String (an-32) y Идентификатор Операции возврата СБП B2C по сценарию «Возвра
refunds.trxDT String (n-4) y Дата и время выполнения Операции возврата СБП B2C по сцена
Формат: ГГГГММДДччммсс, UTC +0
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа «ACWP» и «RJCT»:
• 200 ОК
{
"command":"GetQRCreversalHistory",
"TermNo":"90080567",
"payrrn":"000000002212"
}
1 {
2 "ErrorCode": 0,
3 "message": "OK",
4 "refunds": [
5 {
6 "TermNo": 90080567,
7 "amount": 10000,
8 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 13/16
• 400 Bad Request
e) Примерный формат ответа «NTST»:
• 200 ОК
• 400 Bad Request
f) Примерный формат ответа при отсутствии возвратов по транзакции СБП C2B:
• 200 OK
Декодирование значения поля «message» - «По данной оплате возвраты не найдены».
• 400 Bad Request
9 "originalTrxId": "B51390819586020Z0000120011510503",
10 "payerId": "*********1234",
11 "status": "ACWP",
12 "trxDT": 20250519082345,
13 "trxId": "B51390823097450W0000180011510503"
14 },
15 {
16 "TermNo": 90080567,
17 "amount": 10000,
18 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
19 "originalTrxId": "B51390819586020Z0000120011510503",
20 "payerId": "*********1234",
21 "status": "RJCT",
22 "trxDT": 20250519083836,
23 "trxId": "A4327120041167130000020011381101"
24 }
25 ]
26 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
1 {
2 "ErrorCode": 0,
3 "message": "OK",
4 "refunds": [
5 {
6 "TermNo": 90080567,
7 "amount": 10000,
8 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
9 "originalTrxId": "B51390819586020Z0000120011510503",
10 "payerId": "*********1234",
11 "status": "NTST",
12 "trxId": "B51390835362750D0000100011510503"
13 }
14 ]
15 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
{
"ErrorCode": 0,
"message": "%u041F%u043E%20%u0434%u0430%u043D%u043D%u043E%u0439%20%u043E%u043F%u043B%u0430%u0442
}
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 14/16
7. Нотификация о финальном статусе возврата по динамическому QR-коду
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
Метод «b2c-refund/notification»
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «b2c-refund/notification»
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID
TermNo String (an-20) y Уникальный идентификатор терминала
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежно
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B
trxId String (an-32) y Идентификатор Операции СБП B2C по сценар
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C 
status String (an-4) y Финальный статус Операции СБП B2C:
«ACWP» — ACCEPTED операция завершена у
«RJCT» — REJECTED операция отклонена;
amount Number y Сумма операции в копейках
ErrorCode String (an-20) y Код ответа*
message String (ans-1024) y Расшифровка кода ответа**
payerId String (an-15) y Маскированный номер телефона Клиента-Полу
agentRefundRequestId String (an-32) y Уникальный идентификатор запроса, назначае
opkcRefundRequestId String (an-32) y Уникальный идентификатор запроса на возвра
*, ** Таблица возможных кодов ответа приведена в приложении 2.
b) Примерный формат запроса (по успешному возврату):
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
1 {
2 "command":"b2c-refund/notification",
3 "messageID":" message",
4 "TermNo":"90080567",
5 "originalQrcId":"AS1000670LSS7DN18SJQDNP4B05KLJL2",
6 "originalTrxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
7 "trxId":" A3024113609260070000086B8426B817",
8 "trxDT":"20230624143642",
9 "status":"ACWP",
10 "amount":"10000",
11 "ErrorCode":"0",
12 "message":"OK",
13 "payerId":"*********1234",
14 "agentRefundRequestId":"00000000000000000182_abcd1994383",
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 15/16
В ответ ожидается:
• http-код «200» — Успешный ответ (Уведомление получено);
• http-код «500» — Внутренняя ошибка.
c) Примерный формат запроса (по отклоненному возврату):
В ответ ожидается:
• http-код «200» — Успешный ответ (Уведомление получено);
• http-код «500» — Внутренняя ошибка.
d) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП находится в разработке.
В случае добавления со стороны НСПК дополнительных параметров уведомления, система, принимающая их от шлюза Альфа-Банка,
15 "opkcRefundRequestId":"BR10000OKEISOIPM8ST8TBLQHIN9R185"
16 }
1 {
2 "command":"b2c-refund/notification",
3 "TermNo":"90080567",
4 "originalQrcId":"AS1000670LSS7DN18SJQDNP4B05KLJL2",
5 "originalTrxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
6 "trxId":"A3024113609260070000086B8426B817",
7 "trxDT":"20230624143642",
8 "status":"RJCT",
9 "amount":"10000",
10 "ErrorCode":"0",
11 "message":"OK",
12 "payerId":"*********1234"
13 }
12/23/25, 11:23 AM Динамический QR-код
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 16/16
]]>
</_4_dynamic_QR_cods_md>
<_5_cache_payment_link_SBP_md>
<![CDATA[
Кассовая платёжная ссылка
Кассовая платёжная ссылка СБП
Кассовая платёжная ссылка — это гибридное решение, которое объединяет в себе преимущества статического и динамического QR-
Благодаря данному решению сам QR-код не меняется, но в то же время сумма оплаты передаётся с кассы, плательщик не может её и
Для совершения оплаты по кассовой платёжной ссылке достаточно один раз распечатать QR-код и разместить его в удобной прикас
покупки перед оплатой.
Для каждой кассы/терминала создается своя кассовая платёжная ссылка.
При каждой активации кассовой платёжной ссылки передаются значения параметров, соответствующие очередной покупке.
1. Запрос на регистрацию Кассовой платёжной ссылки СБП
Данный метод позволяет сгенерировать кассовую платёжную ссылку, которую в дальнейшем ТСП может распечатать в необходимо
Кроме того, метод предоставляет возможность привязывать, полученные от Банка NFC-таблички, к нужным кассам/терминалам.
Метод RegCashQRc
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «RegCashQRc».
TermNo String (an-20) y Уникальный идентификатор терминала
mediaType String o Тип картинки QR-кода
width String o Ширина картинка QR-кода
height String o Высота картинка QR-кода
redirectUrl String (ans-1024) о Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаю
Если все же требуется использовать в redirectUrl кириллические символы, необходимо пе
qrcId String (an-32) o Идентификатор QR-кода. Используется в случае, если необходимо привязать заранее зар
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назн
ErrorCode String (an-20) y Код от
TermNo String (an-20) y Уникал
content String y Base6
{
"command":"RegCashQRc",
"TermNo":"90080567",
"mediaType":"image/png",
"width":"600",
"height":"600",
"redirectUrl": "https://exampletsp.io/qwertyui"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 1/28
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1
Код ключа Тип данных required Назн
mediaType String y Тип ка
message String (ans-1024) y Расши
payload String (1…999) y Плате
qrcId String (an-32) y Идент
status String (an-20) y Статус
*, ** Таблица возможных кодов ответа приведена в приложении 2.
*** Формат payload может быть двух видов:
• https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9;
• https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9?type=01&bank=100000000008&crc=2557
d) Примерный формат ответа:
• 200 ОК
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
2. Запрос на активацию Кассовой платёжной ссылки СБП
Запрос ActivateCashQRc направляется кассой/терминалом ТСП в Банк для активации Кассовой ссылки в целях ожидания оплаты пла
Метод ActivateCashQRc
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…
50)
y Тип запроса. Константа «ActivateCashQRc».
TermNo String (an-20) y Уникальный идентификатор терминала.
qrcId String (an-32) y Идентификатор QR-кода.
amount Number y Сумма платежа в минорных единицах (копейках).
{
"ErrorCode": 0,
"TermNo": 90080567,
"content": "iVBORw0KGgoAAAANSUhEUgVXne/ /B2Pwbvw1OqlrAAAAAElFTk…………………………....SuQmCC",
"mediaType": "image/png",
"message": "OK",
"payload": "https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"status": "CREATED"
}
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 2/28
https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9
https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9?type=01&bank=100000000008&crc=2557
Код ключа Тип данных required Назначение
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). Необязательный параметр, при отсутствии его з
OrderNumber String (ans-
1000)
o Номер заказа.
В параметре должны передаваться только английские буквы и/или арабские цифры, подчеркивание
paymentPurpose String (ans-
140)
o Назначение платежа.
queryData.notificationUrl String (ans-
512)
o Полный URL для получения уведомления о финальном статусе оплаты QR-кода
Если параметр отсутствует, уведомление не производится.
qrTtl String (an-1…
2)
o Период использования Кассовой ссылки в минутах. Необязательное поле.
Допустимый диапазон: 5-20.
Если поле «qrTtl» не передано, то за период использования Кассовой ссылки берется значение по ум
redirectUrl String (ans-
1024)
o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаются только
перекодировать их в соответствующий ASCII код, используя percent-encoded octets согласно RFC398
Блок для внесения д
Код ключа Тип данных required
extJsonParams Object o
JsonParam1 String (ans-250) o
JsonParam2 String (ans-250) o
... ... ...
JsonParam10 String (ans-250) o
* Блок для передачи дополнительных идентификаторов ТСП в ежедневные реестры СБП. Функционал потребует дополнительной н
b) Примерный формат запроса:
1 {
2 "command":"ActivateCashQRc",
3 "TermNo":"90080567",
4 "qrTtl":"5",
5 "amount":"10000",
6 "currency":"RUB",
7 "paymentPurpose":"Назаначение платежа",
8 "OrderNumber":"FYI123456",
9 "redirectUrl": "https://alfabank.ru/sme/payservice/sbp/",
10 "extJsonParams":
11 {
12 "JsonParam1":"Value",
13 "JsonParam2":"Value",
14 "JsonParam3":"Value",
15 "JsonParam4":"Value",
16 "JsonParam5":"Value",
17 "JsonParam6":"Value",
18 "JsonParam7":"Value",
19 "JsonParam8":"Value",
20 "JsonParam9":"Value",
21 "JsonParam10":"Value"
22 },
23 "queryData":
24 {
25 "notificationUrl":"https://sbp-payments",
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 3/28
c) Описание параметров ответа:
Код ключа Тип данных
ErrorCode String (an-20)
TermNo String (an-20)
amount Number
currency String (ans-3)
message String (ans-1024)
paramsId String
paymentPurpose String (ans-140)
payrrn String (an-12)
qrcId String (an-32)
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 ОК
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
Примечание:
• При повторной активации прежние значения параметров Кассовой ссылки СБП заменяются на новые;
• Если Плательщик отсканирует QR-код активированной Кассовой ссылки СБП и перейдёт в Приложение Плательщика и при этом К
совершить оплату;
• Если в запросе на активацию Кассовой ссылки СБП не будет передан параметр «amount», то ответ вернется с ошибкой — " RQ05019
• Если при активации Кассовой ссылки СБП значение периода использования выходит за пределы допустимого диапазона 1-20 мин
значение периода использования Кассовой ссылки СБП — 1 минута, максимальное — 20.
• Если оплата с использованием Кассовой ссылки СБП имеет финальный статус RJCT (оплата не прошла), то ТСП может повторно а
26 }
27 }
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "amount": 10000,
5 "currency": "RUB",
6 "message": "OK",
7 "paramsId": "BP10001UMBREG8GI9AFRVAD7S7GJEK6E",
8 "paymentPurpose": "%u041D%u0430%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435 %u043F%u043B%u
9 "payrrn": "000056251465",
10 "qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
11 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 4/28
• Оплата с использованием Кассовой ссылки СБП невозможна, если:
а) истек период использования активированной Кассовой ссылки СБП;
б) кассовая ссылка СБП не была активирована вовсе или была деактивирована и не активирована вновь;
в) оплата по ней уже происходит, при этом для очередной оплаты она не была активирована вновь.
3. Запрос деактивации Кассовой платёжной ссылки СБП
Запрос DelCashQRc направляется кассой/терминалом ТСП в Банк для досрочной деактивации Кассовой ссылки.
Если Плательщик решил отказаться от покупки и не намерен совершать оплату, когда кассовая ссылка уже была активирована, то о
процедура оплаты. Деактивация Кассовой ссылки СБП влечет за собой отмену всех дальнейших действий для оплаты по активиров
Если кассовая ссылка была активирована, и по ней происходит оплата, то в ответе на запрос «Деактивация Кассовой ссылки СБП» ве
Метод DelCashQRc
a) Описание параметров запроса:
Код ключа Тип данных required
command String (an-1…50) y
TermNo String (an-10) y
qrcId String(an-32) y
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required
ErrorCode String (an-20) y
message String (ans-140) y
TermNo String (an-10) y
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
{
"command":"DelCashQRc",
"TermNo":"90080567",
"qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
}
{
"ErrorCode": 0,
"TermNo": 90080567,
"message": "%u0417%u0430%u043F%u0440%u043E%u0441 %u043E%u0431%u0440%u0430%u0431%u043E%u0442%u043
}
{
"ErrorCode":"Код ответа",
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 5/28
4. Запрос статуса Кассовой платёжной ссылки СБП
• Направляется ТСП в Банк для проверки статуса ранее зарегистрированной кассовой ссылки, например, в целях проверки готовно
• Может быть направлен для проверки статуса после попытки активации, в случае, если на запрос активации не получен ответ от Н
• Успешный ответ содержит статус самой Кассовой ссылки, но не операции ее оплаты.
Метод GetCashQRCstatus
a) Описание параметров запроса:
Код ключа Тип данных required
command String (an-1…50) y
TermNo String (an-20) y
qrcId String (an-32) y
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных
ErrorCode String (an-20)
message String (ans-140)
status String
paramsId String (an-32)
merchantId String (12)
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
"message":"Расшифровка кода ответа"
}
{
"command": "GetCashQRCstatus",
"TermNo": "90080567",
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
}
{
"ErrorCode": 0,
"merchantId":"MB0000009603",
"message":"Запрос обработан успешно",
"qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"status": "WAITING_PAYMENT",
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 6/28
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
5. Запрос изменения параметров для зарегистрированной Кассовой платёжной ссылки СБП
Запрос позволяет изменить следующие параметры Кассовой ссылки СБП:
• Номер счёта юридического лица — «account»
• Номер терминала — «TermNo»
• Торгово-сервисную точку (ТСТ) — «merchantId»
• Ссылку для автоматического возврата в приложение или на сайт ТСП — «redirectUrl»
Смена счёта юридического лица
Метод ChangeAccForCashQRc
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «ChangeAccForC
TermNo String (an-20) y Уникальный идентификатор терминала,
qrcId String (an-32) y Идентификатор Кассовой ссылки СБП
account String (n-32) y Новый счёт юридического лица
b) Примерный формат запроса для смены номера счёта Кассовой ссылки СБП:
c) Описание параметров ответа:
Код ключа Тип данных required
ErrorCode String (an-20) y
TermNo String (an-20) y
account String (an-20) y
merchantId String (an-12) y
message String (ans-1024) y
"paramsId": "BP10001UMBREG8GI9AFRVAD7S7GJEK6E"
}
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
{
"command":"ChangeAccForCashQRc",
"TermNo":"90080567",
"qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"account":"00000000000000001111"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 7/28
Код ключа Тип данных required
qrcId String(an-32) y
status String (an-4) o
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
Смена номера терминала/мерчанта для Кассовой ссылки СБП
При успешном выполнении запроса Кассовая ссылка СБП будет перенесена на новый терминал/мерчант
Метод ChangeAccForCashQRc
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «ChangeAccForCashQRc»
TermNo String (an-20) y Уникальный идентификатор терминала, на который Кассовая с
qrcId String (an-32) y Идентификатор QR-кода
account String (n-32) y Счёт юридического лица, установленный для нового терминал
NewTermNo String (an-20) y Новый уникальный идентификатор терминала
NewMerchantId String (an-12) y/o Идентификатор новой ТСТ.
Поле обязательно, если терминал, на который переносится
b) Примерный формат запроса для переноса КС на новый терминал, зарегистрированный в рамках одной ТСТ:
{
"ErrorCode": 0,
"TermNo": 90080567,
"account": "00000000000000001111",
"merchantId": " MA0001111111",
"message": "OK",
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"status": "UPDATED"
}
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
{
"command":"ChangeAccForCashQRc",
"TermNo":"90080567",
"account":"00000000000000001111",
"qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"NewTermNo":"90011111"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 8/28
c) Описание параметров ответа:
Код ключа Тип данных required
ErrorCode String (an-20) y
TermNo String (an-20) y
account String (an-20) y
merchantId String (an-12) y
message String (ans-1024) y
qrcId String(an-32) y
status String (an-4) o
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
e) Примерный формат запроса для переноса КС на новый терминал, зарегистрированный в другой ТСТ или в другом юридическом
f) Описание параметров ответа:
Код ключа Тип данных required
ErrorCode String (an-20) y
TermNo String (an-20) y
account String (an-20) y
merchantId String (an-12) y
{
"ErrorCode": 0,
"TermNo": 90011111,
"account": "00000000000000001111",
"merchantId": " MA0001111111",
"message": "OK",
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"status": "UPDATED"
}
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
{
"command": "ChangeAccForCashQRc",
"TermNo": "90080567",
"account": "00000000000000002222",
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"NewTermNo": "90022222",
"NewMerchantId": "MA0002222222"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 9/28
Код ключа Тип данных required
message String (ans-1024) y
qrcId String(an-32) y
status String (an-4) o
*, ** Таблица возможных кодов ответа приведена в приложении 2.
g) Примерный формат ответа:
• 200 OK
• 400 Bad Request
h) Описание параметров ответа:
Код ключа Тип данных required
ErrorCode String (an-20) y
TermNo String (an-20) y
account String (an-20) y
merchantId String (an-12) y
message String (ans-1024) y
qrcId String(an-32) y
status String (an-4) o
*, ** Таблица возможных кодов ответа приведена в приложении 2.
Перенос кассовой ссылки на нового мерчанта со старым номером терминала
При успешном выполнении запроса Кассовая ссылка СБП будет перенесена на нового мерчанта вместе со старым терминало
Метод ChangeAccForCashQRc
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «ChangeAccForC
TermNo String (an-20) y Уникальный идентификатор терминала,
{
"ErrorCode": 0,
"TermNo": 90022222,
"account": "00000000000000002222",
"merchantId": " MA0002222222",
"message": "OK",
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"status": "UPDATED"
}
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 10/28
Код ключа Тип данных required Назначение
qrcId String (an-32) y Идентификатор QR-кода
account String (n-32) y Счёт юридического лица, используемый
NewMerchantId String (an-12) y Идентификатор новой ТСТ
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required
ErrorCode String (an-20) y
TermNo String (an-20) y
account String (an-20) y
merchantId String (an-12) y
message String (ans-1024) y
qrcId String(an-32) y
status String (an-4) o
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
Смена ссылки для автоматического возврата в приложение или на сайт ТСП
При успешном выполнении запроса будет изменено значение поля «redirectUrl», указанное при первоначальной регистрации К
{
"command": "ChangeAccForCashQRc",
"TermNo": "90080567",
"account": "00000000000000002222",
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"NewMerchantId": "MA0002222222"
}
{
"ErrorCode": 0,
"TermNo": 90080567,
"account": "00000000000000002222",
"merchantId": " MA0002222222",
"message": "OK",
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"status": "UPDATED"
}
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 11/28
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «ChangeAccForCashQRc».
TermNo String (an-20) y Уникальный идентификатор терминала, на который кассовая ссылка/NFC-табличка была
qrcId String (an-32) y Идентификатор QR-кода
redirectUrl String (ans-1024) y Новая ссылка для автоматического возврата в приложение или на сайт ТСП.
Допускаются только символы в кодировке ASCII. Формат должен соответствовать пра
Если требуется использовать в redirectUrl кириллические символы, необходимо перек
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required
ErrorCode String (an-20) y
TermNo String (an-20) y
account String (an-20) y
merchantId String (an-12) y
message String (ans-1024) y
qrcId String(an-32) y
status String (an-4) o
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
{
"command": "ChangeAccForCashQRc",
"TermNo": "90080567",
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"redirectUrl": " https://alfabank.ru/sme/payservice/sbp/"
}
{
"ErrorCode": 0,
"TermNo": 90080567,
"account": "00000000000000002222",
"merchantId": " MA0002222222",
"message": "OK",
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
"status": "UPDATED"
}
{
"ErrorCode":"Код ответа",
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 12/28
6. Запрос на изменение номера терминала (TermNo) для зарегистрированной Кассовой платё
Данный запрос позволяет ТСП произвести смену номера терминала по ранее зарегистрированной Кассовой ссылке СБП на любой д
может быть использован и для перепривязки кассовой ссылки на новое ЮЛ, ИП.
Метод ChangeTermNoForCashQRc
a) Описание параметров запроса:
Код ключа Тип данных required
command String (an-1…50) y
TermNo String (an-20) y
qrcId String (an-32) y
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*
TermNo String (an-20) y Уникальный идентификатор терми
message String (ans-140) y Расшифровка кода ответа**
status String (an-4) y Статус выполнения перерегистрац
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
"message":"Расшифровка кода ответа"
}
{
"command": "ChangeTermNoForCashQRc",
"TermNo": "90080567",
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
}
{
"ErrorCode": 0,
"TermNo": 90080567,
"message": "OK",
"status": "UPDATED"
}
{
"ErrorCode": "Код ответа",
"message": "Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 13/28
7. Запрос статуса оплаты по Кассовой платёжной ссылке СБП
Запрос статуса GetQRCstatus направляется кассой/терминалом ТСП в Банк для получения статуса Операции оплаты выпущенного ра
Запрос статуса направляется не ранее, чем через 10 секунд после формирования QR-кода и не чаще чем каждые 3 секунды.
Успешный ответ на запрос статуса можно получить в течении 30 дней после совершения оплаты по данному QR-коду.
В случае, если срок хранения данных истек, то в ответе на запрос вернется:
Метод GetQRCstatus
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «GetQRCstatus».
TermNo String (an-20) y Уникальный идентификатор терминала.
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка.
qrcId String (an-32) y/o Идентификатор QR-кода (обязательно, если не передан «pa
paramsId String (an-32) y/o Идентификатор параметров ссылки СБП (если передан qrcId
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латин
Примечание: для кассовой платежной ссылки должен быть передан один из параметров: payrrn или qrcId + paramsId. Передавать в з
b) Примерный формат запроса:
1-й вариант запроса:
2-й вариант запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
message String (ans-1024) y Расшифровка кода ответа**.
{
"ErrorCode":999,
"message":"Неизвестный код проблемы 999RQ05014"
}
{
"command":"GetQRCstatus",
"TermNo":"90080567",
"payrrn":"000056251465",
"messageID":"message"
}
{
"command":"GetQRCstatus",
"TermNo":"90080567",
"qrcId": "AS1R005G9DAOLK5L8S5OPR6HB23HSN0I",
"paramsId": "BP10001UMBREG8GI9AFRVAD7S7GJEK6E",
"messageID":"message"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 14/28
Код ключа Тип данных required Назначение
qrcId String (an-32) y Идентификатор QR-кода.
status String(an-10) y Статус оплаты QR-кода в НСПК*
Возможные значения:
1. ACWP — ACCEPTED операция завершена успешно;
2. RJCT — REJECTED операция отклонена;
3. NTST — NOT_STARTED операции по QR коду не существует;
4. RCVD — RECEIVED операция в обработке.
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
trxDT String (n-14) y Дата и время платежа по Гринвичу.
Формат — ГГГГММДДччммсс.
payrrn String (n-12) o Референсный идентификатор запроса в системе Банка. Значение возвращается если зап
CreditDatePos String (ans 1-256) o Дата операции, установленная Банком Получателя (ГГГГММДД)
TermNo String (an-20) y Уникальный идентификатор терминала.
amount Number y Сумма платежа в минорных единицах (копейках).
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»).
Url String (ans 1-512) o Полный URL для получения уведомления ТСП о финальном статусе оплаты QR-кода. Зн
paramsId String (an-32) o Идентификатор активных значений параметров Платежной ссылки СБП. Передается, есл
payerId String (ans) y Идентификатор плательщика (маскированный номер телефона плательщика).
Kzo String (ans 1-128) o Контрольное Значение Операции СБП. Формируется ОПКЦ СБП.
Присутствует при условии, что Операция СБП C2B по запрашиваемому qrcId завершена
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
Значение параметра возвращается в случае, если оно указано в запросе.
merchantId String (12) o ID мерчанта (ТСТ) в Банке
*, ** Таблица возможных кодов ответа приведена в приложении 2.
Примечание:
• Успешно оплаченным считается только QR-код, для которого получен «status» = «ACWP» с идентификатором платежа «trxId» и «E
• В случае если получен «status» = «NTST» — означает необходимость повтора запроса до получения одного из финальных статусов
• Получение «status» = «RJCT» означает отказ в оплате данного QR-кода.
d) Примерный формат ответа:
• 200 OK
1 {
2 "ErrorCode": 0,
3 "message": "OK",
4 "qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
5 "status": "ACWP",
6 "trxId": "A30180803159571F0000097B3DA2D4A7",
7 "trxDT": "20230118080315",
8 "payrrn": "000056251465",
9 "CreditDatePos": "20230118",
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 15/28
Примечание:
• Текстовые данные передаются в формате urlencoded.
• В поле " trxDT» содержится дата и время транзакции на ПШ Банка в формате ГГГГММДДччммсс.
В случае получения значения trxId = null необходимо повторить запрос. Отсутствие значения означает, что в СБП еще нет успешного
• 400 Bad Request
8. Нотификация ТСП о финальном статусе оплаты по Кассовой платёжной ссылке СБП
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
Метод «qrc/notification»
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «qrc/notification»
qrcId String (an-32) y Идентификатор QR-кода.
trxId String(an-32) y Уникальный идентификатор платежа в Н
paramsId String (an-32) y Идентификатор активных значений пара
status String(an-10) y Статус оплаты QR-кода в НСПК.
Возможные значения:
— ACWP — ACCEPTED операция заверш
— RJCT — REJECTED операция отклоне
amount Number y Сумма платежа в минорных единицах (ко
timestamp YYYY-MMDDThh: mm: ss[.SSS]
или
YYYY-MMDDThh: mm: ss[.SSSZ]
y Метка времени НСПК по Гринвичу (GMT)
payerId String (ans) y Идентификатор плательщика (маскирова
kzo String (ans 1-128) o Контрольное Значение Операции СБП. Ф
Присутствует при условии, что Операция
payrrn String (n-12) y Референсный идентификатор запроса в 
TermNo String (an-20) y Уникальный идентификатор терминала
10 "TermNo": 90080567,
11 "amount": 10000,
12 "currency": "RUB",
13 "Url":"https://sbp-payments",
14 "paramsId": "BP10001UMBREG8GI9AFRVAD7S7GJEK6E",
15 "payerId": "*********1234",
16 "kzo": "b02bf0fb819dcc6249f1f6be81da28062236febcb25774a29ebdd770f2a35ba29fa038e459c0845ade1ef2
17 "messageID ":"message"
18 "merchantId": "MB0000009603"
19 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 16/28
Код ключа Тип данных required Назначение
CreditDatePos String (ans 1-256) o Дата операции, установленная Банком П
b) Примерный формат запроса:
c) ВС отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП находится в разработке.
В случае добавления со стороны НСПК дополнительных параметров уведомления, система принимающая их от шлюза Альфа-Банка
9. Запрос операций по Кассовой платёжной ссылке СБП
• Запрос позволяет выполнить поиск всех операций оплаты и возвратов, произведенных по определенной кассовой платежной ссы
• В ответе платежный шлюз Банка возвращает результат обработки запроса с разбивкой по массивам payments (оплаты) и refunds (в
Метод «GetCashQrcId»
a) Описание параметров запроса:
Код ключа Тип данных required
command String (an-1…50) y
TermNo String (an-20) y
qrcId String (an-32) y
dateFrom date-time y
dateTo date-time y
Примечание: Временной диапазон dateFrom — dateTo не должен быть более семи календарных дней. Время в параметре dateFrom д
b) Примерный формат запроса:
c) Описание параметров ответа:
1 {
2 "command":"qrc/notification",
3 "qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
4 "trxId":"A30180803159571F0000097B3DA2D4A7",
5 "paramsId":"BP10001UMBREG8GI9AFRVAD7S7GJEK6E",
6 "status":"ACWP",
7 "amount":"10000",
8 "timestamp":"2023-02-07T08:35:31.102Z",
9 "payerId":"*********1234",
10 "kzo":"d4d45d9db80b29fec2aacbfaf778edc49ff615c13021a2bf5a05f35d8afbcc76f84ceda7598695956c1d5168b1f
11 "payrrn":"000056251465",
12 "TermNo":"90080567",
13 "CreditDatePos":"20230207"
14 }
{
"command": "GetCashQrcId",
"TermNo": "90080567",
"qrcId": "BS10005FR8SV6EI9931BIQGPSUEG8ELL",
"dateFrom": "2023-03-12T17:30:09",
"dateTo": "2023-03-12T23:25:15"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 17/28
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
TermNo String (an-20) y Уникальный
payments array o **Массив пла
operationId string y id платежа в 
status string (enum) y Статус оплат
— SUCCESS,
— REJECTED
reason string o Описание со
amount number y Сумма в коп
date date-time y Формат YYY
refunds array o **Массив воз
refundId string y id возврата в
date date-time y Формат YYY
status string (enum) y Статус возвр
— SUCCESS,
REJECTED,
reason string o Описание пр
amount number y Сумма в коп
* Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "payments": [
5 {
6 "amount": 10000,
7 "date": "2024-02-07T14:08:13",
8 "operationId": "A4038110812414010000020011180902",
9 "reason": "Запрос обработан успешно",
10 "status": "SUCCESS"
11 }
12 ],
13 "refunds": [
14 {
15 "amount": 10000,
16 "date": "2024-02-07T14:19:36",
17 "reason": "Платёж проведён",
18 "refundId": "A4038111858413010000020011180902",
19 "status": "SUCCESS"
20 }
21 ]
22 }
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 18/28
e) При проверке обязательности заполнения параметров запроса, в случае, если какой-либо параметр не заполнен в ответе вернуть
ErrorCode message
"3" Не передан обязательный параметр dateFrom/dateTo
"16" Не передан параметр TermNo
"41" Не передан параметр qrcId
"301" Превышен временной диапазон dateFrom-dateTo
10. Запрос проведения возврата по успешной оплате по Кассовой платёжной ссылке СБП
Возврат по СБП состоит из 2х последовательных запросов:
• GetQRCreversalData — проверка возможности проведения возврата;
• QRCreversal — выполнение непосредственно самого возврата.
В случае если ТСП инициирует выполнение повторных операций СБП B2C по одной и той же операции СБП C2B, то допускается не б
Возврат в один этап. При направлении запроса «QRCReversal», с заполненным полем messageID будет произведен возврат в один
10.1. Запрос возможности проведения возврата
Запрос GetQRCreversalData направляется ТСП в Банк для проверки возможности возврата по ранее оплаченному QR-коду и получен
Метод GetQRCreversalData
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «GetQRCreversalData».
TermNo String (an-20) y Уникальный идентификатор терминала.
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка (обязательно, если не 
trxId String (an-32) y/o Уникальный идентификатор платежа в НСПК (обязательно, если не передан «p
trxDT String (n-14) o Дата и время отменяемого платежа.
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата не пер
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого значе
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
ReturnRestAmount Boolean o Проверка доступного остатка для совершения возврата.
Доступные значения:
— true
— false
Примечание:
• Для поиска оригинальной транзакции обязательным является один из параметров: «payrrn» или «trxId»;
• Терминалы с подключенным сканером и распознаванием QR-кодов могут получить «qrcId», распарсив строку QR-кода с чека опла
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 19/28
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
TermNo String (an-20) y Уникальный идентификатор терминала.
message String (ans-140) y Расшифровка кода ответа**.
messageID String (an-1…50) y/o Уникальный идентификатор сообщения, GUID. Только латинские символы!
payerBnkBIC String (n-9) y БИК банка получателя
payerBnkName String (an-50) y Наименование банка получателя
payerId String (n-13) y Идентификатор получателя (маскированный номер телефона получателя).
payerPam String (ans 1…140) y PAM получателя
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка
qrcId String(an-32) y Идентификатор QR-кода.
trxDT String (n-14) y Дата и время платежа в AnyWay (ГГГГММДДччммсс)
trxId String (an-32) y Уникальный идентификатор платежа в НСПК
restAmount Number (с двумя знаками после точки) o Сумма доступного остатка к возврату.
Если в запросе передано значение "ReturnRestAmount" : true, то в ответе д
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
1 {
2 "command":"GetQRCreversalData",
3 "TermNo":"90080567",
4 "payrrn":"000056251465",
5 "trxId": "A30180803159571F0000097B3DA2D4A7",
6 "trxDT":"20230416082214",
7 "amount":"10000",
8 "currency":"RUB",
9 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
10 "ReturnRestAmount": true
11 }
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "message": "OK",
5 "messageID":"message",
6 "payerBnkBIC": "044525225",
7 "payerBnkName": "Альфа-Банк",
8 "payerId": "*1234",
9 "payerPam": "ИИИ",
10 "payrrn": "000056251465",
11 "qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
12 "trxDT": 20230118124954,
13 "trxId": "A3018124954175080000087B3DA2D4A7",
14 "restAmount":"99.87"
15 }
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 20/28
Примечание:
• Текстовые данные передаются в формате urlencoded;
• В случае получения "message»: «Получен отказ на запрос возврата. Статус Recall, ErrDebetMerchant: KSM0284 Invalid special cond
• 400 Bad Request
10.2. Запрос возврата оплаты
Запрос QRCreversal направляется ТСП в Банк для возврата по ранее произведенной оплате QR. Возврат производится только на сче
Метод QRCreversal.
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «QRCreversal».
TermNo String (an-20) y Уникальный идентификатор терминала.
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка (обязательно, есл
trxId String (an-32) y/o Уникальный идентификатор платежа в НСПК (обязательно, если не перед
trxDT String (n-14) o Дата и время отменяемого платежа.
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата н
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого
messageID String (an-1…50) y/o Уникальный идентификатор сообщения, GUID из сообщения «GetQRCrev
queryData.notificationUrl String (ans-512) o Полный URL для получения уведомления о финальном статусе возврата
ReturnRestAmount Boolean o Проверка доступного остатка для совершения возврата.
Доступные значения:
— true
— false
Блок для внесения д
Код ключа Тип данных required
extJsonParams Object o
JsonParam1 String (ans-250) o
JsonParam2 String (ans-250) o
... ... ...
JsonParam10 String (ans-250) o
* messageID — необходимо передавать точное значение, которые было указано в ответе на запрос GetQRCreversalData. Если значени
на возврат.
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 21/28
** Блок для передачи дополнительных идентификаторов ТСП в ежедневные реестры СБП. Функционал потребует дополнительной
Примечание: Для поиска оригинальной транзакции обязательным является один из параметров: «payrrn» или «trxId».
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
TermNo String (an-20) y Уникальный идентификатор терминала.
amount Number y Сумма платежа в минорных единицах (копейках).
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
message String (ans-1024) y Расшифровка кода ответа**.
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
trxDT String(n-14) y Дата и время операции возврата (ГГГГММДДччммсс).
trxId String(an-32) y Уникальный идентификатор операции возврата в НСПК.
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
restAmount Number (с двумя знаками после точки) o Сумма доступного остатка к возврату.
Если в запросе передано значение "ReturnRestAmount" : true, то в ответе дол
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
1 {
2 "command":"QRCreversal",
3 "TermNo":"90080567",
4 "payrrn":"000056251465",
5 "trxId":"A30180803159571F0000097B3DA2D4A7",
6 "trxDT":"20230416082214",
7 "amount":"10000",
8 "currency":"RUB",
9 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
10 "extJsonParams":
11 {
12 "JsonParam1":"Value",
13 "JsonParam2":"Value",
14 "JsonParam3":"Value",
15 "JsonParam4":"Value",
16 "JsonParam5":"Value",
17 "JsonParam6":"Value",
18 "JsonParam7":"Value",
19 "JsonParam8":"Value",
20 "JsonParam9":"Value",
21 "JsonParam10":"Value"
22 },
23 "queryData":
24 {
25 "notificationUrl":"http://sbp-refunds/"
26 },
27 "ReturnRestAmount": true
28 }
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 22/28
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
11. Запрос статуса возврата СБП (B2C)
Метод «GetQRCreversalStatus» необходим ТСП для уточнения статуса операции B2C (метод QRCreversal).
В запросе «GetQRCreversalStatus» обязательно должна быть передана пара параметров:
1. «payrrn» или «originalTrxId» Один из параметров «payrrn» или «originalTrxId» используется для нахождения исходного платежа C2
2. «trxId» или «messageID». Один из параметров «trxId» или «messageID» используется для нахождения операции возврата B2C, по 
Метод «GetQRCreversalStatus»
a) Описание параметров запроса:
Код ключа Тип данных required
command String (an-1…50) y
TermNo String (an-20) y
payrrn String (n-12) y/o
(обязательно, если не передан параметр «originalTrxId»)
originalTrxId String (an-32) y/o
(обязательно, если не передан параметр «payrrn»)
trxId String (an-32) y/o
(обязательно, если не передан messageID,)
messageID String (ans-1…1024) y/o
(обязательно, если не передан trxId)
b) Примерный формат запроса:
4 "amount": 10000,
5 "currency": "RUB",
6 "message": "%u0421%u0442%u0430%u0442%u0443%u0441%20%u0432%u044B%u044F%u0441%u043D%u0435%u043D%
7 "messageID":"message"
8 "payrrn": "000056251465",
9 "trxDT": 20230614061308,
10 "trxId": "B3018130524291090000167B3DA2D4A7",
11 "restAmount": "99.87"
12 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
{
"command":"GetQRCreversalStatus",
"TermNo":"90080567",
"payrrn":"000056251465",
"originalTrxId":"A30180803159571F0000097B3DA2D4A7",
"trxId":"B3018130524291090000167B3DA2D4A7",
"messageID":"message"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 23/28
c) Примерный формат ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ошибки*.
TermNo String (an-20) y Уникальный идентификатор терминала.
Url String (ans 1-512) o Полный URL получения уведомления для ТСП — значение параметра,
amount Number y Сумма Операции СБП в копейках. Целое, положительное число. Валют
message String (ans-1024) y Описание результата выполнения запроса**.
messageID String (ans-1024) o Значение параметра «messageID» из запроса «QRCreversal».
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежной ссылки СБП, по которо
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B.
payerId String (an-13) y Маскированный номер телефона Клиента-Получателя (Плательщика в 
status String (an-4) y Статус операции возврата СБП (B2C):
ACWP — ACCEPTED операция завершена успешно;
RJCT — REJECTED операция отклонена;
NTST — Статус операции неизвестен.
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C по сценарию «Возврат п
trxId String (an-32) y Уникальный идентификатор операции возврата в НСПК.
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 ОК
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "amount": 10000,
5 "message": "OK",
6 "messageID": "message"
7 "originalQrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
8 "originalTrxId": "A30180803159571F0000097B3DA2D4A7",
9 "payerId": "*********1234",
10 "status": "ACWP",
11 "trxDT": 20230614061308,
12 "trxId": "B3018130524291090000167B3DA2D4A7"
13 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 24/28
12. Запрос истории возвратов по определённой транзакции СБП C2B
Запрос позволяет ТСП проверить все совершённые возвраты по определённой транзакции СБП C2B.
В ответе на запрос возвращаются как успешные, так и неуспешные попытки возвратов.
Метод GetQRCreversalHistory
a) Описание параметров запроса:
Код ключа Тип данных required
command String (an-1…50) y
TermNo String (an-20) y
payrrn String (n-12) y
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*
message String (ans-1024) y Расшифровка кода ответа**
Refunds Array y Массив объектов, содержащих информацию о возвратах по плат
При отсутствии возвратов, будет возвращён ответ с сообщением
refunds.TermNo String (an-20) y Уникальный идентификатор терминала
refunds.amount Number y Сумма Операции СБП B2C (возврат) в копейках. Целое, положител
refunds.originalQrcId String (an-32) y Идентификатор зарегистрированной Платёжной ссылки СБП (QR-к
refunds.originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B в НСПК
refunds.payerId String (an-15) y Маскированный номер телефона Клиента-Получателя (Плательщи
refunds.status String (an-4) y Статус операции возврата СБП (B2C):
1. ACWP — ACCEPTED возврат успешно выполнен
2. RJCT — REJECTED возврат отклонён
3. NTST — NOT_STARTED возврат не инициирован (получен успе
refunds.trxId String (an-32) y Идентификатор Операции возврата СБП B2C по сценарию «Возвра
refunds.trxDT String (n-4) y Дата и время выполнения Операции возврата СБП B2C по сцена
Формат: ГГГГММДДччммсс, UTC +0
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа «ACWP» и «RJCT»:
{
"command":"GetQRCreversalHistory",
"TermNo":"90080567",
"payrrn":"000000002212"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 25/28
• 200 ОК
• 400 Bad Request
e) Примерный формат ответа «NTST»:
• 200 ОК
• 400 Bad Request
f) Примерный формат ответа при отсутствии возвратов по транзакции СБП C2B:
• 200 OK
1 {
2 "ErrorCode": 0,
3 "message": "OK",
4 "refunds": [
5 {
6 "TermNo": 90080567,
7 "amount": 10000,
8 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
9 "originalTrxId": "B51390819586020Z0000120011510503",
10 "payerId": "*********1234",
11 "status": "ACWP",
12 "trxDT": 20250519082345,
13 "trxId": "B51390823097450W0000180011510503"
14 },
15 {
16 "TermNo": 90080567,
17 "amount": 10000,
18 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
19 "originalTrxId": "B51390819586020Z0000120011510503",
20 "payerId": "*********1234",
21 "status": "RJCT",
22 "trxDT": 20250519083836,
23 "trxId": "A4327120041167130000020011381101"
24 }
25 ]
26 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
1 {
2 "ErrorCode": 0,
3 "message": "OK",
4 "refunds": [
5 {
6 "TermNo": 90080567,
7 "amount": 10000,
8 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
9 "originalTrxId": "B51390819586020Z0000120011510503",
10 "payerId": "*********1234",
11 "status": "NTST",
12 "trxId": "B51390835362750D0000100011510503"
13 }
14 ]
15 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 26/28
Декодирование значения поля «message» - «По данной оплате возвраты не найдены».
• 400 Bad Request
13. Нотификация о финальном статусе возврата по Кассовой платёжной ссылке СБП
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
Метод «b2c-refund/notification»
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «b2c-refund/notification»
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID
TermNo String (an-20) y Уникальный идентификатор терминала
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежно
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B
trxId String (an-32) y Идентификатор Операции СБП B2C по сценар
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C 
status String (an-4) y Финальный статус Операции СБП B2C:
"ACWP" — ACCEPTED операция завершена ус
"RJCT" — REJECTED операция отклонена;
amount Number y Сумма операции в копейках
ErrorCode String (an-20) y Код ответа*
message String (ans-1024) y Расшифровка кода ответа**
payerId String (an-15) y Маскированный номер телефона Клиента-Полу
agentRefundRequestId String (an-32) y Уникальный идентификатор запроса, назначае
opkcRefundRequestId String (an-32) y Уникальный идентификатор запроса на возвра
*, ** Таблица возможных кодов ответа приведена в приложении 2.
b) Примерный формат запроса (по успешному возврату):
{
"ErrorCode": 0,
"message": "%u041F%u043E%20%u0434%u0430%u043D%u043D%u043E%u0439%20%u043E%u043F%u043B%u0430%u0442
}
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
1 {
2 "command":"b2c-refund/notification",
3 "messageID":" message",
4 "TermNo":"90080567",
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 27/28
В ответ ожидается:
• http-код «200» — Успешный ответ (Уведомление получено);
• http-код «500» — Внутренняя ошибка.
c) Примерный формат запроса (по отклоненному возврату):
В ответ ожидается:
• http-код «200» — Успешный ответ (Уведомление получено);
• http-код «500» — Внутренняя ошибка.
d) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП находится в разработке.
В случае добавления со стороны НСПК дополнительных параметров уведомления, система, принимающая их от шлюза Альфа-Банка,
5 "originalQrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
6 "originalTrxId":"A3018124954175080000087B3DA2D4A7",
7 "trxId":"B3018130524291090000167B3DA2D4A7",
8 "trxDT":"20230614061308",
9 "status":"ACWP",
10 "amount":"10000",
11 "ErrorCode":"0",
12 "message":"OK",
13 "payerId":"*********1234",
14 "agentRefundRequestId":"00000000000000000182_abcd1994383",
15 "opkcRefundRequestId":"BR10000OKEISOIPM8ST8TBLQHIN9R185"
16 }
1 {
2 "command":"b2c-refund/notification",
3 "TermNo":"90080567",
4 "originalQrcId":" BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
5 "originalTrxId":" A3018124954175080000087B3DA2D4A7",
6 "trxId":"A3024113609260070000086B8426B817",
7 "trxDT":"20230614061308",
8 "status":"RJCT",
9 "amount":"10000",
10 "ErrorCode":"0",
11 "message":"OK",
12 "payerId":"*********1234"
13 }
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 28/28
]]>
</_5_cache_payment_link_SBP_md>
<_6_link_account_subscription_SBP_md>
<![CDATA[
Привязка счёта/подписка СБП
Привязка счёта/подписка СБП
1. Привязка счёта без оплаты (регистрация QR-кода для привязки счёта/подписки по СБП)
• Запрос «Регистрация QR-кода для привязки счёта/подписки по СБП» позволяет Плательщику выполнить привязку своего банковс
проведения оплаты СБП C2B.
• Последующие платежи с привязанного счета в адрес данного ТСП в рамках операций СБП C2B будут выполняться без участия Пла
• Сценарий может применяться как для разовых, так и для регулярных платежей.
1.1. Метод RegQRcSub
a) Описание параметров запроса:
Код ключа Тип
данных required Назначение
command String (an-
1…50)
y Тип запроса. Константа «RegQRcSub».
TermNo String (an-
20)
y Уникальный идентификатор терминала.
qrcType String (an-
32)
y Тип запрашиваемого QR-кода. Константа — «03».
subscriptionPurpose String (ans-
140)
y Цель привязки счета. Информация от ТСП с деталями привязки счета. Данная информация будет отобража
оформлении привязки счета в ДБО Банка Плательщика. Рекомендуется указывать подробную информацию
применимо, регулярность платежей, сумму регулярных платежей и прочее*.
queryData.notificationUrl String (ans-
512)
y Полный URL для получения уведомления о результате привязки счета.
qrTtl String (an-
1…6)
o Срок жизни Функциональной ссылки СБП в минутах.
Минимальное допустимое значение — «1». Максимальное допустимое значение — «129 600» (90 дней).
Рекомендация: устанавливать срок жизни Функциональной ссылки СБП не менее «5» минут. Если поле
будет использовано значение по умолчанию — «4 320» минут (3 суток).
redirectUrl String (ans-
1024)
о Содержит ссылку для автоматического возврата в приложение или на интернет страницу. Допускаются тол
Формат должен соответствовать правилам кодировки URL.
Если все же требуется использовать в redirectUrl кириллические символы, необходимо перекодировать их в
используя percent-encoded octets согласно RFC3986.
Если требуется сформировать QR-код для привязки дополнительного счёта Плательщика в том же Б
Код ключа Тип
данных required Назначение
subscriptionServiceId String (32) о Идентификатор привязки. Обязательно при наличии subscriptionServiceName, т. к. параметры subscriptionSe
могут быть переданы только вместе. При получении параметров subscriptionServiceId и subscriptionServiceN
использовать их в ходе проверки данных привязки счёта на уникальность.
subscriptionServiceName String (70) о Наименование привязки. Обязательно при наличии subscriptionServiceId, т. к. параметры subscriptionService
быть переданы только вместе. При получении параметров subscriptionServiceId и subscriptionServiceName Б
использовать их в ходе проверки данных привязки счёта на уникальность.
b) Примерный формат запроса:
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 1/13
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1
Примечание: При отсутствии данных в поле subscriptionPurpose ответ вернется с ошибкой:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
message String (ans-1024) y Расшифровка кода ответа**.
qrcId String (an-32) y Идентификатор QR-кода.
payload String (1…999) y Платежная ссылка***.
payrrn String (an-12) y Референсный идентификатор запроса в системе Банка
*, ** Таблица возможных кодов ответа приведена в приложении 2.
*** Формат payload может быть двух видов:
• https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L
• https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L?type=03&bank=100000000008&crc=61C4
d) Примерный формат ответа
• 200 OK
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
1 {
2 "command":"RegQRcSub",
3 "TermNo":"90080567",
4 "qrTtl":"10",
5 "qrcType":"03",
6 "subscriptionPurpose":"Подписка на оплату услуг Интернет 500р./мес.",
7 "queryData":
8 {
9 "notificationUrl":"https://sbp-subscription"
10 },
11 "redirectUrl":"https://exampletsp.io/qwertyui"
12 }
{
"ErrorCode": 30,
"message": "Отсутствуют данные в полях: subscriptionPurpose"
}
{
"ErrorCode":"RQ00000",
"message":"Запрос обработан успешно",
"qrcId":"AB1S000V3LEOSC2C8HU8H1B06C6P1P5L ",
"payload":"https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L",
"payrrn":" 000096116491 "
}
{
"ErrorCode":"Код ответа",
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 2/13
https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L
https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L?type=03&bank=100000000008&crc=61C4
Результатом выполнения запроса «Регистрация QR-кода для привязки счета/подписки по СБП» является передача Банком Плательщ
1. «subscriptionToken» — Уникальный Идентификатор привязки счета, назначаемый Банком Плательщика;
2. «memberId» – Идентификатор банка Плательщика.
Важно:
• Значения параметров «subscriptionToken» и «memberId» необходимо хранить в системе ТСП для дальнейшего использования ТСП в
с привязанного счета по инициативе ТСП». В случае отсутствия или утери значения параметра «subscriptionToken», привязку счет
повторно.
• Для получения значений параметров «subscriptionToken» и «memberId» ТСП необходимо реализовать возможность получения callb
1.2. Нотификация по сценарию «Регистрация QR-кода для привязки счета/подписки по СБП
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
«RegQRcSub».
Метод «subscription/notification»
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «subscription/notification».
сode String (an-7) y Возможные варианты кодов ответа:
— «RQ00000» — Запрос обработан успешно;
— «RQ05030» — Плательщик отказался от оформления подписки.
message String (ans-255) y Расшифровка кода ответа*.
status String (an-10) y Возможные статусы оформления подписки:
— «ACWP» — подписка оформлена;
— «RJCT» — подписка не оформлена.
qrcId String (an-32) y Идентификатор QR-кода
subscriptionToken String (an-32) o Идентификатор Подписки, назначаемый Банком Плательщика.
Отсутствует, если Плательщик не дал согласие на оформление подписки.
memberId String (an-12) o Идентификатор Банка Плательщика.
Отсутствует, если Плательщик не дал согласие на оформление подписки.
* Таблица возможных кодов ответа приведена в приложении 2.
b) Примерный формат запроса при согласии Плательщика совершить привязку счёта:
c) Примерный формат запроса при отказе Плательщика совершить привязку счёта:
"message":"Расшифровка кода ответа"
}
{
"command":"subscription/notification ",
"сode":"RQ00000",
"message":"Привязка счета оформлена",
"status":"ACWP",
"qrcId":"BB1S0053V5S91S2E83RPL8THQSRS7O8K",
"subscriptionToken":"6feeacc6a74648589285346e3785ad9e",
"memberId":"100000000008"
}
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 3/13
d) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
В настоящий момент ответ ВС не обрабатывается шлюзом Альфа-Банка. Обработка ответов ТСП находится в разработке.
В случае добавления со стороны НСПК дополнительных параметров уведомления, система принимающая их от шлюза Альфа-Банка
такие неожиданные параметры как ошибочный запрос.
2. Оплата по QR-коду с последующей привязкой счёта/подпиской по СБП
• Запрос «Оплата по QR-коду с последующей привязкой/подпиской по СБП» позволяет Плательщику выполнить разовую оплату в р
с последующей привязкой своего банковского счета к ТСП.
• Последующие платежи с привязанного счета в адрес данного ТСП будут выполняться без участия Плательщика.
• Регистрация Функциональной ссылки СБП для выполнения оплаты с последующей привязкой счета представляет собой регистра
ссылки с "qrcType"="02" с дополнительным параметром "subscriptionPurpose" (информация от ТСП с деталями привязки счета).
2.1 Метод GetQRCd
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…
50)
y Тип запроса. Константа «GetQRCd».
TermNo String (an-20) y Уникальный идентификатор терминала.
amount Number y Сумма платежа в минорных единицах (копейках).
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
width String o Ширина картинки QR-кода (только числовое значение).
height String o Высота картинки QR-кода (только числовое значение).
qrcType String (n-2) y Тип запрашиваемого QR-кода. Константа — «02».
paymentPurpose String (ans-
140)
o Назначение платежа.
messageID String (an-1…
1024)
o Уникальный идентификатор сообщения, GUID. Только латинские символы!
qrTtl String (an-1…
6)
o Срок жизни Функциональной ссылки СБП в минутах. Минимальное допустимое значение — «1».
значение — «129 600» (90 дней).
Рекомендация: устанавливать срок жизни Функциональной ссылки СБП не менее «5» минут. Ес
в запросе, будет использовано значение по умолчанию — «4 320» минут (3 суток).
queryData.notificationUrl String (ans-
512)
y Полный URL для получения уведомления о финальном статусе оплаты QR-кода, а также о результа
queryData.notificationUrl_sub String (ans-
512)
o Полный URL для получения уведомления о результате привязки счета.
В случае указания значения в данном поле, на указанный URL адрес будет направлено одно отд
привязки счета Плательщика.
{
"command":"subscription/notification",
"сode":"RQ05030",
"message":"Плательщик отказался от привязки счета",
"status":"RJCT",
"qrcId":"BB1S0053V5S91S2E83RPL8THQSRS7O8K",
"subscriptionToken":"00000000000000000000000000000000",
"memberId ":"100000000008"
}
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 4/13
Код ключа Тип данных required Назначение
subscriptionPurpose String (ans-
140)
y Цель привязки счета. Информация от ТСП с деталями привязки счета. Данная информация буде
Плательщика при оформлении привязки счета в ДБО Банка Плательщика.
Рекомендуется указывать подробную информацию о привязке счета, включая, если применимо
регулярных платежей и прочее*.
redirectUrl String (ans-
1024)
o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаются тольк
должен соответствовать правилам кодировки URL.
Если все же требуется использовать в redirectUrl кириллические символы, необходимо перекодиров
код, используя percent-encoded octets согласно RFC3986.
Если требуется сформировать QR-код для привязки дополнительного счёта Плательщика в том же Б
Код ключа Тип
данных required Назначение
subscriptionServiceId String (32) o Идентификатор привязки. Обязательно при наличии subscriptionServiceName, т. к. параметры subscriptionSe
могут быть переданы только вместе. При получении параметров subscriptionServiceId и subscriptionServiceN
использовать их в ходе проверки данных привязки счёта на уникальность.
subscriptionServiceName String (70) o Наименование привязки. Обязательно при наличии subscriptionServiceId, т. к. параметры subscriptionService
быть переданы только вместе. При получении параметров subscriptionServiceId и subscriptionServiceName Б
использовать их в ходе проверки данных привязки счёта на уникальность.
Если требуется сформировать динамический QR-код под определенного Плательщика, то необходимо использоват
Код ключа Тип данных required Назначение
queryData.SenderFIO String (an-140) o Фамилия, Имя и Отчество Плательщика (не является регистрозависимым)
queryData.SenderID String (an-11.13) o Идентификатор Плательщика (номер телефона Плательщика — 0079123456
queryData.SenderBankBIC String (n-9) o БИК Банка Плательщика
Важно! При отсутствии данных в параметре subscriptionPurpose будет зарегистрирована обычная одноразовая Платежная ссылка СБ
возможности совершить привязку счета.
b) Примерный формат запроса:
c) Описание параметров ответа:
1 {
2 "command":"GetQRCd",
3 "TermNo":"90080567",
4 "amount":"10000",
5 "currency":"RUB",
6 "qrcType":"02",
7 "paymentPurpose":"Назначение платежа",
8 "subscriptionPurpose":"Подписка на оплату услуг Интернет 500р./мес.",
9 "width":"600",
10 "height":"600",
11 "qrTtl":"10",
12 "messageID":"message",
13 "queryData":
14 {
15 "notificationUrl":"https://sbp-payments",
16 "notificationUrl_sub":"https://sbp-subscription"
17 },
18 "redirectUrl": "https://exampletsp.io/qwertyui"
19 }
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 5/13
Код
ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
TermNo String (an-20) y Уникальный идентификатор терминала.
image String(an)
Длинна зависит от формата, порядок
7000 символов.
y Изображение QR-кода содержит энкодированный BASE64 файл изображени
.png
message String (ans-1024) y Расшифровка кода ответа**.
payload String (1…999) y Платежная ссылка***.
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка
qrcId String (an-32) y Идентификатор QR-кода
status String (n-7) y Статус регистрации Платежной ссылки СБП
*, ** Таблица возможных кодов ответа приведена в приложении 2.
*** Формат payload может быть двух видов:
• https://qr.nspk.ru/BD1P004FM8U22B8B8N1RHCRJSAB6C4TS
• https://qr.nspk.ru/BD1P004FM8U22B8B8N1RHCRJSAB6C4TS?type=02&bank=100000000008&sum=100&cur=RUB&crc=A1A3
d) Примерный формат ответа:
• 200 OK
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
Результатом выполнения запроса «Оплата по QR-коду с последующей привязкой/подпиской по СБП» является передача Банком Пла
следующих параметров:
1. «subscriptionToken» — Уникальный Идентификатор привязки счета, назначаемый Банком Плательщика;
2. «memberId» – Идентификатор банка Плательщика.
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "image":"iVBORw0KGgoAAAANSUhEUgAAghjysAAAAgjjafggkqqBEoAAARKCAIAAAQA/w……………...........YIAI",
5 "message":"%u0423%u0441%u043F%u0435%u0445",
6 "messageID":"message",
7 "payload":" https://qr.nspk.ru/AS1000670LSS7DN18SJQDNP4B05KLJLK",
8 "payrrn":"000022134348",
9 "qrcId":"AS1000670LSS7DN18SJQDNP4B05KLJLK ",
10 "status":"CREATED"
11 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 6/13
https://qr.nspk.ru/BD1P004FM8U22B8B8N1RHCRJSAB6C4TS%20
https://qr.nspk.ru/BD1P004FM8U22B8B8N1RHCRJSAB6C4TS?type=02&bank=100000000008&sum=100&cur=RUB&crc=A1A3
Важно:
• Значения параметров "subscriptionToken" и "memberId" необходимо хранить в системе ТСП для дальнейшего использования ТСП в 
с привязанного счета по инициативе ТСП». В случае отсутствия или утери значения параметра "subscriptionToken", привязку счет
повторно.
• Для получения значений параметров "subscriptionToken" и "memberId" ТСП необходимо реализовать возможность получения callba
2.2. Нотификация по сценарию «Оплата по QR-коду с последующей привязкой счета/подпиской по СБП»
Запросы о нотификации отправляются из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.no
«queryData.notificationUrl_sub» при направлении запроса «GetQRCd».
Информация о возможных сценариях нотификации:
1. При успешной оплате и успешной привязке счёта в адрес ТСП направляется два callback уведомления:
• об успешности оплаты по QR-коду — метод «qrc/notification»;
• об успешности привязки счета — метод «subscription/notification».
2. Если Плательщик совершил оплату, но отказался от привязки счета, то в ТСП направляется два callback уведомления:
• об успешности оплаты по QR-коду (метод «qrc/notification»);
• об отказе Плательщика от привязки счета (метод «subscription/notification»).
3. Если Плательщик не стал совершать оплату, то привязка счета ему не предлагается, в ТСП callback уведомление не направляется.
3. Оплата с привязанного счёта по инициативе ТСП
Запрос «Оплата с привязанного счета по инициативе ТСП» позволяет по запросу ТСП выполнить оплату в рамках операции СБП C2B
привязка которого была выполнена ранее в рамках запроса «Регистрация QR-кода для привязки счета/подписки по СБП» или «О
с последующей привязкой счета/подпиской по СБП». Сценарий может применяться как для разовых, так и для регулярных плате
Для выполнения оплаты с привязанного счета необходимо направить в платежный шлюз Банка два последовательных запроса:
1. Запрос «GetQRCd» на генерирование Платежной ссылки со значением параметра qrcType = «02» и с обязательно заполненным зн
«paymentPurpose»;
2. Запрос «QRCSubPayPetition» на оплату с привязанного счёта с указанием:
• идентификатора QR-кода, полученного в ответе на запрос GetQRCd;
• идентификаторов «subscriptionToken» и «SenderMemberId», полученных в callback уведомлении по методу «subscription/notificatio
В случае удаления Плательщиком привязки счета Банк Плательщика, получив запрос по сценарию «Оплата с привязанного счета по
запрос и направляет в адрес ТСП нотификацию с сообщением — «Привязка счета не найдена».
Оплату с привязанного счета можно проводить на сумму до 1 000 000 руб.
3.1. Генерация Платежной ссылки
Метод «GetQRCd»
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…
50)
y Тип запроса. Константа «GetQRCd».
TermNo String (an-20) y Уникальный идентификатор терминала.
amount Number y Сумма платежа в минорных единицах (копейках).
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
width String o Ширина картинки QR-кода (только числовое значение).
height String o Высота картинки QR-кода (только числовое значение).
qrcType String (n-2) y Тип запрашиваемого QR-кода. Константа — «02».
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 7/13
Код ключа Тип данных required Назначение
paymentPurpose String (ans-
140)
y Назначение платежа. Обязательно к заполнению в сценарии «Оплата с привязанного счета по и
messageID String (an-1…
1024)
o Уникальный идентификатор сообщения, GUID. Только латинские символы!
qrTtl String (an-1…
6)
o Срок жизни Функциональной ссылки СБП в минутах. Минимальное допустимое значение — «
значение — «129 600» (90 дней).
Рекомендация: устанавливать срок жизни Функциональной ссылки СБП не менее «5» минут
в запросе, будет использовано значение по умолчанию — «4 320» минут (3 суток).
queryData.notificationUrl String (ans-
512)
y Полный URL для получения уведомления о решении Банка Плательщика по оплате с привязанн
статусе оплаты QR-кода.
queryData.notificationUrl_subRes String (ans-
512)
o Полный URL для получения уведомления о решении Банка Плательщика по оплате с привяз
В случае указания значения в данном поле, на указанный URL адрес будет направлено одно
о решении Банка Плательщика по оплате с привязанного счета.
redirectUrl String (ans-
1024)
o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаются то
Формат должен соответствовать правилам кодировки URL.
Если все же требуется использовать в redirectUrl кириллические символы, необходимо перекоди
код, используя percent-encoded octets согласно RFC3986.
b) Примерный формат запроса:
c) Описание параметров ответа:
Код
ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
TermNo String (an-20) y Уникальный идентификатор терминала.
image String (an)
Длинна зависит от формата, порядок
7000 символов.
y Изображение QR-кода содержит энкодированный BASE64 файл изображени
.png
message String (ans-1024) y Расшифровка кода ответа**.
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
payload String (1…999) y Платежная ссылка***.
1 {
2 "command":"GetQRCd",
3 "TermNo":"90080567",
4 "amount":"10000",
5 "currency":"RUB",
6 "qrcType":"02",
7 "paymentPurpose":"Назначение платежа",
8 "width":"600",
9 "height":"600",
10 "qrTtl":"10",
11 "messageID":"message",
12 "queryData":
13 {
14 "notificationUrl":"https://sbp-payments",
15 "notificationUrl_subRes":"https://sbp-subscription_ resolution"
16 },
17 "redirectUrl": "https://exampletsp.io/qwertyui"
18 }
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 8/13
Код
ключа Тип данных required Назначение
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
qrcId String (an-32) y Идентификатор QR-кода.
status String (n-7) y Статус регистрации Платежной ссылки СБП
*, ** Таблица возможных кодов ответа приведена в приложении 2.
*** Формат payload может быть двух видов:
• https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89
• https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89?type=02&bank=100000000008&sum=10000&cur=RUB&crc=D87E
d) Примерный формат ответа:
• 200 OK
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
3.2. Запрос на оплату с привязанного счета по инициативе ТСП
Метод QRCSubPayPetition используется ТСП для того, чтобы Банк Плательщика выполнил оплату с привязанного счета.
Метод «QRCSubPayPetition»
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «QRCSubPayPetition».
TermNo String (an-20) y Уникальный идентификатор терминала.
subscriptionToken String (an-32) y Идентификатор Привязки счета, назначенный Банком Плательщика ранее на этапе оформления п
SenderMemberId String (an-12) y Идентификатор банка Плательщика.
qrcId String (an-32) y Идентификатор QR-кода.
1 {
2 "ErrorCode": 0,
3 "TermNo": 90080567,
4 "image": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAYAAAC
5 "message": "%u0423%u0441%u043F%u0435%u0445",
6 "messageID": "message",
7 "payload": "https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89?type=02&bank=100000000008&sum=10
8 "payrrn": "000755856505",
9 "qrcId": "AD10000BBJKO23GB98LA1FGBRIHH3K89",
10 "status": "CREATED"
11 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 9/13
https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89
https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89?type=02&bank=100000000008&sum=10000&cur=RUB&crc=D87E
* Если привязка счета была подтверждена Плательщиком, Банк Плательщика в обязательном порядке должен передать параметр «
Уникальный Идентификатор привязки счета. Уникальный Идентификатор привязки счета должен однозначно идентифицировать со
Плательщика.
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
message String (ans-140) y Расшифровка кода ответа**.
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
3.3. Нотификация по сценарию «Оплата с привязанного счёта по инициативе ТСП»
Запросы о нотификации отправляются из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.no
«queryData.notificationUrl_subRes» при направлении запроса «GetQRCd».
Нотификация по оплате с привязанного счёта состоит из двух уведомлений:
1. Уведомление о согласии/отказе в проведении платежа — метод «resolution /notification»;
2. Уведомление о проведении/отказе в проведении платежа по QR-коду — метод «qrc/notification».
Метод «resolution /notification»
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «resolution/notification»
code String (an-7) y Возможные варианты кодов ответа:
«RQ00030» — Согласие Банка Плательщика на выполнение платежа
{
"command":"QRCSubPayPetition ",
"TermNo":"90080567",
"subscriptionToken":"70LSS7DN18SJQRS10006DNPKLJL24B05"
"SenderMemberId":"100000000008",
"qrcId":" AD10000BBJKO23GB98LA1FGBRIHH3K89"
}
{
"ErrorCode":"RQ00000",
"message":"Запрос обработан успешно"
}
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 10/13
Код ключа Тип данных required Назначение
«RQ05031» — Отказ Банка Плательщика. Привязка счета не найдена
«RQ05032» — Отказ Банка Плательщика в выполнении платежа
«RQ05060» — Недостаточно денежных средств для проведения операции
«RQ05061» — Превышен лимит по сумме операций по СБП
«RQ05062» — Превышен лимит по количеству операций по СБП
«RQ05063» — Подозрение в мошенничестве
«RQ05064» — Выполнение операций в данной категории ТСП запрещено
«RQ05065» — Счёт заблокирован
«RQ05066» — Счёт закрыт
«RQ05067» — Выполнение операции запрещено по требованию законодательства
message String (ans-1…1024) y Расшифровка кода ответа*.
qrcId String (an-32) y Идентификатор QR-кода
* Таблица возможных кодов ответа приведена в приложении 2.
b) Примерный формат запроса при успешной оплате с привязанного счета:
c) Примерный формат запроса в случае если недостаточно денежных средств на счёте Плательщика/сумма больше установленного
d) Примерный формат запроса в случае направления запроса ТСП на оплату с привязанного счета, когда привязка счета была успеш
Плательщиком удалена:
e) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
В настоящий момент ответ ВС не обрабатывается шлюзом Альфа-Банка. Обработка ответов ТСП находится в разработке.
В случае добавления со стороны НСПК дополнительных параметров уведомления, система принимающая их от шлюза Альфа-Банка
такие неожиданные параметры как ошибочный запрос.
4. Запрос статуса привязки счёта
Запрос предназначен для попытки уточнения в ПШ Банка привязки счета со стороны ТСП.
Метод GetQRCSubStatus.
{
"command":"resolution/notification ",
"code":" RQ00030",
"message":" Согласие на проведение платежа ",
"qrcId":" BD10006FEU7CQ9VE8D383VP0O2VH78D9",
}
{
"command":" resolution/notification ",
"code":" RQ05032",
"message":" Отказ в выполнении платежа ",
"qrcId":" BD10004KH55FOMC48QIR3FCDEHVLA23F ",
}
{
"command":" resolution/notification ",
"code":"RQ05031",
"message":"Привязка счета не найдена ",
"qrcId":" BD10004KH55FOMC48QIR3FCDEHVLA23F ",
}
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 11/13
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «GetQRCSubStatus».
TermNo String (an-20) y Уникальный идентификатор терминала.
qrcId String(an-32) y Идентификатор QR-кода.
RQperiod String(n-3) o Период времени, за который нужно искать уведомление для Агенета ТСП о решении Банка Плательщика по пр
*Если параметр не передан в запросе, то поиск будет осуществляться без ограничения по времени.
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*.
message String (ans-140) y Расшифровка кода ответа**.
qrcId String(an-32) o Идентификатор QR-кода.
status String(a-4) o Статус выполнения привязки счета Плательщика.
subscriptionToken String(an-32) o Уникальный идентификатор привязки счета Плательщика в Банке Плательщика.
memberId String(an-12) o Идентификатор Банка Плательщика.
notifyDate String(ans-19) o Дата получения уведомления о результате выполнения привязки счета Плательщика.
*, ** Таблица возможных кодов ответа приведена в приложении 2.
Примечание:
• Если уведомление найдено, то в ответе будет присутствовать параметр «status».
• Если в ходе выполнения запроса возникла ошибка обработки запроса, то в ответе будут переданы только код ошибки не равный
• Если уведомление не было найдено (не получено от НСПК), то запрос будет считаться успешно выполненным и в ответе будет пер
соответствующее успешному ответу, но без дополнительных параметров.
d) Примерный формат ответа:
• 200 OK
{
"command":"GetQRCSubStatus",
"TermNo":"90080567",
"qrcId":"BB1S002PRSK6SR3E9R7P0H077UKN1QVF",
"RQperiod":"14"
}
{
"ErrorCode": 0,
"memberId": 600000000015,
"message": "OK",
"qrcId": "BB1S002PRSK6SR3E9R7P0H077UKN1QVF",
"status": "ACWP",
"subscriptionToken": "70LSS7DN18SJQRS10006DNPKLJLAGT77"
}
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 12/13
Примечание: текстовые данные передаются в формате urlencoded.
• 400 Bad Request
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Привязка счёта / подписка СБП
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 13/13
]]>
</_6_link_account_subscription_SBP_md>
<_7_digital_rubble_md>
<![CDATA[
Цифровой Рубль
Цифровой рубль
Цифровой рубль — это цифровая форма рубля.
Сейчас у нас есть наличная (банкноты и монеты) и безналичная (деньги на счетах) форма национальной валюты, а в дополнение к ни
Счета цифрового рубля будут открываться на платформе Центробанка. На этих счетах будет храниться цифровой рубль.
Операции с цифровыми рублями будут проходить на ПЦР.
Доступ к счетам цифрового рубля будет возможен через мобильные приложения банков и интернет-банки.
По эквайрингу прием ЦР осуществляется в рамках Универсального платёжного кода
1. Динамический QR-код:
1.1. Запрос регистрации динамического УПК (универсального одноразового платёжного кода)
• Сгенерировать универсальный одноразовый платёжный код возможно с помощью уже существующего метода «GetQRCd».
Сгенерированный QR-код возможно оплатить как через СБП, так и с использованием ЦР.
При этом в настройках ТСП на ПШ Банка обязательно должен быть указан счет ЦР
• Также универсальный одноразовый платёжный код возможно сгенерировать с помощью отдельного метода «ReqUniQr».
Сгенерированный QR-код возможно оплатить как через СБП, так и с использованием ЦР.
При этом в настройках ТСП на ПШ Банка обязательно должен быть указан счет ЦР
Запрос «ReqUniQr» направляется ТСП в Банк для выполнения запроса «Регистрация универсальной платёжной ссылки» API СБП.
В ответе ПШ Банка возвращает результат обработки запроса и, в случае успешной обработки — значения параметров, полученных в 
• image (изображение)
• mediaTypeR (расширение QR-кода)
• payload (платёжная ссылка)
• uniQrId (Идентификатор Платёжной ссылки)
• status (Статус регистрации Платёжной ссылки. Единственное допустимое значение = «CREATED»).
Метод ReqUniQr
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an‐1…50) y Тип запроса. Константа «ReqUniQr»
TermNo String (an‐20) y Уникальный идентификатор терминала
amount Number о Сумма платежа в минорных единицах (копейках)
Обязательна при значении uniQrType = 02
mediaType String o Расширение QR‐кода
width String o Ширина картинки QR‐кода (только числовое значение)
height String o Высота картинки QR‐кода (только числовое значение)
uniQrType String (n‐2) y Тип платёжной ссылки:
• 01 — многоразовая
• 02 — одноразовая
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 1/13
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1
https://sbp.nspk.ru/uniqr?ysclid=mhajjmr4i0196202211
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1#dynemic_qr
Код ключа Тип данных required Назначение
paymentPurpose String (ans‐140) o Назначение платежа
redirectUrl String (ans‐1024) o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП.
Допускаются только символы в кодировке ASCII. Формат должен соответствовать правилам кодир
Если требуется использовать в redirectUrl кириллические символы, необходимо перекодировать их
RFC3986
paymentPageUrl String (ans‐1024) o Ссылка для перенаправления Покупателя на Платёжную страницу Участника Сервиса УПК
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID
qrTtl String (an‐1…6) o Минимальное значение срока использования созданной динамической платёжной ссылки в целых мин
fraudScore String (an‐16) o Индикатор Подозрительной Операции Агента ТСП
queryData.notificationUrl String (ans‐512) o Полный URL для получения уведомления о финальном статусе оплаты QR‐кода
Если требуется сформировать динамический QR-код под определенного Плательщика, то необходи
Код ключа Тип данных required Назначение
queryData.SenderFIO String (an‐140) o Фамилия, Имя и Отчество Плательщика, не являет
queryData.SenderID String (an-11…13) o Идентификатор Плательщика
queryData.SenderBankBIC String (n‐9) o Банковский Идентификационный Код Банка Плате
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an‐20) y Код ответа:
0 — успешное выполнение запроса
иначе — код ошибки и её расшифровка в поле message*
message String (ans‐1024) o Расшифровка кода ответа — если ErrorCode не равен 0**
payload String (1…999) o Платёжная ссылка — если ErrorCode = 0
1 {
2 "command":"ReqUniQr",
3 "TermNo":"90080567",
4 "amount":"10000",
5 "uniQrType":"02",
6 "redirectUrl":"https://alfabank.ru/sme/payservice/sbp/",
7 "paymentPageUrl":"https://alfabank.ru/sme/payservice/sbp/",
8 "mediaType":"image/png",
9 "width":"600",
10 "height":"600",
11 "qrTtl":"2",
12 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
13 "paymentPurpose":"Назаначение платежа",
14 "fraudScore":"0000000000000000",
15 "queryData":
16 {
17 "notificationUrl":"https://sbp-payments",
18 "SenderFIO":"Иванов|Иван|Иванович",
19 "SenderID":"0079123456789",
20 "SenderBankBIC":"44525593"
21 }
22 }
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 2/13
Код ключа Тип данных required Назначение
payrrn String (n‐12) o Референсный номер платежа — если ErrorCode = 0
mediaTypeR String o Расширение QR-кода — если ErrorCode = 0
uniQrId String (an‐32) o Идентификатор Платёжной ссылки — если ErrorCode = 0
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если ErrorCode =
status String (an‐20) o Статус регистрации Платёжной ссылки = «CREATED» — если Error
*,** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
1.2. Запрос статуса оплаты по динамическому УПК
• Статус оплаты универсального одноразового платёжного кода возможно проверить с помощью уже существующего метода «GetQ
При этом, в ответе к уже существующим статусам, добавляется еще два новых статуса для ЦР: «ENDD» и «ACDR»
• Также статус оплаты возможно проверить с помощью отдельного метода «GetUniQrStatus»
Метод GetUniQrStatus
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an‐1…50) y Тип запроса. Константа «GetUniQrStatus»
TermNo String (an‐20) y Уникальный идентификатор терминала
uniQrIds String y Массив идентификаторов Одноразовых Платёжных ссылок (uniQrId), статус которых х
Максимальное количество идентификаторов Одноразовых Платёжных ссылок в одно
b) Примерный формат запроса:
1 {
2 "ErrorCode":"0",
3 "message":"Запрос выполнен",
4 "image":"iVBORw0KGgoAAAANS…AAASUVORK5CYII=",
5 "messageID":"message",
6 "payload":"https://qr.nspk.ru/BD10006PV41C82I48OAODKVDFF0IK9SE",
7 "payrrn":"000000002235",
8 "uniQrId":"BD10006PV41C82I48OAODKVDFF0IK9SE",
9 "mediaTypeR":"image/png",
10 "status":"CREATED"
11 }
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
1 {
2 "command": "GetUniQrStatus",
3 "TermNo": "agttest321",
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 3/13
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1#payment_status
с) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an‐20) y Код ответа:
0 — успешное выполнение запроса
иначе — код ошибки и её расшифровка в поле message*
message String (ans‐1024) o Расшифровка кода ответа — если ErrorCode не равен 0**
data String o Блок данных в формате JSON (массив Record)*** — если ErrorCode
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если ErrorCode = 0
status String (an‐20) o Статус регистрации Платёжной ссылки = «CREATED» — если ErrorC
*, ** Таблица возможных кодов ответа приведена в приложении 2.
*** описание структуры массива Record блока данных data:
Код ключа Тип данных Назначение
uniQrId String (an‐32) Идентификатор Одноразовой Платёжной ссылки
code String (7) Код ответа для указанной Одноразовой Платёжной ссылки
message String (1…255) Текстовое описание кода ответа для указанной Одноразовой Платёжной ссылки
paymentServiceId String (12) Идентификатор способа приёма платежа, который использовался для оплаты указанной Одноразовой Платёжной сс
Будет отсутствовать в ответе при значении параметра status = «NTST» и будет заполнен при любых других значениях
status String (4) Текущий статус Одноразовой Платёжной ссылки. Допустимые значения:
1. «NTST» (NOT_STARTED): платёж не инициирован
2. «RCVD» (RECEIVED): инициирован платёж
3. «ACWP» (ACCEPTED): платёж успешно выполнен
4. «RJCT» (REJECTED): платёж отклонён
5. «ENDD»: платёж с расчётами в ЦР обработан, но результат выполнения неизвестен (успех или отказ)
6. «ACDR»: передаётся статус (аналог «ACWP»), указанный в настройке ACWPstatusDR. Используется в отдельных п
Может принимать значения:
• «ENDD» передаётся в случае, если:
• с использованием указанной Одноразовой Платёжной ссылки была выполнена Операция ЦР C2B (paymentSe
• нет уведомления, но уже был запрос статуса, и в нём был получен «ENDD» (если ссылка была сформирована
• «ACWP» и «RJCT» только в том случае, если с использованием указанной Одноразовой Платёжной ссылки был
• «ACDR» передаётся статус, если есть уведомление от ПлЦР об оплате (если ссылка была сформирована как un
trxId String (32) Идентификатор Операции СБП будет заполнен только при соблюдении следующих условий:
• paymentServiceId = «PS0000000001»
4 "uniQrIds":
5 [
6 "AD2000670LSS7DN18SJQDNP4B05KLJL1",
7 "AD2000670LSS7DN18SJQDNP4B05KLJL2",
8 "AD2000670LSS7DN18SJQDNP4B05KLJL3",
9 "AD2000670LSS7DN18SJQDNP4B05KLJL4",
10 "AD2000670LSS7DN18SJQDNP4B05KLJL5"
11 ]
12 }
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 4/13
https://wiki.finstream.ru/pages/viewpage.action?pageId=153813196#id-%D0%A8%D0%BB%D1%8E%D0%B7FastPayAgentDR(%D0%9F%D0%BB%D0%B0%D1%82%D0%B5%D0%B6%D0%BD%D0%B0%D1%8F%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%D0%A1%D0%91%D0%9F/%D0%A6%D0%A0(%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B9%D1%80%D1%83%D0%B1%D0%BB%D1%8C)%D0%B4%D0%BB%D1%8F%D0%90%D0%B3%D0%B5%D0%BD%D1%82%D0%B0%D0%A2%D0%A1%D0%9F)-%D0%91%D0%B8%D0%B7%D0%BD%D0%B5%D1%81-%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81AWGW.FastPayAgentDR.BProcess
Код ключа Тип данных Назначение
• status = «ACWP» или «RJCT»
kzo String (1…128) Контрольное значение Операции СБП будет заполнено только при соблюдении следующих условий:
• paymentServiceId = «PS0000000001»
• status = «ACWP»
payrrn String (n‐12) Референсный номер платежа — если ErrorCode = 0
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
2. Кассовая платёжная ссылка
1 {
2 "ErrorCode": "0",
3 "message": "Запрос обработан успешно",
4 "data": [
5 {
6 "qrcId": "AD2000670LSS7DN18SJQDNP4B05KLJL1",
7 "code": "RQ00000",
8 "message": "Запрос обработан успешно",
9 "paymentServiceId": "PS0000000002",
10 "status": "ENDD",
11 "trxId": null,
12 "kzo": null
13 },
14 {
15 "qrcId": "AD2000670LSS7DN18SJQDNP4B05KLJL2",
16 "code": "RQ00000",
17 "message": "Запрос обработан успешно",
18 "paymentServiceId": "PS0000000001",
19 "status": "ACWP",
20 "trxId": "A1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K3",
21 "kzo": "FDOS4JUETLYT639ADAFZ4GAUY9VSM2TG2Y595LQ20EKQF3JM1CIV4ZTZYA1EYIMFMEJSRB2UR7KATMA2
22 },
23 {
24 "qrcId": "AD2000670LSS7DN18SJQDNP4B05KLJL4",
25 "code": "RQ00000",
26 "message": "Запрос обработан успешно",
27 "paymentServiceId": null,
28 "status": "NTST",
29 "trxId": null,
30 "kzo": null
31 },
32 {
33 "qrcId": "AD2000670LSS7DN18SJQDNP4B05KLJL5",
34 "code": "RQ05014",
35 "message": "Указанное значение uniQrId не найдено",
36 "paymentServiceId": null,
37 "status": null,
38 "trxId": null,
39 "kzo": null
40 }
41 ]
42 }
{
"ErrorCode": "Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 5/13
2.1 Запрос регистрации кассового УПК (универсального многоразового платёжного кода)
• Сгенерировать универсальный многоразовый платёжный код возможно с помощью уже существующего метода «RegCashQRc».
Сгенерированный QR-код возможно оплатить как через СБП, так и с использованием ЦР.
При этом в настройках ТСП на ПШ Банка обязательно должен быть указан счет ЦР
• Также универсальный многоразовый платёжный код возможно сгенерировать с помощью отдельного метода «RegCashUniQr».
Сгенерированный QR-код возможно оплатить как через СБП, так и с использованием ЦР.
При этом в настройках ТСП на ПШ Банка обязательно должен быть указан счет ЦР
Метод ReqUniQr
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an‐1…50) y Тип запроса. Константа «ReqCashUniQr»
TermNo String (an‐20) y Уникальный идентификатор терминала
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID
redirectUrl String (ans‐1024) o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП.
Допускаются только символы в кодировке ASCII. Формат должен соответствовать правилам кодир
Если требуется использовать в redirectUrl кириллические символы, необходимо перекодировать их
RFC3986
paymentPageUrl String (ans‐1024) o Ссылка для перенаправления Покупателя на Платёжную страницу Участника Сервиса УПК
mediaType String o Расширение QR‐кода УПК
width String o Ширина картинки QR‐кода (только числовое значение)
height String o Высота картинки QR‐кода (только числовое значение)
qrcId String (32) o Идентификатор Многоразового УПК, предварительно зарегистрированный с использованием мето
Если Банк ТСП передаст в запросе параметр qrcId, Оператор Сервиса УПК использует значение это
параметр qrcId будет отсутствовать, Оператор Сервиса УПК сформирует новое значение идентифи
Зарегистрировать Кассовый УПК с определенным значением qrcId может только тот Банк ТСП, кот
API «Получение идентификаторов для Многоразовых УПК»
queryData.notificationUrl String (ans‐512) o Полный URL для получения уведомления о финальном статусе оплаты QR-кода
b) Примерный формат запроса:
c) Описание параметров ответа:
1 {
2 "command":"ReqCashUniQr",
3 "TermNo":"90080567",
4 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
5 "redirectUrl":"https://alfabank.ru/sme/payservice/sbp/",
6 "paymentPageUrl":"https://alfabank.ru/sme/payservice/sbp/",
7 "mediaType":"image/png",
8 "width":"600",
9 "height":"600",
10 "qrcId":"",
11 "queryData":
12 {
13 "notificationUrl":"https://sbp-payments",
14 }
15 }
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 6/13
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1#cash_register_payment_link
Код ключа Тип данных required Назначение
ErrorCode String (an‐20) y Код ответа*
message String (ans‐1024) y Расшифровка кода ответа**
TermNo String (an‐20) y Уникальный идентификатор терминала
payload String (1…999) o Платёжная ссылка УПК. См. приложение 1
image String (an)
Длина зависит от формата, порядок 7000 символов
y Изображение QR-кода содержит энкодированный BASE64
mediaType String o Расширение QR-кода УПК, если ErrorCode = 0
qrcId String (an‐32) o Идентификатор QR-кода
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если Err
status String (an‐20) o Статус регистрации Платёжной или Информационной ссы
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
2.2 Запрос статуса оплаты по кассовому УПК
• Статус оплаты кассового универсального многоразового платёжного кода возможно проверить с помощью уже существующего м
При этом, в ответе к уже существующим статусам, добавляется ещё два новых статуса для ЦР: «ENDD» и «ACDR».
• Также статус оплаты возможно проверить с помощью отдельного метода «GetCashUniQrStatus».
Метод GetCashUniQrStatus
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an‐1…50) y Тип запроса. Константа «GetCashUniQrS
TermNo String (an‐20) y Уникальный идентификатор терминала
messageID String (ans‐1024) o Уникальный идентификатор сообщения
{
"ErrorCode": "0",
"message": "OK",
"TermNo": "90080567",
"payload": "![CDATA[https://qr.nspk.ru/BS2R003FS8EFGAVM852PQS13N894HDLU?type=01&bank=620000000015&cr
"image": "iVBORw0KGgoAAAANSUhEUgAAAlg......",
"mediaType": "image/png",
"qrcId": "BS2R003FS8EFGAVM852PQS13N894HDLU",
"status": "CREATED"
}
{
"ErrorCode":"Код ответа",
"message":"Расшифровка кода ответа"
}
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 7/13
Код ключа Тип данных required Назначение
payrrn String (n‐12) o Референсный номер платежа
uniQrId String (an‐32) y Идентификатор Кассового УПК
paramsId String (an‐32) y Идентификатор параметров Кассового У
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an‐20) y Код ответа*
message String (ans‐1024) y Расшифровка кода ответа**
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если ErrorCode = 0
uniQrId String (an‐32) o Идентификатор Кассового УПК
payrrn String (n‐12) o Референсный номер платежа
trxId String (an‐32) o Уникальный идентификатор платежа в НСПК. Идентификатор Операции СБП будет заполнен то
• paymentServiceId = «PS0000000001»
• status = «ACWP» или «RJCT»
trxDT String (n‐14) o Дата и время платежа в AnyWay (ГГГГММДДччммсс)
paymentServiceId String (12) o Идентификатор Платёжного сервиса, с использованием которого был выполнен Перевод УПК
• «PS0000000001» — платёж через СБП
• «PS0000000002» — платёж с использованием ЦР
Будет отсутствовать в ответе при значении параметра status = «NTST» и будет заполнен при лю
BatchId String (n‐1…8) o Уникальный идентификатор смены (если смена терминала была открыта), метод получения см. ан
CreditDatePos String (ans 1‐256) o Дата операции, установленная Банком Получателя в ходе обработки уведомления НСПК (определ
merchantId String (an‐20) o Id магазина в НСПК
TermNo String (an‐20) y Уникальный идентификатор терминала
amount Number o Сумма платежа в минорных единицах (копейках)
currency String (ans‐3) o Код валюты (для рублей должен передаваться «RUB»)
Url String (ans 1‐512) o Полный URL для получения уведомления ТСП (значение параметра, переданного при регистрации
cashRegisterQrcStatus String y Текущий статус Кассовой ссылки СБП для указанного paramsId:
• «WAITING_PAYMENT» — Кассовая ссылка СБП для указанного paramsId активирована и готов
{
"command": "GetCashUniQrStatus",
"TermNo": "90080567",
"messageID": " f9aa54ff-a615-44b8-aa6c-acab655c89f8",
"payrrn": "000000000256",
"uniQrId": "AS1R0006QD93NUCF9MIPLLLDD7BF49CI",
"paramsId": "BP10001NAJ5S985L9DM9GO6PK4H6KN3M"
}
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 8/13
Код ключа Тип данных required Назначение
• «IN_PROGRESS» — Операция по Кассовой ссылке СБП для указанного paramsId в процессе вы
• «DEACTIVATED» — Кассовая ссылка СБП с указанным paramsId более не существует (все дейс
paramsId String‐32 y Идентификатор активного набора параметров
kzo String (1…128) o Контрольное значение Операции СБП будет заполнено только при соблюдении следующих ус
• paymentServiceId = PS0000000001»
• status = «ACWP»
status String (4) o Статус Перевода УПК. Допустимые значения:
1. «NTST» — Перевод УПК не начат
2. «RCVD» — Перевод УПК в процессе обработки
3. «ENDD» — Перевод УПК завершён (только для оплаты ЦР)
4. «ACWP» — Перевод УПК выполнен успешно (только для оплаты через СБП)
5. «RJCT» — Перевод УПК отклонён (только для оплаты через СБП)
6. «ACDR» — Перевод в ЦР выполнен успешно (аналог «ACWP»), если указан в настройке ACW
timestamp UTC time format o Дата и время выполнения Операции СБП. Параметр будет заполнен только при соблюдении следу
• paymentServiceId = «PS0000000001»
• status = «ACWP» или «RJCT»
*, ** Таблица возможных кодов ответа приведена в приложении 2.
• «status» = «NTST», «RCVD» или «ACTC» — означает необходимость повтора запроса до получения одного из финальных статусов
• Получение «status» = «RJCT» означает отказ в оплате данного QR-кода
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
1 {
2 "ErrorCode": "0",
3 "message": "Запрос выполнен",
4 "TermNo": "90080567",
5 "messageID": " f9aa54ff-a615-44b8-aa6c-acab655c89f8",
6 "uniQrId": "AS1R0006QD93NUCF9MIPLLLDD7BF49CI",
7 "paramsId": "BP10001NAJ5S985L9DM9GO6PK4H6KN3M",
8 "trxStatus": "ACWP",
9 "payrrn": "000000000256",
10 "timestamp": "2025-06-24T11:53:09.000Z",
11 "cashRegisterQrcStatus": "DEACTIVATED",
12 "trxId": "B5175115309809010000120011530503",
13 "trxDT": "20250624115309",
14 "amount": "100",
15 "currency": "RUB",
16 "Url": " https://sbp-payments",
17 "CreditDatePos": "20250624",
18 "payerId": "*********5744",
19 "kzo": "45dfe048b805b1f7612a51b961ee61e5df008314a1a3c82892a085cacff18500e8c7f09170c10415fd26710a4a
20 "merchantId": "MA0000018412",
21 "paymentServiceId": "PS0000000001"
22 }
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 9/13
2.3. Изменение параметров кассового УПК (универсального многоразового платёжного кода)
Запрос «ChangeAccForCashUniQr» направляется ТСП в Банк для выполнения запроса УПК API «Изменение параметров Многоразово
отдельных параметров Многоразового или Кассового УПК, заданных при регистрации УПК.
Для Многоразового или Кассового УПК могут быть изменены:
• Уникальный идентификатор терминала (параметр TermNo)
• Получатель денежных средств в Переводе УПК или ТСП получателя (параметр merchantId). Новое значение merchantId может прин
принадлежало прежнее значение merchantId, так и другому ЮЛ, ИП или Самозанятому, зарегистрированному в НСПК
• Ссылка для автоматического возврата Покупателя из приложения Банка в приложение или на сайт ТСП (параметр redirectUrl)
• Набор Платёжных сервисов, с использованием которых может быть выполнен Перевод УПК по данному Многоразовому/Кассовом
в Переводе УПК, выполненном с использованием того или иного Платёжного сервиса, например, Счет ТСП в Банке ТСП, на которы
выполнения Операции СБП C2B (параметры Account и AccountDR)
В ответе ПШ Банка возвращает результат обработки запроса и, в случае успешной обработки — значения параметров, полученных в 
Метод ChangeAccForCashUniQr
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1…50) y Тип запроса. Константа «ChangeAccForCashUniQr»
TermNo String (an‐20) y Уникальный идентификатор терминала
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID
qrcId String (32) o Идентификатор Кассового УПК
account String (an‐20) o Новый счёт ЮЛ для УПК:
если заполнено — будет изменён счёт для оплаты через СБП в УПК
если не заполнено — значение берётся из поля Account справочника терминалов
accountDR String (55) o Новый счёт ЮЛ для ЦР:
если заполнено — будет изменён счёт для оплаты ЦР в УПК
если не заполнено — значение берётся из поля AccountDR справочника терминалов
NewTermNo String (an‐20) o Новый уникальный идентификатор терминала.
Поле обязательно, если НЕ переданы account, accountDR, NewMerchantId, redirectUrl
NewMerchantId String (an‐12) o Новый Id мерчанта (магазина) в НСПК.
Поле обязательно, если НЕ переданы account, accountDR, NewTermNo, redirectUrl
redirectUrl String (ans‐1024) o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП.
Допускаются только символы в кодировке ASCII. Формат должен соответствовать правилам кодировки U
Если требуется использовать в redirectUrl кириллические символы, необходимо перекодировать их в соот
paymentPageUrl String (ans‐1024) o Ссылка для перенаправления Покупателя на Платёжную страницу Участника Сервиса УПК
fraudScore String o Индикатор Подозрительной Операции Банка ТСП
b) Примерный формат запроса:
{
"ErrorCode": "Код ответа",
"message": "Расшифровка кода ответа"
}
1 {
2 "command": "ChangeAccForCashUniQr",
3 "TermNo": "90080567",
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 10/13
https://wiki.finstream.ru/pages/viewpage.action?pageId=79692419#id-%D0%A8%D0%BB%D1%8E%D0%B7FastPayAgent%D0%B4%D0%BB%D1%8F%D0%B7%D0%B0%D1%8F%D0%B2%D0%BE%D0%BA%D0%A2%D0%A1%D0%9F-%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D1%8B
https://wiki.finstream.ru/pages/viewpage.action?pageId=79692419#id-%D0%A8%D0%BB%D1%8E%D0%B7FastPayAgent%D0%B4%D0%BB%D1%8F%D0%B7%D0%B0%D1%8F%D0%B2%D0%BE%D0%BA%D0%A2%D0%A1%D0%9F-%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D1%8B
Правила заполнения и интерпретации параметров:
• В запросе должен быть заполнен хотя бы один из параметров: account, accountDR, NewTermNo, NewMerchantId, redirectUrl. Если ни 
ErrorCode = «90» и message = «Не указан ни один из обязательных параметров»
• account — будет выполнено изменение счёта ЮЛ, ИП или самозанятого для расчётов через СБП зарегистрированного УПК. Если зн
из справочника терминалов
• accountDR — будет выполнено изменение/добавление счета ЮЛ, ИП или самозанятого для расчётов ЦР зарегистрированного УПК.
берётся из справочника терминалов/ЮЛ
• Если параметр accountDR был передан в запросе, но длина его значения отличается от 55 — будет возвращена ошибка c ErrorCode
Параметр accountDR должен содержать 55 символов»
• NewTermNo — будет выполнено изменение номера терминала для зарегистрированной Кассовой ссылки СБП. Новый номер терми
или ТСТ указанного NewMerchantId запроса
• NewMerchantId — будет выполнено изменение ТСТ для зарегистрированной Кассовой ссылки СБП. Если поле NewTermNo в запросе
перепривязка существующего TermNo к новому NewMerchantId
• redirectUrl — будет выполнено изменение ссылки автоматического возврата в приложение или на сайт ТСП для зарегистрированно
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an‐20) y Код ответа*
message String (ans‐1024) y Расшифровка кода ответа**
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если ErrorCode = 0
qrcId String (an‐32) o Идентификатор QR-кода
TermNo String (an‐20) y Уникальный идентификатор терминала
account String (an‐20) y/o Cчёт для оплаты через СБП.
В ответе должен присутствовать один из параметров account или accountDR, либо о
accountDR String (55) y/o Cчёт для оплаты ЦР.
В ответе должен присутствовать один из параметров account или accountDR, либо о
merchantId String (an‐12) y Id мерчанта (магазина) в НСПК
status String (an‐20) o Статус регистрации Платёжной или Информационной ссылки СБП («CREATED» —
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 ОК
4 "messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8",
5 "qrcId": "BS200031LP9DVTOR80O83FQ2ILIADFLM",
6 "account": "40201810100000088000",
7 "accountDR": "g.ab.cbrdc.wlt.clt.abcd0123-ab12-4a12-89ab-abcdef01234G",
8 "redirectUrl": "https://alfabank.ru/sme/payservice/sbp/",
9 "paymentPageUrl": " https://alfabank.ru/sme/payservice/sbp/",
10 "fraudScore": "0000000000000000",
11 "NewTermNo": "10000234",
12 "NewMerchantId": "MA0000020651"
13 }
1 {
2 "ErrorCode": "0",
3 "message": "OK",
4 "TermNo": "10000234",
5 "messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8",
6 "qrcId": "BS200031LP9DVTOR80O83FQ2ILIADFLM",
7 "account": "40201810100000088000",
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 11/13
• 400 Bad Request
3. Нотификация Клиента-получателя об исполнении перевода ЦР С2B
Сообщение отправляется из ПШ Банка на сервер ТСП и содержит Извещение Клиента-получателя об исполнении перевода ЦР (С2B)
Метод paymentDR/notification
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an‐1…50) o Константа «paymentDR/notification»
uniQrId String (an‐32) o Идентификатор платежа в системе ЮЛ‐получателя
operationId String o Идентификатор операции на ПлЦР (значение из тега ЭС <MsgHdr/OprId>)
status String (an‐20) o Статус платежа на ПлЦР
• если заполнено значение настройки ACWPstatusDR, то передаётся значение, указанное
• «RCVD» — Перевод УПК в процессе обработки
amount String (an‐1…12) o Сумма платежа в рублях с копейками
timestamp YYYY-MM-DDThh:mm:ss[.SSS] o Дата и время исполнения распоряжения на ПлЦР
payrrn String (n‐12) y Референсный номер платежа
BatchId String (n‐4…8) y Уникальный идентификатор смены (если смена терминала открыта)
TermNo String (an‐20) y Уникальный идентификатор терминала в AWGW
CreditDatePos String (ans 1‐256) y Дата операции, установленная Банком Получателя в ходе обработки уведомления НСПК (опре
merchantName ? y Наименование ТСП
purpose String (ans‐210 y Назначение платежа
b) Примерный формат запроса:
8 "accountDR": "g.ab.cbrdc.wlt.clt.abcd0123-ab12-4a12-89ab-abcdef01234G",
9 "status": "UPDATED",
10 "merchantId": "MA0000020651"
11 }
{
"ErrorCode": "Код ответа",
"message": "Расшифровка кода ответа"
}
1 {
2 "command": "paymentDR/notification",
3 "uniQrId": "AD2000670LSS7DN18SJQDNP4B05KLJL1",
4 "operationId": "546464AX45546",
5 "status": "ACWP",
6 "amount": "10241.21",
7 "timestamp": "2024-08-01T10:15:00.000Z",
8 "payrrn": "102345678912",
9 "BatchId": "998844",
10 "TermNo": "90080567",
11 "CreditDatePos": "20240802",
12 "merchantName": "Рога и Копыта",
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 12/13
В ответ ожидается:
• http-код «200» — Успешный ответ (Уведомление получено)
• http-код «500» — Внутренняя ошибка
13 "purpose": "Кофе и булочка"
14 }
12/23/25, 11:24 AM Цифровой рубль
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 13/13
]]>
</_7_digital_rubble_md>
<_8_additional_methods_API_md>
<![CDATA[
Дополнительные методы API
Дополнительные методы API
1. Запрос списка банков-участников СБП
Запрос GetBankList направляется ТСП на ПШ Альфа-Банка для получения списка банков-участников СБП.
Метод GetBankList
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1..50) y Тип запроса. Константа «GetBankList»
messageID String (ans-1…
1024)
o Уникальный идентификатор сообщения, GUID
BankMemberIdFilter String (n-11) o Фильтр для результатов запроса (указывается идентификатор участника СБП, добавляется в запрос если в
ответе нужно получить данные только по одному банку)
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*
message String (ans-1024) y Расшифровка кода ответа**
BankList Массив o Коллекция, содержащая список банков-участников
BankList.BankName String (an-50) o Наименование банка-участника
BankList.BankID String (an-12) o Идентификатор участника СБП в НСПК
BankList.BankBIK String (n-9) o БИК банка-участника СБП. (Присутствует в ответе если был передан из НСПК в данных участника СБП)
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
{
"command": "GetBankList"
}
1 {
2 "ErrorCode": 0,
3 "message":"Запрос обработан успешно",
4 "BankList":
5 [ {
6 "BankName":"Наименование банка 1",
7 "BankID":"10000001100",
8 "BankBIK":"044525823"
9 },
10 …
11 {
12 "BankName":" Наименование банка N",
13 "BankID":"10000001145",
12/23/25, 11:25 AM Дополнительные методы API
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 1/5
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1
2. Запрос блокирования QR-кода
Запрос направляется в ПШ банка в целях блокирования сгенерированного QR-кода. Запрос действует для любого вида сгенерирова
QR-кода.
Метод BlockQRcId
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1..50) y Тип запроса. Константа «BlockQRcId»
TermNo String (an-20) y Уникальный идентификатор терминала
qrcId String (an-32) y Идентификатор QR-кода
reason String (ans-1024) o Причина блокировки
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*
TermNo String (an-20) y Уникальный идентификатор терминала
message String (ans-1024) y Расшифровка кода ответа**
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
14 "BankBIK":"044525829"
15 }
16 ]
17 }
{
"command": "BlockQRcId",
"TermNo": "90080567",
"qrcId": "BS1R003FN6RS6HL48QMBFVO5C4K9GQRV",
"reason": "Заказ 12345 направлен в стоп-лист"
}
{
"ErrorCode": 0,
"TermNo": 90080567,
"message": "OK"
}
{
"ErrorCode": "Код ответа",
12/23/25, 11:25 AM Дополнительные методы API
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 2/5
3. Запрос разблокирования QR-кода
Запрос направляется в ПШ банка в целях разблокирования ранее заблокированного QR-кода.
Метод UnblockQRcId
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1..50) y Тип запроса. Константа «UnblockQRcId»
TermNo String (an-20) y Уникальный идентификатор терминала
qrcId String (an-32) y Идентификатор QR-кода
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*
TermNo String (an-20) y Уникальный идентификатор терминала
message String (ans-1024) y Расшифровка кода ответа**
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
4. Запрос списка заблокированных QR-кодов
Запрос направляется в ПШ банка для получения списка заблокированных QR-кодов по определенному терминалу или кассе.
"message": "Расшифровка кода ответа"
}
{
"command": "UnblockQRcId",
"TermNo": "90080567",
"qrcId": "BS1R003FN6RS6HL48QMBFVO5C4K9GQRV"
}
{
"ErrorCode": 0,
"TermNo": 90080567,
"message": "OK"
}
{
"ErrorCode":"Код ответа",
"message": "Расшифровка кода ответа"
}
12/23/25, 11:25 AM Дополнительные методы API
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 3/5
Метод GetBlockedQRcIdList
a) Описание параметров запроса:
Код ключа Тип данных required Назначение
command String (an-1..50) y Тип запроса. Константа «GetBlockedQRcIdList»
TermNo String (an-20) y Уникальный идентификатор терминала
b) Примерный формат запроса:
c) Описание параметров ответа:
Код ключа Тип данных required Назначение
ErrorCode String (an-20) y Код ответа*
message String (ans-1024) y Расшифровка кода ответа**
QRcIdList Коллекция Список QRcId
QRcIdList.qrcId String (an-32) y Идентификатор QR-кода
QRcIdList.reason String (ans-1024) o Причина блокировки
QRcIdList.date String (an-20) y Дата и время
*, ** Таблица возможных кодов ответа приведена в приложении 2.
d) Примерный формат ответа:
• 200 OK
• 400 Bad Request
{
"command": "GetBlockedQRcIdList",
"TermNo": "90080567",
}
1 {
2 "ErrorCode": 0,
3 "QRcIdList":
4 [
5 {
6 "date": "2024-04-18 17:17:45",
7 "qrcId": "BD100000K5II0G369JHR3KBA6SM3FD3V",
8 "reason": "Заказ 12345 направлен в стоп-лист"
9 },
10 {
11 "date": "2024-05-01 19:07:15",
12 "qrcId": "BD100002JN871TSC9SJB7HPVRFD3HQ8T",
13 "reason": "Заказ 96780 направлен в стоп-лист"
14 }
15 ],
16 "TermNo": "90080567",
17 "message": "OK"
18 }
{
"ErrorCode":"Код ответа",
12/23/25, 11:25 AM Дополнительные методы API
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 4/5
"message": "Расшифровка кода ответа"
}
12/23/25, 11:25 AM Дополнительные методы API
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 5/5
]]>
</_8_additional_methods_API_md>
<_9_appendix_md>
<![CDATA[
Приложения
Приложения
Приложение 1. Формат payload
В СБП используется формат двухмерного кода QR Code (ISO/IEC 18 004--2015).
Payload QR-кода может быть представлен в двух вариантах:
1. Короткий вариант Payload: https://HOST/QR_ID
2. Длинный вариант Payload: https://HOST/QR_ID?type=QR_TYPE&bank=MEMBER_ID&sum=SUM&cur=CUR&crc=CRC
Описание параметров URL-based payload:
Параметр Описание required Формат
HOST qr.nspk.ru — для QR_TYPE = 01 и 02
sub.nspk.ru — для QR_TYPE = 03
y String
QR_ID Идентификатор зарегистрированного QR кода в СБП y String 32 символа
QR_TYPE Тип QR кода:
01 — QR Static (QR наклейка);
02 — QR Dynamic (QR на кассе);
03 — QR-Subscription (Оформление привязки счета).
y String 2 цифры
MEMBER_ID Идентификатор Банка Получателя (ТСП) (Member_ID) y String 12 символов
SUM Сумма в копейках y (если QR_TYPE = 02);
Отсутствует, если QR_TYPE = 03
String до 12 цифр
CUR Валюта операции y (если присутствует SUM) String 3 символа
CRC Значение контрольной суммы y String 4 символа
Приложение 2. Описание кодов ответа
Полный перечень кодов представлен на сайте НСПК. Данная спецификация не описывает всего перечня кодов ответов т. к. в случае
исключительных ситуаций системой возможна генерация собственных кодов. Не описанные в документе коды следует обрабатыват
техническую (системную) ошибку.
ErrorCode message
«-999» Прочее сообщение FSCryptoProxy
«-71» Неверные данные Basic авторизации запроса. Не прошла проверка авторизации запроса от fsCryptoProxy → GW
«-9» Система перегружена. Повторите запрос через несколько секунд. Очередь: %1
«-8» Запрос отклонен. '%1' превышено ограничение на размер очереди. Ограничение: %2 Очередь: %3
«-7» Неверная подпись сообщения. Не прошла проверка связки запроса от fsCryptoProxy → GW, закрытый ключ, указанный в настройках fsCryptoProxy
(proxyAlias) не соответствует открытому ключу, указанному в GW, продукции у БС в настройке PublicKeyFile
12/23/25, 11:25 AM Приложения
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 1/8
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1
https://host/QR_ID
https://host/QR_ID?type=QR_TYPE&bank=MEMBER_ID&sum=SUM&cur=CUR&crc=CRC
ErrorCode message
«-6» Не передана подпись сообщения в параметре Authorization заголовка
«-5» Тип запроса %1 не поддерживается
«-4» При получении данных возникли проблемы: %1
«-3» При создании потока JSON не образовался потоковый объект
«-2» Возникли проблемы при преобразовании объекта в JSON %1
«-1» Возникли проблемы при обработке запроса %1
«0» «OK»
«1» Внутренняя ошибка %1
«2» Терминал %1 не обнаружен
«3» Не заполнены данные запроса %1
«301» Некорректно заполнены данные запроса %1
«4» Не передан qrcId или payrrn
«5» Не получены данные от СПБ
«8» Таймаут ответа, попробуйте позже
«9» Ошибка идентификации, попробуйте позже
«10» Не передан реквизит command
«11» Данная команда не поддерживается
«12» «Не найдены данные для возврата»
«13» Не найден успешный ответ на вызов GetQRCreversalData по причине: %1
«14» Повторное открытие смены невозможно. Смена уже открыта.
«15» Закрытие смены невозможно. Смена не открыта
«16» Не передан TermNo
«17» Не удалось найти QR по payrrn
«18» Платеж не найден в запросах B07%1
«19» Платеж не найден в запросах B08%1
«20» Получен отказ на запрос возврата. Статус %1%2%3
«21» Не удалось получить получателя перевода
«22» payrrn=%1 в запросе не соответствует данным qrcId=%2 у которого payrrn=%3
«23» Возврат невозможен для указанных параметров. Для payrrn=%1 соответствует trxId=%2, а в запросе получен %3
«24» Возврат невозможен для указанных параметров. Для qrcId=%1 соответствует trxId=%2, а в запросе получен %3
«25» «Терминал %1 заблокирован
«26» «Ошибка идентификации»
«27» «Невозможно выполнить возврат по данному Терминалу, т. к. счет зачисления не равен счету списания»
«28» Запрос QR-кода не удался, не был получен Идентификатор QR-кода
12/23/25, 11:25 AM Приложения
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 2/8
ErrorCode message
«29» Возврат невозможен. Для qrcId=%1 не удалось найти успешный ответ на запрос GetQRCstatus
«30» Отсутствуют данные в переданных параметрах
«31» Не удалось определить параметры: legalid или Для legalid не удалось найти данные в спр. счетов или в спр. клиентов
«32» Отсутствуют данные получателя
«33» Отсутствуют данные отправителя
«34» Значения параметров запроса не совпадают с данными предыдущего шага
«35» Не заполнен обязательный параметр REF
«40» Возврат невозможен. Для payrrn=%1 не удалось найти успешный ответ на запрос GetQRCstatus
«41» При активации кассовой ссылки, не удалось получить paramsId
«42» Счет %1 не зарегистрирован у клиента. Изменение невозможно.
«43» Данные об оплате еще не известны. По qrcId не получено уведомление (Notification) от НСПК
«44» Кассовая ссылка зарегистрирована на устройстве #'%1' и может быть использована только на этом устройстве.
«45» Общая Ошибка поиска архивной операции C2B
«46» Ошибка поиска архивной операции C2B, по причине: %1
«47» Для выяснения статуса возврата необходимо передать один из параметров запроса: messageID, trxId или opkcRefundRequestId
«48» Возврат с messageID '%1' на устройстве #'%2' не обнаружен
«49» По возврату с messageID '%1' не обнаружен Идентификатор Операции СБП B2C по сценарию Возврат по Операции СБП C2B
«50» Идентификаторы Операции СБП B2C по сценарию Возврат по Операции СБП C2B переданный в запросе '%1' отличается от данных возврата '%2'
полученного по messageID '%3'
«51» Возврат по Идентификаторы Операции СБП B2C '%1' не обнаружен
«52» Если передан реквизит opkcRefundRequestId запроса, то для выяснения статуса возврата необходимо также передать один из параметров запроса pa
или originalTrxId
«53» По данным payrrn '%1' не удалось определить Идентификатор исходной Операции СБП C2B
«54» Не передан параметр LegalId
«55» Не передан параметр quantity
«67» ТСП '%1' не обнаружено с справочнике системы
«68» Выплата по ТСП '%1' для устройства '%2' — запрещена
«101» Тип запроса command='%1' не поддерживается
«121» Возврат не может быть осуществлен, т. к. операция оплаты не имеет финального статуса
«201» Получен отказ на запрос возврата. «Статус %1, Недостаточно средств на счете»
«1001» «Сервис временно недоступен»
«RQ00000» Запрос обработан успешно.
«RQ00030» Согласие на выполнение платежа.
«RQ00031» Ожидание решения по возврату от Банка Плательщика.
«RQ02034» Некорректное значение code.
12/23/25, 11:25 AM Приложения
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 3/8
ErrorCode message
«RQ03001» Ошибка валидации. Неверный формат запроса.
«RQ05001» Значение agentId отсутствует в ОПКЦ СБП (Агент с указанным идентификатором не найден).
«RQ05002» Значение memberId отсутствует в ОПКЦ СБП (участник с указанным идентификатором не найден).
«RQ05003» Значение LegalId отсутствует в ОПКЦ СБП (юридическое лицо с указанным идентификатором не найдено).
«RQ05004» Счет юридического лица не найден.
«RQ05005» Значение merchantId отсутствует в ОПКЦ СБП (ТСП с указанным идентификатором не зарегистрировано в СБП).
«RQ05006» Некорректное значение currency (код валюты).
«RQ05007» Неверная версия шаблона Платежной или Информационной ссылки СБП (неверная версия шаблона QRC).
«RQ05008» Неверный тип Платежной или Информационной ссылки СБП (неверный тип QRC).
«RQ05009» Значение amount меньше минимально допустимого
«RQ05010» Значение amount больше максимально допустимого
«RQ05011» amount и currency должны одновременно присутствовать или одновременно отсутствовать при qrcType = 01 (QR-Static)
«RQ05012» Отсутствует currency при qrcType = 02 (QR-Dynamic)
«RQ05013» Отсутствует amount при qrcType = 02 (QR-Dynamic)
«RQ05014» Значение qrcId не найдено
«RQ05015» Превышено допустимое значение элементов в запросе
«RQ05016» Некорректный формат qrcId
«RQ05017» Некорректный формат или отсутствует paymentPurpose
«RQ05018» Некорректный формат subscriptionPurpose
«RQ05019» Отсутствует amount при активации Кассовой ссылки СБП
«RQ05020» Период использования динамической Платежной ссылки СБП в поле qrTtl выходит за допустимый диапазон
«RQ05021» Некорректный формат subscriptionToken
«RQ05022» Невозможно деактивировать Кассовую ссылку СБП
«RQ05023» qrTtl для Кассовой ссылки СБП выходит за допустимый диапазон
«RQ05024» Некорректный формат redirectUrl
«RQ05025» Отказ в смене счета ЮЛ, ИП или самозанятого. Кассовая ссылка СБП не деактивирована
«RQ05026» Кассовая ссылка с указанным идентификатором уже существует
«RQ05030» Отказ Банка Плательщика. Плательщик отказался от привязки счета
«RQ05031» Отказ Банка Плательщика. Привязка счета не найдена
«RQ05032» Отказ Банка Плательщика в выполнении платежа
«RQ05033» Отказ в повторном платеже
«RQ05034» Сценарий не поддерживается Банком Плательщика
«RQ05035» Истекло время ожидания решения Банка Плательщика
«RQ05036» Дублирование идентификатора запроса, назначаемого ТСП или Агентом ТСП, — agentRefundRequestId
12/23/25, 11:25 AM Приложения
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 4/8
ErrorCode message
«RQ05037» Предыдущий запрос на возврат по Операции СБП C2B еще не обработан
«RQ05038» Параметры запроса отличаются от параметров исходной Операции СБП C2B
«RQ05039» Не найдена исходная Операция СБП C2B
«RQ05040» Отказ от Банка Плательщика. Сумма возврата превышает сумму исходной Операции СБП C2B
«RQ05041» Запрос на возврат по операции C2B не найден
«RQ05042» Некорректный формат или отсутствует amount
«RQ05043» Некорректный формат или отсутствует takeTax
«RQ05044» Некорректный формат или отсутствует totalTaxAmount
«RQ05045» Некорректный формат uip
«RQ05046» Неверный тип платежной ссылки
«RQ05047» Запрос на возврат с указанным идентификатором не найден
«RQ05050» Сценарии с привязкой счета для ЮЛ/ИП недоступны
«RQ05051» Решение выполнения оплаты с привязанного счета от Банка Плательщика еще не получено
«RQ05052» Распоряжение от Банка Плательщика не было получено в ожидаемое время
«RQ05053» От Банка Плательщика было получено положительное решение об оплате с привязанного счета Плательщика
«RQ07999» Техническая ошибка
Ошибки по методу GetQRCd
Код Описание
-1 Возникли проблемы при обработке запроса: <...>
1 Внутренняя ошибка <...>
3 Не заполнены данные: <...>
8 Таймаут ответа, попробуйте позже
26 Ошибка идентификации
28 Запрос QR-кода не удался, не был получен Идентификатор QR-кода
301 Некорректно заполнены данные данные: <...>
100 Ошибка во время выполнения SQL-запроса для поиска AccountDR для TermNo=<TermNo>
101 Ошибка во время выполнения SQL-запроса для проверки isUniQR для QrcId = <QrcId>
999* Неизвестная ошибка. Необходимо уточнить статус операции
Ошибки по методу GetQRCstatus
Код Описание
-1 Возникли проблемы при обработке запроса: <...>
1 Внутренняя ошибка <...>
12/23/25, 11:25 AM Приложения
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 5/8
Код Описание
2 Терминал <номер терминала> не обнаружен
4 Не передан qrcId или payrrn
5 Не получены данные от СПБ
8 Таймаут ответа, попробуйте позже
9 Ошибка идентификации, попробуйте позже
16 Не передан параметр TermNo
18 Платеж не найден в запросах B07,B23 <...>
25 Терминал <номер терминала> заблокирован
999* Неизвестная ошибка. Необходимо уточнить статус операции.
Ошибки по методу GetQRCreversalData
Код Описание
-1 Возникли проблемы при обработке запроса: <текст с более подробным описанием ошибки>
1 Внутренняя ошибка <текст с более подробным описанием ошибки>
2 Терминал <номер терминала> не обнаружен
3 Не заполнены данные: <текст с более подробным описанием ошибки>
8 Таймаут ответа, попробуйте позже
12 Не найдены данные для возврата
16 Не передан параметр TermNo
20 Получен отказ на запрос возврата. Статус <статус и при наличии код с текстом ошибки>
21 Не удалось получить получателя перевода
22 payrrn=<значение payrrn> в запросе не соответствует данным qrcId=<значение qrcId> у которого payrrn=<значение payrrn>
23 Возврат невозможен для указанных параметров. Для payrrn=<значение payrrn> соответствует trxId=<значение trxId>, а в запросе получен <значение trxId>
24 Возврат невозможен для указанных параметров. Для qrcId=<значение qrcId> соответствует trxId=<значение trxId>, а в запросе получен <значение trxId>
25 Терминал <номер терминала> заблокирован
27 Невозможно выполнить возврат по данному Терминалу, т.к. счёт зачисления не равен счёту списания
29 Возврат невозможен. Для qrcId=<значение qrcId> не удалось найти успешный ответ на запрос GetQRCstatus
40 Возврат невозможен. Для payrrn=<значение payrrn> не удалось найти успешный ответ на запрос GetQRCstatus
1001 Превышено количество повторных запросов возврата B2C
Ошибки по методу QRCreversal
Код Описание
-1 Возникли проблемы при обработке запроса: <текст с более подробным описанием ошибки>
1 Внутренняя ошибка <текст с более подробным описанием ошибки>
12/23/25, 11:25 AM Приложения
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 6/8
Код Описание
2 Терминал <номер терминала> не обнаружен
3 Не заполнены данные: <текст с более подробным описанием ошибки>
8 Таймаут ответа, попробуйте позже
12 Не найдены данные для возврата
13 Не найден успешный ответ на вызов GetQRCreversalData
16 Не передан параметр TermNo
20 Получен отказ на запрос возврата. Статус <статус и при наличии код с текстом ошибки>
21 Не удалось получить получателя перевода
22 payrrn=<значение payrrn> в запросе не соответствует данным qrcId=<значение qrcId> у которого payrrn=<значение payrrn>
23 Возврат невозможен для указанных параметров. Для payrrn=<значение payrrn> соответствует trxId=<значение trxId>, а в запросе получен <значение trxId>
24 Возврат невозможен для указанных параметров. Для qrcId=<значение qrcId> соответствует trxId=<значение trxId>, а в запросе получен <значение trxId>
25 Терминал <номер терминала> заблокирован
27 Невозможно выполнить возврат по данному Терминалу, т.к. счёт зачисления не равен счёту списания
40 Возврат невозможен. Для payrrn=<значение payrrn> не удалось найти успешный ответ на запрос GetQRCstatus
201 Получен отказ на запрос возврата. Статус <статус>, недостаточно средств на счёте
999* Неизвестная ошибка. Необходимо уточнить статус операции
Ошибки по методу ActivateCashQRc
Код Описание
-1 Возникли проблемы при обработке запроса: <текст с более подробным описанием ошибки>
1 Внутренняя ошибка <...>
2 Терминал <номер терминала> не обнаружен
3 Не заполнены данные: <...>
8 Таймаут ответа, попробуйте позже
16 Не передан параметр TermNo
25 Терминал <номер терминала> заблокирован
28 Запрос QR-кода не удался, не был получен Идентификатор QR-кода
41 При активации кассовой ссылки не удалось получить paramsId
44 Кассовая ссылка зарегистрирована на устройстве #'<номер терминала>' и может быть использована только на этом устройстве
301 Некорректно заполнены данные данные: <...>
999* Неизвестная ошибка. Необходимо уточнить статус операции
Коды ответов, направляемые в callback-уведомлении по сценарию «Оплата с привязанного счёта» по методу «resolution
/notification»
12/23/25, 11:25 AM Приложения
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 7/8
ErrorCode message
«RQ05031» Отказ Банка Плательщика. Привязка счёта не найдена
«RQ05032» Отказ Банка Плательщика в проведении платежа
«RQ05060» Недостаточно денежных средств для проведения операции
«RQ05061» Превышен лимит по сумме операций по СБП
«RQ05062» Превышен лимит по количеству операций по СБП
«RQ05063» Подозрение в мошенничестве
«RQ05064» Выполнение операций в данной категории ТСП запрещено
«RQ05065» Счёт заблокирован
«RQ05066» Счёт закрыт
«RQ05067» Выполнение операции запрещено по требованию законодательства
Примечание: Применение кода ответа «RQ05032» допускается не более, чем в 20% от общего числа отказов со стороны Банка
Плательщика при выполнении Сценария «Оплата с привязанного счёта».
Приложение 3. Пояснение для колонки «required»
«y» — «Yes» обязательное;
«o» — «Optional» (опционально);
«y/o» — «Условно обязательное» определяется условиями запроса.
Приложение 4. Пояснение для колонки «Тип данных»
Нотация Описание
a Символы латинского алфавита (A–Z и a–z) с десятичными кодами из диапазонов [065-090] и [097-122] в кодировке UTF-8;
Символы русского алфавита (А-Я и а-я) с десятичными кодами из диапазона [1040-1103] в кодировке UTF-8.
n Цифры 0-9 с десятичными кодами из диапазона [048-057] в кодировке UTF-8.
an Символы латинского алфавита (A–Z и a–z) с десятичными кодами из диапазонов [065-090] и [097-122] в кодировке UTF-8;
Символы русского алфавита (А-Я и а-я) с десятичными кодами из диапазона [1040-1103] в кодировке UTF-8;
Цифры 0-9 с десятичными кодами из диапазона [048-057] в кодировке UTF-8.
ans Символы латинского алфавита (A–Z и a–z) с десятичными кодами из диапазонов [065-090] и [097-122] в кодировке UTF-8;
Символы русского алфавита (А-Я и а-я) с десятичными кодами из диапазона [1040-1103] в кодировке UTF-8;
Цифры 0-9 с десятичными кодами из диапазона [048-057] в кодировке UTF-8;
Специальные символы с десятичными кодами из диапазонов [032-047], [058-064], [091-096], [123-126] в кодировке UTF-8;
Символ «№» под номером 8470 в кодировке UTF-8.
12/23/25, 11:25 AM Приложения
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 8/8
]]>
</_9_appendix_md>
</qr_payout>