Download OpenAPI specification:Download
Свои предложения и идеи о документации можно оставить в репозитории по адресу: https://github.com/Raiffeisen-DGTL/ecom-API/blob/master/sbp.yaml
Для приема СБП-платежей оставьте заявку на сайте.
Райффайзенбанк выполнит регистрацию. После завершения процесса вы будете оповещены по электронной почте.
По закону от 22.05.2003 № 54–ФЗ "О применении контрольно-кассовой техники при осуществлении расчетов в Российской Федерации" при оплате товаров, работ или услуг необходимо формировать фискальный чек и отправлять его в налоговую с помощью кассы.
Райффайзенбанк предоставляет возможность фискализировать чеки через API банка.
Bзаимодействие осуществляется по протоколу HTTP с использованием методов POST GET PUT DELETE.
API всегда возвращает ответ в формате JSON, независимо от типа запроса.
Запросы, связанные с получением данных по платежу и управлением платежами, авторизуются посредством секретного ключа API secretKey. Параметр авторизации указывается в заголовке Authorization, значение которого формируется как Bearer secretKey.
Для получения тестовых данных для интеграции необходимо заполнить анкету на pay.raif.ru.
Посмотреть боевой publicId и сгенерировать secretKey можно в Онлайн Банке, либо Личном Кабинете.
Инстуркции по формированию secretKey можно посмотреть в Справочном Центре:
Секретный ключ необходимо хранить в доверенной среде, так как по нему возможно проведение возвратов.
Мы рекомендуем создавать одного мерчанта на ЮЛ и, соответственно, все его торговые точки. Это избавит от необходимости:
Кассовая ссылка или QRVariable - вид QR-кода, который отлично подойдет для приема платежей в торговой точке. Такой QR-код выпускается единожды для каждой кассы, а затем каждый раз активируется для приема платежа.
Для приема платежей с использованием кассовой ссылки отлично подойдут Платежные таблички Банка, либо же переносное устройство Pay-Point.
После получения Платежной таблички либо Pay-Point, устройство следует установить рядом с кассой, выполнить [Привязку QR-кода к мерчанту] по API либо Привязку QR-кода к мерчанту через интерфейс в Онлайн-Банке.
Далее необходимо сохранить настройки для работы с кассовой ссылкой на кассе для дальнейшей активации QR-кода и приема платежей со стороны кассы.
Параметры, необходимые для сохранения в кассу для корректной работы по протоколу кассовой ссылки:
| Параметр | Описание параметра |
|---|---|
qrId |
Идентификатор QR-кода |
publicId |
Идентификатор мерчанта |
secretKey |
Ключ, необходимый для авторизации в сервисе Банка при отправке запросов по API |
После формирования корзины касса должна отправить [Запрос на создание заказа] для активации QR-кода и получить статус оплаты после ее совершения плательщиком.
Для корректной работы с кассовой ссылкой рекомендуется поддержать API протокол кассовой ссылки.
На схеме ниже представлен сценарий работы с кассовой ссылкой СБП.
B случае если прием платежей планируется на сайте или в мобильном приложении, рекомендуем использовать протокол платежной формы Райффайзенбанка.
Динамический QR-код или QRDynamic - вид QR-кода, который хорошо подходит для приема платежей в онлайне (мобильные приложения / сайт), а также в торговой точке.
Если ни одно из решений выше вам не подходит по какой-либо причине, можно рассмотреть использование прямого протокола формирования динамического QR-кода.
Для корректной работы с кассовой ссылкой рекомендуется поддержать API протокол динамического QR-кода.
На схеме ниже представлен сценарий формирования динамического QR-кода и последующего приема платежа с получением необходимой информации в систему мерчанта.
Вы можете предложить клиенту привязать оплату по СБП к программе лояльности или к аккаунту в вашем сервисе. Для этого потребуется сформировать QR-код и отобразить его клиенту, либо перенаправить его на специальную ссылку, которая есть в ответе на запрос генерации QR-кода на подписку.
После по уникальному идентификатору подписки вы можете обращаться за безакцептным списанием средств с клиента за ваши товары и услуги.
Также есть схема, когда одним запросом создается QR-код на получение оплаты и заведение подписки.
В данном случае клиент проводит оплату, после чего ему отображается окно с предложением подключения подписки.
Клиент может провести оплату, но отказаться от подписки. Также клиент может провести оплату из приложения банка, который не подключен к сервису подписок.
Механизм подписок также поддерживает регулярные автоматические списания, которые банк проводит в указанную дату в 10:00 или 13:00 по московскому времени. На данный момент поддерживаются только ежемесячные списания. При неуспешной оплате в 10:00 производится еще одна попытка в 13:00 того же дня, при повторной ошибке будет еще по две попытки в последующие дни в то же время. Неуспешность платежа не ведет к отмене подписки.
Автоматические списания возможны как для оплаты с последующей подпиской, так и для подписки без оплаты в этот момент. Для автоматических платежей необходимо передать дополнительные параметры списания в методе [Регистрация QR-кода] или [Создание QR для подписки].
Уведомления о платежах можно получать в виде callback-уведомлений. Деактивировать подписку можно с помощью метода [Отмена подписки].
Для корректной работы с API полезно понимать статусные модели сущностей.
Модель заказа широко применяется при работе с Кассовой ссылкой. Статусная модель заказа:
При работе с QR-кодами потребуется понимание статусной модели QR-кодов.
Стоит обратить внимание, что для Кассовой ссылки QR-код формируется в статусе INACTIVE, для остальных типов QR данный статус не используется.
Статусная модель QR-кода:
Список готовых решений вы можете посмотреть по ссылке.
При работе в мобильной версии сайта или приложении мы рекомендуем использовать платежную форму Райффайзенбанка.
Если планируете использовать свою форму, то необходимо реализовать виджет выбора банка.
Для реализации виджета, необходимо использовать [API Виджета СБП].
Для корректной обработки deeplink в WebView рекомендуем следующую реализацию:
Настройте WebView:
webView.settings.javaScriptEnabled = true
webView.settings.setSupportMultipleWindows = false
Создайте кастомный WebViewClient:
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView,
request: WebResourceRequest
): Boolean {
val url = request.url.toString()
return if (url.startsWith("http://") || url.startsWith("https://")) {
false
} else {
try {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
if (intent.resolveActivity(view.context.packageManager) != null) {
view.context.startActivity(intent)
true
} else {
// resolveActivity может вернуть null на API 30+ из-за package visibility
// пробуем запустить напрямую как fallback
view.context.startActivity(intent)
true
}
} catch (e: ActivityNotFoundException) {
// Нет приложения для обработки этой схемы
false
} catch (e: Exception) {
e.printStackTrace()
false
}
}
}
}
Принцип работы:
http:// и https:// → загружаются внутри WebViewТакой подход гарантирует корректную работу deeplink и сохранение веб-страниц внутри приложения.
Для полного цикла тестирования Райффайзенбанк предоставляет возможность использования демо-приложения для оплаты QR-кода от имени покупателя: WEB-приложение для оплаты по QR-коду
Приложение можно открыть в браузере любого устройства, имеющего камеру. После открытия приложения необходимо нажать на кнопку "Сканировать QR" (при необходимости разрешить браузеру доступ к камере) и отсканировать изображение тестового QR-кода.
Приложения банков не будут работать для оплаты QR-кодов в тестовой среде
Указанные суммы можно использовать для получения ошибок оплат или списаний по подпискам.
| Сценарий | Сумма | Тип ошибки |
|---|---|---|
| * Оплата по СБП через WEB-приложение для оплаты по QR-коду * Списание по СБП подписке |
99.51 | Недостаточно денежных средств для проведения операции |
| * Списание по СБП подписке | 99.41 | На счете Плательщика недостаточно средств для проведения операции |
Для реализации взаимодействия с партнёром Райффайзенбанк предоставляет API из следующих запросов:
Метод позволяет сформировать статические QR-коды, динамические QR-коды и кассовую ссылку СБП (QRVariable) для каждой кассы. Также с помощью данного метода вы можете сформировать динамический QR-код для оплаты с подпиской.
При каждом новом запросе будет возвращаться новый QR.
Тестовые QR можно оплатить только с помощью тестового приложения.
| qrType required | string
|
| account | string <= 20 characters Счет для зачисления. Параметр используется, если необходимо разносить платежи на разные счета |
| additionalInfo | string (AdditionalInfo) <= 140 characters ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Дополнительная информация. |
| amount required | number > 0 Сумма в рублях. Для копеек доступно два знака после точки. |
| currency | string = 3 characters Default: "RUB" Value: "RUB" Валюта платежа |
| order required | string (OrderId) ^[A-Za-z0-9-_.]+$ Идентификатор заказа. Рекомендуем использовать длинный формат без возможности перебора, например, использовать формат UUID v4 |
| paymentDetails | string (PaymentDetails) ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Назначение платежа. Отображается в выписке. Может содержать:
|
| qrExpirationDate | string <date-time> (ExpirationDate) Срок действия |
| sbpMerchantId required | string <= 12 characters Идентификатор зарегистрированного партнёра в СБП |
| redirectUrl | string (RedirectUrl) ^[A-Za-z][A-Za-z0-9]*://\S+$ Ссылка, по котрой плательщик будет перенаправлен из приложения Банка в приложение или на сайт мерчанта в случае успешной оплаты по СБП
|
| qrDescription | string <= 32 characters Описание QR-кода |
object (Subscription) Данные для оформления подписки. Результат подписки зависит от плательщика. | |
object (Extra) Дополнительные поля для свободного заполнения по принципу key-value |
{- "account": "40700000000000000000",
- "additionalInfo": "Доп. информация",
- "amount": 1110.11,
- "currency": "RUB",
- "order": "1-22-333",
- "paymentDetails": "Назначение платежа",
- "qrType": "QRDynamic",
- "extra": {
- "extraParam": "Example extra param"
}, - "qrExpirationDate": "2023-07-22T09:14:38+03:00",
- "sbpMerchantId": "MA0000000552",
- "qrDescription": "QR для оплаты заказа"
}{- "qrId": "AD100004BAL7227F9BNP6KNE007J9B3K",
- "qrStatus": "NEW",
}Метод позволяет получить данные по зарегистрированному ранее QR-коду
| qrId required | string Идентификатор QR кода |
{- "qrId": "AD100004BAL7227F9BNP6KNE007J9B3K",
- "qrStatus": "NEW",
}Метод позволяет получить информацию по платежу по QR-коду. Метод не используется для QRVariable.
| qrId required | string Идентификатор QR кода |
{- "additionalInfo": "Доп. информация",
- "paymentPurpose": "Назначение платежа",
- "amount": 1110.11,
- "code": "SUCCESS",
- "createDate": "2020-01-31T09:14:38.107227+03:00",
- "currency": "RUB",
- "order": "282a60f8-dd75-4286-bde0-af321dd081b3",
- "paymentStatus": "SUCCESS",
- "qrId": "AD100051KNSNR64I98CRUJUASC9M72QT",
- "sbpMerchantId": "MA0000000552",
- "transactionDate": "2019-07-11T17:45:13.109227+03:00",
- "transactionId": 23,
- "qrExpirationDate": "2020-01-15T13:00:40+03:00",
- "extra": {
- "extraParam": "Example extra param"
}
}Используется для опроса статуса заказа по QR-коду.
Метод позволяет получить информацию о заказе по его идентификатору, включая текущий статус, сумму и срок действия.
Рекомендуется проводить опрос статуса раз в 2 секунды до получения финального статуса (PAID, EXPIRED или CANCELLED).
| publicId required | string Идентификатор мерчанта |
| id required | string Идентификатор заказа |
{- "id": "order-test",
- "amount": 1200,
- "comment": "Тестовый комментарий",
- "status": {
- "value": "NEW",
- "date": "2025-01-10T20:10:00+03:00"
}, - "expirationDate": "2024-12-31T17:00:00+03:00",
- "extra": {
- "property1": "string",
- "property2": "string"
}, - "paymentMethod": "UNDEFINED",
- "created": "2019-08-24T14:15:22Z"
}Метод позволяет выполнить возврат по заказу.
Метод также позволяет провести возврат плательщику в другой банк. Поддерживаются как полный, так и частичный возвраты.
| orderId required | string Идентификатор заказа |
| refundId required | string Уникальный идентификатор запроса за возврат |
| amount required | number Сумма в рублях. Для копеек доступно два знака после точки. |
| paymentDetails | string (PaymentDetails) ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Назначение платежа. Отображается в выписке. Может содержать:
|
object Данные плательщика. Необходимо заполнять, если требуется выполнить возврат в другой банк. |
{- "amount": 10,
- "paymentDetails": "Назначение платежа"
}{- "amount": 22,
- "status": {
- "value": "IN_PROGRESS",
- "date": "2024-07-09T15:00:00+03:00"
}
}Метод позволяет получить статус по возврату.
| orderId required | string Идентификатор заказа |
| refundId required | string Уникальный идентификатор запроса за возврат |
{- "amount": 22,
- "status": {
- "value": "IN_PROGRESS",
- "date": "2024-07-09T15:00:00+03:00"
}
}Метод позволяет осуществлять полный и частичный возврат по QRStatic.
| amount required | number > 0 Сумма в рублях. Для копеек доступно два знака после точки.Сумма возврата в рублях |
| order required | string (OrderId) ^[A-Za-z0-9-_.]+$ Идентификатор заказа. Рекомендуем использовать длинный формат без возможности перебора, например, использовать формат UUID v4 |
| paymentDetails | string (PaymentDetails) ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Назначение платежа. Отображается в выписке. Может содержать:
|
| refundId required | string [ 1 .. 40 ] characters ^[A-Za-z0-9-_.]+$ Уникальный идентификатор запроса на возврат |
| transactionId | number Идентификатор операции платежа в Райффайзенбанке. Параметр обязателен для возвратов по |
{- "amount": 150,
- "order": "test_order_007",
- "paymentDetails": "Test",
- "refundId": "test_refundId_007",
- "transactionId": 41
}{- "code": "SUCCESS",
- "amount": 150,
- "refundStatus": "IN_PROGRESS"
}Для реализации взаимодействия с кассовой ссылкой СБП (QRVariable) Райффайзенбанк предоставляет API из следующих запросов:
Данный тип QR позволяет сгенерировать статическое изображение QR под каждую кассу и далее под каждую продажу создавать заказ с указанием qrId этой кассы.
Схема взаимодействия приведена выше.
Метод позволяет привязать драфт кассовой ссылки к мерчанту. Метод также позволяет перепривязать кассовую ссылку между мерчантами, либо изменить параметры QR-кода у текущего мерчанта. Перед перепривязкой QR-кода, необходима настройка со стороны Банка, для настройки необходимо написать на ecom@raiffeisen.ru с указанием мерчантов, между которыми будет осуществляться перепривязка QR-кодов.
| qrId required | string Идентификатор QR кода |
| account | string Счет для зачисления |
| redirectUrl | string (RedirectUrl) ^[A-Za-z][A-Za-z0-9]*://\S+$ Ссылка, по котрой плательщик будет перенаправлен из приложения Банка в приложение или на сайт мерчанта в случае успешной оплаты по СБП
|
| qrDescription | string <= 32 characters Описание QR-кода |
{- "account": "40700000000000000000",
- "redirectUrl": "string",
- "qrDescription": "QR на главной кассе"
}{- "qrId": "AS5D904CACD4416B92CFA4B781CB1157",
- "qrStatus": "INACTIVE",
}Метод позволяет создать новый заказ без возможности его редактирования. Для связки заказа с QR-кодом (с типом QRVariable) необходимо также передать блок с данными о QR в теле запроса. Необходимо передать тот идентификатор QR-кода, который был получен в ответе на запрос регистрации QR-кода.
| id | string [ 1 .. 40 ] characters ^[A-Za-z0-9-_.]+$ Уникальный идентификатор заказа. Рекомендуется использовать формат, не допускающий возможность перебора, например, UUID v4 |
| amount | number > 0 Сумма в рублях. Для копеек доступно два знака после точки. |
| comment | string (OrderComment) <= 140 characters ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Комментарий. Доступен в реестрах и Онлайн-Банке. Не может быть пустым или содержать только пробелы. Может содержать: |
object (Extra) Дополнительные поля для свободного заполнения по принципу key-value | |
| expirationDate | string <date-time> (ExpirationDate) Срок действия |
object Блок с данными QR-кода |
{- "id": "c5b3fd07-c66b-4f11-a8a2-1cc5d319f9e3",
- "amount": 1000.1,
- "comment": "Шоколадный торт",
- "extra": {
- "extraParam": "Example extra param"
}, - "expirationDate": "2023-01-24T11:14:38+03:00",
- "qr": {
- "id": "AD100004BAL7227F9BNP6KNE007J9B3K",
- "additionalInfo": "Доп. информация",
- "paymentDetails": "Назначение платежа"
}
}{- "id": "c5b3fd07-c66b-4f11-a8a2-1cc5d319f9e3",
- "amount": 1000.1,
- "comment": "Шоколадный торт",
- "extra": {
- "extraParam": "Example extra param"
}, - "status": {
- "value": "NEW",
- "date": "2021-12-24T11:15:22.000Z"
}, - "expirationDate": "2022-01-24T11:15:22.000Z",
- "qr": {
- "id": "AD100004BAL7227F9BNP6KNE007J9B3K",
- "additionalInfo": "Доп. информация",
- "paymentDetails": "Назначение платежа"
}
}Метод позволяет получить статус заказа по его номеру. Опрос статуса заказа рекомендуется проводить раз в 2 секунды. При работе в штатном режиме заказ переводится в статус оплаченного в течение 15 секунд с момента оплаты.
| orderId required | string Идентификатор заказа |
{- "id": "c5b3fd07-c66b-4f11-a8a2-1cc5d319f9e3",
- "amount": 1000.1,
- "comment": "Шоколадный торт",
- "extra": {
- "extraParam": "Example extra param"
}, - "status": {
- "value": "NEW",
- "date": "2021-12-24T11:15:22.000Z"
}, - "expirationDate": "2022-01-24T11:15:22.000Z",
- "qr": {
- "id": "AD100004BAL7227F9BNP6KNE007J9B3K",
- "additionalInfo": "Доп. информация",
- "paymentDetails": "Назначение платежа"
}
}Данный метод позволяет отменить заказ, если он не был оплачен. После отмены заказ будет недоступен для оплаты.
| orderId required | string Идентификатор заказа |
{- "code": "ERROR.INVALID_REQUEST",
- "message": "Недопустимый идентификатор заказа"
}Метод позволяет выполнить возврат по заказу.
Метод также позволяет провести возврат плательщику в другой банк. Поддерживаются как полный, так и частичный возвраты.
| orderId required | string Идентификатор заказа |
| refundId required | string Уникальный идентификатор запроса за возврат |
| amount required | number Сумма в рублях. Для копеек доступно два знака после точки. |
| paymentDetails | string (PaymentDetails) ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Назначение платежа. Отображается в выписке. Может содержать:
|
object Данные плательщика. Необходимо заполнять, если требуется выполнить возврат в другой банк. |
{- "amount": 10,
- "paymentDetails": "Назначение платежа"
}{- "amount": 22,
- "status": {
- "value": "IN_PROGRESS",
- "date": "2024-07-09T15:00:00+03:00"
}
}Метод позволяет получить статус по возврату.
| orderId required | string Идентификатор заказа |
| refundId required | string Уникальный идентификатор запроса за возврат |
{- "amount": 22,
- "status": {
- "value": "IN_PROGRESS",
- "date": "2024-07-09T15:00:00+03:00"
}
}Для включения подписок необходима дополнительная настройка. Для этого заполните заявку в Онлайн-банке.
Посмотреть клиентский путь можно с помощью нашей Демо страницы подписок
Для реализации возможны два сценария:
Для размещения виджета у себя на сайте необходимо:
| Параметр | Описание | Значение |
|---|---|---|
| src* | URL-адрес встраиваемой страницы | Описано ниже |
| width* | Ширина виджета Может быть задана клиентом, но максимальный размер не должен превышать 728 пикселей |
от 280 до 728 пикселей |
| height* | Высота виджета Фиксированное значение |
280 пикселей |
| style* | Стиль для корректного отображения рамки виджета | "border: 0; border-radius: 16px" |
| allowtransparency* | Прозрачный фон виджета | true |
| scrolling* | Полосы прокрутки. Не используются | no |
| frameborder* | Рамка с эффектом трехмерности. Не отображается | 0 |
| Параметр | Описание | Значение |
|---|---|---|
| HOST* | Хост | * https://pay.raif.ru (продовый хост) * https://pay-test.raif.ru (тестовый хост) |
| publicId* | Идентификатор, который используется для открытия платежной формы и не является конфиденциальным | |
| subscriptionPurpose* | Цель подписки (отображается на виджете) | |
| logo | Ссылка на логотип клиента (отображается на виджете) | |
| widgetType* | Тип виджета | * CHARITY (благотворительность) * PAYMENT (оплата) |
| buttonColor* | Цвет кнопки | Передавать в формате hex без символа # Например, цвет #774098 нужно передать как buttonColor=774098 |
| textButtonColor* | Цвет текста внутри кнопки | Передавать в формате hex без символа # |
| offer | Ссылка на оферту клиента Если параметр не передан, то в виджете отобразится только ссылка на условия платежа и подключения подписки |
* Параметр не передан, отобразится текст: "Оплачивая, вы соглашаетесь с условиями" * Параметр передан, отобразится текст: "Оплачивая, вы соглашаетесь с условиями и офертой" |
Пример iframe для виджета на тестовой среде:
<iframe src="https://pay-test.raif.ru/widgets/?publicId=000001780049001-80049001&subscriptionPurpose=%D0%91%D0%BB%D0%B0%D0%B3%D0%BE%D1%82%D0%B2%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5%20%D0%BF%D0%BE%D0%B6%D0%B5%D1%80%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&logo=https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqiwtWhVXbOj0gImTuuRHXuDre7gr-MEdQOpsJU9pNy2TRhYDyIuqkPIzZ_0RSyDE2G-M&usqp=CAU&widgetType=CHARITY&buttonColor=774098&textButtonColor=FFFFFF&offer=https://bfkh.ru/oferta_bfkh.pdf" width="630" height="280" style="border: 0; border-radius: 16px" allowtransparency="true" scrolling="no" frameborder="0"></iframe>
Подставьте в iframe продовый хост, также укажите данные своей компании в параметрах URL-адреса встраиваемой страницы и интегрируйте к себе на сайт.
Метод позволяет зарегистрировать QR для последующей привязки счета клиента в выбранном банке. Для мобильного интерфейса используется диплинк, который возвращается в payload. Создание подписки выполняется без авторизации, что позволяет использовать метод на сайте и в мобильном приложении
| id | string <= 40 characters ^[A-Za-z0-9-_.]+$ Идентификатор подписки на стороне партнера. Рекомендуем использовать длинный формат без возможности перебора, например, использовать формат UUID v4 |
| subscriptionPurpose required | string <= 140 characters ^[A-Za-zА-Яа-я0-9 ()!@\[\]#+=_\|.,-]+$ Описание подписки
|
| sbpMerchantId required | string <= 12 characters Идентификатор зарегистрированного партнёра в СБП |
| redirectUrl | string (RedirectUrl) ^[A-Za-z][A-Za-z0-9]*://\S+$ Ссылка, по котрой плательщик будет перенаправлен из приложения Банка в приложение или на сайт мерчанта в случае успешной оплаты по СБП
|
object (SubscriptionAutoCharge) Данные автоматического списания по подписке. Объект передается, если по подписке необходимо взимать деньги на регуряной основе. Используется как альтернатива методу списания по запросу | |
object (Extra) Дополнительные поля для свободного заполнения по принципу key-value |
{- "id": "120059",
- "subscriptionPurpose": "Подписка на услуги",
- "sbpMerchantId": "MA0000000552"
}{- "id": "120059",
- "createDate": "2020-01-31T09:14:38.107227+03:00",
- "status": "INACTIVE",
- "qr": {
- "id": "AD100004BAL7227F9BNP6KNE007J9B3K",
}
}Метод позволяет получить данные по ранее созданной подписке
| subscriptionId required | string Идентификатор подписки |
{- "id": "120059",
- "createDate": "2020-01-31T09:14:38.107227+03:00",
- "status": "INACTIVE",
- "qr": {
- "id": "AD100004BAL7227F9BNP6KNE007J9B3K",
}
}Метод позволяет отменить подписку. Если подписка включает регулярные автоматические списания, то они также будут отменены.
| subscriptionId required | string Идентификатор подписки |
{- "code": "ERROR.INVALID_REQUEST",
- "message": "Недопустимый идентификатор заказа"
}Метод позволяет создать заказ и инициировать списание со счета клиента в рамках созданной подписки. Метод предназначен для списания средств по подписке, у которой не настроено автоматическое списание autoCharge. При успешном списании будет направлено стандартное уведомление об оплате.
Для возврата средств по подписке используется метод [Оформление возврата по платежу].
| subscriptionId required | string Идентификатор подписки |
| account | number Счет для зачисления. Параметр используется, если необходимо разносить платежи на разные счета. Не используется в тестовой среде |
| additionalInfo required | string (AdditionalInfo) <= 140 characters ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Дополнительная информация. |
| amount required | number Сумма в рублях. Для копеек доступно два знака после точки. |
| currency required | string Value: "RUB" Валюта платежа. |
| order | string <= 40 characters ^[A-Za-z0-9-_.]+$ Уникальный идентификатор заказа в системе партнёра. Рекомендуем использовать длинный формат без возможности перебора, например, использовать формат UUID v4 |
| paymentDetails | string (PaymentDetails) ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Назначение платежа. Отображается в выписке. Может содержать:
|
Array of objects (Split) Набор параметров для сплитования платежа. |
{- "account": 40700000000000000000,
- "additionalInfo": "Доп. информация",
- "amount": 1110,
- "currency": "RUB",
- "order": "1-22-333",
- "paymentDetails": "Назначение платежа"
}{- "additionalInfo": "Доп. информация",
- "paymentDetails": "Назначение платежа",
- "amount": 1110,
- "currency": "RUB",
- "order": "282a60f8-dd75-4286-bde0-af321dd081b3",
- "paymentStatus": "IN_PROGRESS",
- "qrId": "AD100051KNSNR64I98CRUJUASC9M72QT",
- "sbpMerchantId": "MA0000000552",
- "splits": [
- {
- "accountId": "ea6f870f-debd-48cc-a83f-b87e7cee8582",
- "amount": 10.23
}, - {
- "accountId": "484afd1e-eefa-4a98-881d-af166860f06c",
- "amount": 1009.77
}
]
}Метод позволяет получить данные по платежу, сделанному по подписке
| subscriptionId required | string Идентификатор подписки |
| orderId required | string Идентификатор заказа |
{- "additionalInfo": "Доп. информация",
- "paymentDetails": "Назначение платежа",
- "amount": 1110,
- "currency": "RUB",
- "order": "282a60f8-dd75-4286-bde0-af321dd081b3",
- "paymentStatus": "IN_PROGRESS",
- "qrId": "AD100051KNSNR64I98CRUJUASC9M72QT",
- "sbpMerchantId": "MA0000000552",
- "splits": [
- {
- "accountId": "ea6f870f-debd-48cc-a83f-b87e7cee8582",
- "amount": 10.23
}, - {
- "accountId": "484afd1e-eefa-4a98-881d-af166860f06c",
- "amount": 1009.77
}
]
}Набор параметров для сплитования платежа.
Сплитование позволяет ТСП передавать параметры распределения суммы платежа или возврата между контрагентами.
Сумма всех объектов сплита должна быть равна сумме операции.
При взаиморасчетах суммы платежей, указанные в сплите, увеличивают суммы к перечислению контрагентам, а суммы возвратов — уменьшают их.
Сплитование доступно только при агрегированной схеме взаиморасчетов. Чтобы настроить агрегированную схему, обратитесь в техническую поддержку банка: ecom@raiffeisen.ru. Подробнее см. в разделе Схема взаиморасчетов.
Сценарий позволяет создавать и изменять заказы по кассовым ссылкам, регистрировать динамические QR коды с распределением денежных средств на счета контрагентов.
Денежные средства распределяются на счета контрагентов на следующий день после совершения платежа. Всю сумму платежа можно зачислить как на один счет контрагента, так и на несколько счетов.
Метод позволяет создать заказ с привязкой к существующему кассовой ссылке QRVariable или с созданием нового динамического QR-кода QRDynamic.
Также с помощью данного метода вы можете сгенерировать QR код для оплаты с подпиской.
| publicId required | string Идентификатор мерчанта |
| id | string [ 1 .. 40 ] characters ^[A-Za-z0-9-_.]+$ Уникальный идентификатор заказа. Рекомендуется использовать формат, не допускающий возможность перебора, например, UUID v4 |
| amount required | number <float> > 0 Сумма заказа |
| comment | string (OrderComment) <= 140 characters ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Комментарий. Доступен в реестрах и Онлайн-Банке. Не может быть пустым или содержать только пробелы. Может содержать: |
object (Extra) Дополнительные поля для свободного заполнения по принципу key-value | |
| expirationDate | string <date-time> (ExpirationDate) Срок действия |
Array of objects (Split) Набор параметров для сплитования платежа. | |
CreateOrderQRVariableRequest (object) or CreateOrderQrDynamicRequest (object) |
{- "id": "5d5d52a0-2c7a-4a41-9d9c-c0f91f5ce266",
- "amount": 432.19,
- "comment": "Комментарий к заказу",
- "extra": {
- "property1": "string",
- "property2": "string"
}, - "expirationDate": "2025-05-01T16:34:09+03:00",
- "splits": [
- {
- "accountId": "ea6f870f-debd-48cc-a83f-b87e7cee8582",
- "amount": 100
}, - {
- "accountId": "401a1971-f073-4b5b-9add-6044006f38b1",
- "amount": 332.19
}
], - "qr": {
- "account": "40702810500000000045",
- "paymentDetails": "Благотворительное пожертвование",
- "type": "QRDynamic",
- "description": "QR для оплаты заказа"
}
}{- "id": "string",
- "amount": 432.19,
- "comment": "Тестовый комментарий",
- "extra": {
- "property1": "string",
- "property2": "string"
}, - "status": {
- "value": "NEW",
- "date": "2025-01-10T20:10:00+03:00"
}, - "expirationDate": "2019-08-24T14:15:22Z",
- "qr": {
- "id": "AD100004BAL7227F9BNP6KNE007J9B3K",
- "account": "40702810500000000045",
- "paymentDetails": "string",
- "type": "QRDynamic",
- "redirectUrl": "string",
- "description": "QR для главной страницы",
- "subscription": {
- "id": "string",
- "subscriptionPurpose": "string",
- "autoCharge": {
- "frequency": "MONTHLY",
- "firstChargeDate": "2024-01-25",
- "amount": 103.32
}, - "extra": { },
- "bank": "string",
- "status": "INACTIVE",
- "createDate": "string"
},
}, - "splits": [
- {
- "accountId": "string",
- "amount": 0.1
}
]
}Метод позволяет создать или изменить заказ.
| publicId required | string Идентификатор мерчанта |
| orderId required | string Идентификатор заказа |
| amount required | number <float> Сумма заказа |
| comment | string (OrderComment) <= 140 characters ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Комментарий. Доступен в реестрах и Онлайн-Банке. Не может быть пустым или содержать только пробелы. Может содержать: |
object (Extra) Дополнительные поля для свободного заполнения по принципу key-value | |
| expirationDate | string <date-time> (ExpirationDate) Срок действия |
Array of objects (Split) Набор параметров для сплитования платежа. | |
CreateOrderQRVariableRequest (object) or CreateOrderQrDynamicRequest (object) |
{- "amount": 432.19,
- "comment": "Комментарий к заказу",
- "extra": {
- "property1": "string",
- "property2": "string"
}, - "expirationDate": "2025-05-01T16:34:09+03:00",
- "splits": [
- {
- "accountId": "ea6f870f-debd-48cc-a83f-b87e7cee8582",
- "amount": 100
}, - {
- "accountId": "401a1971-f073-4b5b-9add-6044006f38b1",
- "amount": 332.19
}
], - "qr": {
- "account": "40702810500000000045",
- "paymentDetails": "Благотворительное пожертвование",
- "type": "QRDynamic",
- "description": "QR для оплаты заказа"
}
}{- "id": "string",
- "amount": 432.19,
- "comment": "Тестовый комментарий",
- "extra": {
- "property1": "string",
- "property2": "string"
}, - "status": {
- "value": "NEW",
- "date": "2025-01-10T20:10:00+03:00"
}, - "expirationDate": "2019-08-24T14:15:22Z",
- "qr": {
- "id": "AD100004BAL7227F9BNP6KNE007J9B3K",
- "account": "40702810500000000045",
- "paymentDetails": "string",
- "type": "QRDynamic",
- "redirectUrl": "string",
- "description": "QR для главной страницы",
- "subscription": {
- "id": "string",
- "subscriptionPurpose": "string",
- "autoCharge": {
- "frequency": "MONTHLY",
- "firstChargeDate": "2024-01-25",
- "amount": 103.32
}, - "extra": { },
- "bank": "string",
- "status": "INACTIVE",
- "createDate": "string"
},
}, - "splits": [
- {
- "accountId": "string",
- "amount": 0.1
}
]
}Метод позволяет получить статус заказа по его номеру. Опрос статуса заказа рекомендуется проводить раз в 2 секунды. При работе в штатном режиме заказ переводится в статус оплаченного в течение 15 секунд с момента оплаты.
| publicId required | string Идентификатор мерчанта |
| orderId required | string Идентификатор заказа |
{- "id": "string",
- "amount": 432.19,
- "comment": "Тестовый комментарий",
- "extra": {
- "property1": "string",
- "property2": "string"
}, - "status": {
- "value": "NEW",
- "date": "2025-01-10T20:10:00+03:00"
}, - "expirationDate": "2019-08-24T14:15:22Z",
- "qr": {
- "id": "AD100004BAL7227F9BNP6KNE007J9B3K",
- "account": "40702810500000000045",
- "paymentDetails": "string",
- "type": "QRDynamic",
- "redirectUrl": "string",
- "description": "QR для главной страницы",
- "subscription": {
- "id": "string",
- "subscriptionPurpose": "string",
- "autoCharge": {
- "frequency": "MONTHLY",
- "firstChargeDate": "2024-01-25",
- "amount": 103.32
}, - "extra": { },
- "bank": "string",
- "status": "INACTIVE",
- "createDate": "string"
},
}, - "splits": [
- {
- "accountId": "string",
- "amount": 0.1
}
]
}Данный метод позволяет отменить заказ, если он не был оплачен. После отмены заказ будет недоступен для оплаты.
| publicId required | string Идентификатор мерчанта |
| orderId required | string Идентификатор заказа |
{- "code": "ERROR.INVALID_REQUEST",
- "message": "Недопустимый идентификатор заказа"
}Метод позволяет выполнить возврат по заказу. Метод также позволяет провести возврат плательщику в другой банк. Поддерживаются как полный, так и частичный возвраты.
| orderId required | string <= 40 characters Идентификатор заказа в системе мерчанта |
| publicId required | string Идентификатор мерчанта в системе Банка |
| id | string <= 40 characters ^[A-Za-z0-9-_.]+$ Идентификатор возврата |
| amount required | number <float> Сумма возврата |
| paymentDetails | string (PaymentDetails) ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:... Назначение платежа. Отображается в выписке. Может содержать:
|
Array of objects (Split) Набор параметров для сплитования платежа. | |
object Объект передается, если требуется сделать возврат в другой банк или на другой номер |
{- "id": "348230ad-2a8d-4976-af4f-8603d11cba8c",
- "amount": 432.21,
- "paymentDetails": "Возврат за обувь",
- "splits": [
- {
- "accountId": "ea6f870f-debd-48cc-a83f-b87e7cee8582",
- "amount": 10.21
}, - {
- "accountId": "226f0738-d5d8-4ee6-afff-71e05836820a",
- "amount": 422
}
]
}{- "id": "348230ad-2a8d-4976-af4f-8603d11cba8c",
- "amount": 432.21,
- "paymentDetails": "string",
- "customer": {
- "bankAlias": "string",
- "phone": "string"
}, - "splits": [
- {
- "accountId": "string",
- "amount": 0.1
}
], - "status": {
- "value": "IN_PROGRESS",
- "date": "2024-12-31T17:00:00+03:00"
}
}Метод позволяет получить статус по возврату.
| publicId required | string Идентификатор мерчанта в системе Банка |
| orderId required | string <= 40 characters Идентификатор заказа в системе мерчанта |
| refundId required | string Идентификатор возврата |
{- "id": "348230ad-2a8d-4976-af4f-8603d11cba8c",
- "amount": 432.21,
- "paymentDetails": "string",
- "customer": {
- "bankAlias": "string",
- "phone": "string"
}, - "splits": [
- {
- "accountId": "string",
- "amount": 0.1
}
], - "status": {
- "value": "IN_PROGRESS",
- "date": "2024-12-31T17:00:00+03:00"
}
}Для информирования ТСП о проведенных платежах, возвратах и изменениях статусов подписок могут использоваться HTTP-уведомления на адрес, указанный в его настройках.
Боевой адрес можно указать в личном кабинете во вкладке "Прием платежей".
Также адрес для тестовой и боевой среды можно указать с помощью метода в API.
Для партнёра уведомление представляет собой входящий POST-запрос, который использует JSON-структуру.
Уведомление считается принятым, если получатель ответил на запрос кодом HTTP 200.
Ответы с любыми другими HTTP-кодами будут считаться невалидными. Повторные попытки отправки будут проводиться в течение суток с нарастающим интервалом.
Для проверки подлинности уведомлений к данным добавляется подпись в заголовке x-api-signature-sha256, полученная на основе общего секретного ключа и контрольной строки, зашифрованной с помощью HMAC-SHA-256.
| Тип уведомления | Шаблон проверки |
|---|---|
| Оплата | |
| Уведомление об оплате (v2) | amount|publicId|order|transaction.status.value|transaction.status.date |
| Уведомление об оплате (v1) | amount|sbpMerchantId|order|paymentStatus|transactionDate |
| Возвраты | |
| Уведомление о возврате (v1) | amount|publicId|refund.id|status.value|status.date. |
| Подписки | |
| Уведомление о подписке (v2) | data.publicId|data.id|data.status.value|data.status.date |
| Уведомление о подписке (v1) | data.publicId|data.id|data.status.value|data.status.date |
Уведомления отправляются с IP 193.28.44.23
| X-Api-Signature-SHA256 required | string Заполняется подписью, полученной алгоритмом HMAC-SHA-256 с использованием выбранного секретного ключа и контрольной строки |
| event required | string Value: "payment" Тип сообщения |
required | object (PaymentTransactionV2) Данные по операции |
{- "event": "payment",
- "transaction": {
- "id": 120059,
- "orderId": "testOrder",
- "status": {
- "value": "SUCCESS",
- "date": "2019-07-11T17:45:13+03:00"
}, - "paymentMethod": "sbp",
- "paymentParams": {
- "qrId": "AD100051KNSNR64I98CRUJUASC9M72QT"
}, - "amount": 12500.5,
- "comment": "Покупка шоколадного торта",
- "extra": {
- "extraParam": "Example extra param"
}
}
}| X-Api-Signature-SHA256 required | string Заполняется подписью, полученной алгоритмом HMAC-SHA-256 с использованием выбранного секретного ключа и контрольной строки |
| transactionId | number Идентификатор операции платежа в Райффайзенбанке |
| qrId | string <= 32 characters Уникальный идентификатор QR-кода, выданный СБП |
| sbpMerchantId | string <= 12 characters Идентификатор зарегистрированного ТСП в СБП |
| merchantId | string Идентификатор ТСП в Райффайзенбанке |
| amount | number Сумма в рублях |
| currency | string <= 3 characters Валюта платежа |
| transactionDate | string <date-time> Дата и время проведения платежа |
| paymentStatus | string Статус проведения платежа |
| additionalInfo | string <= 140 characters Дополнительная информация |
| order | string <= 40 characters ^[A-Za-z0-9-_.]+$ Уникальный идентификатор заказа |
| createDate | string <date-time> Время формирования заявки |
object Дополнительные поля, переданные в запросе ранее |
{- "transactionId": 0,
- "qrId": "string",
- "sbpMerchantId": "string",
- "merchantId": "string",
- "amount": 0,
- "currency": "str",
- "transactionDate": "2019-08-24T14:15:22Z",
- "paymentStatus": "string",
- "additionalInfo": "string",
- "order": "string",
- "createDate": "2019-08-24T14:15:22Z",
- "extra": {
- "property1": "string",
- "property2": "string"
}
}| X-Api-Signature-SHA256 required | string Заполняется подписью, полученной алгоритмом HMAC-SHA-256 с использованием выбранного секретного ключа и контрольной строки |
object |
{- "refund": {
- "id": "refund-12345",
- "sbp": {
- "sbpTransactionId": "B7CF9F02B5224F34913FB5BB311CED39"
}, - "amount": 1500.5,
- "status": {
- "value": "COMPLETED",
- "date": "2024-08-06T14:50:59+03:00"
}, - "paymentParams": {
- "transactionId": 1345,
- "orderId": "order-12345",
- "qrId": "AD100051KNSNR64I98CRUJUASC9M72QT"
}
}
}| event required | string Value: "SUBSCRIPTION" Тип сообщения |
required | object Данные о подписке |
{- "event": "SUBSCRIPTION",
- "data": {
- "publicId": "000001780049001-80049001",
- "id": "subscription-sbp-test",
- "status": {
- "value": "SUBSCRIBED",
- "date": "2025-11-29T19:43:54+03:00"
}, - "purpose": "Подписка на мобильное приложение",
- "paymentMethod": "SBP",
- "bank": {
- "name": "Райффайзенбанк",
- "memberId": "100000000007"
}, - "qr": {
- "id": "AD100004BAL7227F9BNP6KNE007J9B3K",
}
}
}| event | string Value: "SUBSCRIPTION" Тип сообщения |
object |
{- "event": "SUBSCRIPTION",
- "data": {
- "id": "c5b3fd06",
- "publicId": "MA0000000552",
- "bank": {
- "name": "Райффайзенбанк",
- "memberId": "100000000007"
}, - "status": {
- "value": "SUBSCRIBED",
- "date": "2024-08-06T14:50:59+03:00"
}, - "qr": {
- "id": "AD399130040A4FFAB09111CB6304BF8D"
}
}
}Для подписи уведомлений будет использоваться ключ из заголовка авторизации.
Подробнее о форматах уведомлений читайте в документации.
| callbackUrl required | string URL-адрес для приема уведомлений |
object Настройки типов операций |
{- "operationTypes": {
- "payment": {
- "version": "V3",
- "enabled": true
}, - "refund": {
- "version": "V1",
- "enabled": true
}, - "subscription": {
- "version": "V2",
- "enabled": false
}
}
}{- "operationTypes": {
- "payment": {
- "version": "V3",
- "enabled": true
}, - "refund": {
- "version": "V1",
- "enabled": true
}, - "subscription": {
- "version": "V2",
- "enabled": false
}
}
}Для настройки отправки реестров на ежедневной, еженедельной или ежемесячной основе следуйте инструкциям по работе в Личном кабинете или Онлайн-Банке.
В случае отсутствия операций за день, реестр на следующий день не отправляется.
Формат реестра:
| Наименование колонки | Значение |
|---|---|
| Мерчант | Идентификатор в системе СБП |
| Дата операции МСК | Дата и время проведения операции (МСК) |
| Тип | Тип операции |
| id заказа | Id заказа в системе партнера (order) |
| id возврата | Id возврата в системе партнера (refundId) |
| Способ оплаты | Instant Payment QR |
| Данные оплаты | QR id |
| id клиента | Маскированный код плательщика |
| Сумма | Сумма транзакции |
| Комиссия | Комиссия по транзакции |
| id операции НСПК | Идентификатор операции в системе НСПК |
| Назначение платежа | Назначение платежа (paymentDetails) |
| Комментарий | Комментарий к заказу |
| Дополнительные поля | Дополнительная информация (пока не используется) |
| id проводки | Номер банковской проводки |
Потранзакционнцю выписку можно выгрузить в банк-клиенте в следующих форматах:
В назначении платежа есть системиный префикс: номер проводки, тип операции, идентификатор мерчанта НСПК.
В примерах выписки указаны стандартные назначение платежа. Вы можете его изменить, для этого необходимо при генерации QR-кода и возвратах передавать параметр paymentDetails с вашими данными, при этом ваше значение будет идти после системного префикса.
Для агрегированного зачисления:
Нарратив для агрегированной проводки можно изменить, обратившись на ecom@raiffeisen.ru. Максимальная длина изменяемого нарратива - 60 символов.
Методы позволяют получить список операций и итоговые суммы за определенный промежуток времени. Возможно использование методов для закрытия кассового периода.
Отчёт по транзакциям за указанный период.
Максимальная глубина запрашиваемых данных не более трёх дней.
Пример запроса:
GET https://pay.raif.ru/api/report/v1/transactions/summary?from=2026-01-15T00%3A00%3A00%2B03%3A00&to=2026-01-16T23%3A59%3A59%2B03%3A00
| from required | string <date-time> Example: from=2026-01-15T12:00:00+03:00 Дата и время начала выборки. |
| to required | string <date-time> Example: to=2026-01-15T15:00:00+03:00 Дата и время окончания выборки. |
| qrId | string Example: qrId=AD1F2CD7212E48FA919AB52EF0AEFB33 Идентификатор QR-кода. Если значение не передано - выгружаются все операции по мерчанту |
| operationTypes | string Enum: "Payment" "Refund" Тип операции. Если значение не передано - выгружаются все типы операции |
{- "sbp": {
- "payments": {
- "sum": 21,
- "count": 2
}, - "refunds": {
- "sum": 10,
- "count": 1
}, - "total": {
- "sum": 11,
- "count": 3
}
}, - "card": {
- "payments": {
- "sum": 23,
- "count": 2
}, - "refunds": {
- "sum": 11,
- "count": 1
}, - "total": {
- "sum": 12,
- "count": 3
}
}
}Получение детализированного отчёта по транзакциям за указанный период.
Максимальная глубина запрашиваемых данных не более трёх дней.
Пример запроса:
GET https://pay.raif.ru/api/report/v1/transactions?from=2026-01-15T00%3A00%3A00%2B03%3A00&to=2026-01-16T23%3A59%3A59%2B03%3A00
| from required | string <date-time> Example: from=2026-01-15T12:00:00+03:00 Дата и время начала выборки. |
| to required | string <date-time> Example: to=2026-01-15T15:00:00+03:00 Дата и время окончания выборки. |
| qrId | string Example: qrId=AD1F2CD7212E48FA919AB52EF0AEFB33 Идентификатор QR-кода. Если значение не передано - выгружаются все операции по мерчанту |
| operationTypes | string Enum: "Payment" "Refund" Тип операции. Если значение не передано - выгружаются все типы операции |
{- "sbp": {
- "payment": [
- {
- "orderId": "order-test",
- "amount": 77,
- "transactionDate": "2024-12-31T10:00:00+03:00",
- "paymentSystem": "Instant Payment QR",
- "paymentDetails": "Благотворительное пожертвование",
- "transactionId": 178657,
- "clientId": "007910******4567",
- "qrId": "AS1A007L7B8IPA1F8CBQ8RK2D27FHST9",
- "sbpTransactionId": "A23091339574920E000009529E6B66DF",
- "orderComment": "Комментарий",
- "fee": 0.31
}
], - "refund": [
- {
- "orderId": "order-test-1",
- "amount": 17,
- "transactionDate": "2024-12-31T10:00:00+03:00",
- "paymentSystem": "Instant Payment QR",
- "paymentDetails": "Возврат денежных средств",
- "transactionId": 178658,
- "clientId": "007910******4567",
- "qrId": "AS1A007L7B8IPA1F8CBQ8RK2D27FHST9",
- "sbpTransactionId": "B229701403532102000016268EEA632B",
- "refundId": "refund-1",
- "fee": 0
}
]
}, - "card": {
- "payment": [
- {
- "orderId": "order-test-2",
- "amount": 14,
- "transactionDate": "2024-12-31T10:50:00+03:00",
- "paymentSystem": "VISA",
- "paymentDetails": "Назначение платежа",
- "transactionId": 5252420,
- "clientId": "200043****823",
- "authCode": "259AA",
- "rrn": "935014591810",
- "orderComment": "Благотворительное пожертвование",
- "fee": 0.38
}
], - "refund": [
- {
- "orderId": "order-test-3",
- "amount": 13,
- "transactionDate": "2022-12-14T10:01:24.84+03:00",
- "paymentSystem": "VISA",
- "paymentDetails": "Назначение платежа",
- "transactionId": 5252440,
- "clientId": "200043****823",
- "authCode": "259AA",
- "rrn": "935014591810",
- "refundId": "refund-2",
- "fee": 0
}
]
}
}Если в процессе обработки любого запроса произойдет логическая ошибка, API вернет описание ошибки (message) и код сообщения (code).
Описание основных ошибок:
| code | message |
|---|---|
| ERROR.ACCOUNT_IS_NOT_REGISTERED | Указан неверный счет. Проверьте его или удалите. Параметр является необязательным |
| ERROR.INVALID_REQUEST | Не передан обязательный параметр |
| ERROR.QR_EXPIRATION_DATE_NOT_VALID | Неверная дата истечения QR-кода |
| ERROR.MERCHANT_NOT_REGISTERED | Партнер с ID * не зарегистрирован |
| ERROR.ORDER_NUMBER_ALREADY_REGISTERED | QR-код с номером заказа *, партнера * и успешными платежами уже зарегистрирован |
| ERROR.INVALID_REQUEST | Передана некорректная сумма платежа |
| ERROR.SBP_MERCHANT_ID_IS_MISSING | SbpMerchantId партнера не указан |
| ERROR.DYNAMIC_QR_WITHOUT_AMOUNT | Не передана сумма для динамического QR-кода |
| ERROR.INVALID_ORDER | В номере заказа поддерживаются A-z09_-. |
| ERROR.NOT_FOUND | QR-код не найден у данного партнера |
| ERROR.REFUND_INSUFFICIENT_FUNDS | Сумма возврата больше суммы остатка по платежу |
| ERROR.INVALID_REQUEST | Сумма возврата не может быть меньше 1 копейки |
| ERROR.REFUND_NOT_FOUND | Возврат с refundId * не найден |
| ERROR.ERROR_WRONG_QR_STATUS | Нельзя сменить статус QR-кода с * на * |
В API поддерживаются две схемы взаиморасчетов:
| Тип | Описание |
|---|---|
| Стандартная | Денежные средства по каждому успешному платежу зачисляются на расчетный счет. |
| Агрегированная | Денежные средства по всем успешным платежам за сутки поступают на специальный счет. На следующий рабочий день средства за вычетом комиссии и возвратов перечисляются на расчетный счет или счета контрагентов. Чтобы настроить схему взаиморасчетов и зарегистрировать счета контрагентов, обратитесь в техническую поддержку банка: ecom@raiffeisen.ru. |
В таблице отражены важные изменения в методах API.
| Дата | Описание |
|---|---|
| 20.02.2026 | * Добавлены шаблоны коллбеков |
| 18.10.2024 | * Добавлен метод разделения платежа при создании qr или заказов на кассовую ссылку |
| 10.07.2024 | * Добавлены уведомления на операции возвратов |
| 18.04.2024 | * В методы сверок операций за период добавлен новый параметр - комиссия |
| 09.11.2023 | * Добавлен метод получения списка банков для возвратов * Добавлен новый метод возврата, позволяющий совершить возврат на другие реквизиты * Добавлен новый метод получения статуса возврата, который позволяет получить причину отклонения операции |
| 19.06.2023 | * Добавлена ссылка на SDK от НСПК , для реализации виджета выбора банка |
| 18.05.2023 | * В методы создания и привязки QR добавлен новый параметр qrDescription |
| 29.03.2023 | * Внесены ограничения по полям additionalInfo при создании заказов/qr и paymentDetails при возвратах |
| 14.12.2022 | * Добавлены методы для сверки операций по картам и СБП |
| 02.11.2022 | * Дополнен раздел "Подписки": добавлено описание методов работы |
| 24.08.2022 | * Дополнен раздел "Авторизация": добавлено описание подхода по созданию одного мерчанта на все торговые точки * Метод регистрации QR вынесен в отдельный блок "Создание и отмена QR-кода (все типы QR)" * Переименован раздел "Работа с QR-кодом" → "Статический и динамический QR-коды (QRStatic, QRDynamic)" * Переименован раздел "Кассовая ссылка СБП" → "Кассовая ссылка СБП (QRVariable)" * Добавлено описание статусов платежа в ответе на запрос статуса платежа по QR v1/qr/{qrId}/payment-info * Удалены пометки required из ответов на некоторые запросы * Корректировки по тексту |
| 29.07.2022 | * Изменены хосты: * Боевой с e-commerce.raiffeisen.ru на pay.raif.ru * Тестовый c test.ecom.raiffeisen.ru на pay-test.raif.ru |
| 27.07.2022 | * Добавлен параметр paymentDetails для возвратов по заказам по QRVariable |
| 30.05.2022 | * Добавлен параметр redirectUrl, который в случае успешной операции, позволяет передать ссылку для перенаправления клиента из приложения банка |
| 30.12.2021 | * Обновлены диаграммы последовательности UML в разделе "Общие схемы работы" |
| 02.12.2021 | * Добавлена диаграмма последовательности для работы с кассовой ссылкой СБП * API для регистрации QR-кода версии v1 помечен как устаревший * Добавлена новая версия v2 API для регистрации QR-кода * Добавлен новый тип QR-кода QRVariable для кассовой ссылки СБП * Добавлен новый API для создания заказов под QRVariable * Добавлены пример JSON и cURL-запросов * Дополнен справочник ошибок * Внесены общие правки |
| 09.09.2021 | * Исправлена длина параметра paymentDetails при операциях возвратах |
| 06.07.2021 | * Реализовали сервис подписок |
| 02.06.2021 | * Добавили новый метод отмены QR-кода * Появилась новая версия запроса на получения данных по QR-коду |