openapi: 3.2.0 info: title: Raiffeisen Ru QR Variable API version: '1.0' contact: email: ecom@raiffeisen.ru name: Support e-mail x-team-id: 178 x-short-team-name: PAPAS x-description-i18n: eng: "You can give your comments about current documentation in repository: https://github.com/Raiffeisen-DGTL/ecom-API/blob/master/sbp_en.yaml\n\n# Connect to SBP\n\nTo receive SBP payments, submit application on [site](https://www.rbo.raiffeisen.ru/sign-form/).\n\nRaiffeisenbank will complete the registration.\nAfter the process is completed, you will be notified by email.\n\n## SBP participants\n\n### Buyer\n* selects the services / goods in the partner software and the item “Payment via SBP” (optional)\n* scans the QR code provided by the partner and confirms the payment in the application of their bank\n* receives the result of payment and paid services / goods\n\n### Partner\n* requests the formation of a QR code for the selected goods / services (basket)\n* displays a QR code to the client for scanning and making payment\n* processes notifications of the results of SBP operations\n* requests payment data (optional)\n* ensures the delivery of goods / services to the buyer upon payment\n\n### Raiffeisenbank\n* provides an interface for requesting a QR code from a partner\n* provides money transfer to the partner's account upon settlements in SBP\n* defines the format of the notification of the fact of the SBP payment\n* provides an interface for receiving payment data\n\n## Support 54-FZ\n\nIn accordance with the Federal Law NO. 54-FZ of May 22, 2003 \"On the use of cash registers in implementation of settlements in the Russian Federation\",\nfor taxation purposes a fiscal receipt is required for making settlements for goods sold, work performed or services rendered, as well as transfer of the receipts to tax authorities.\n\nRaiffeisenbank provides generation of fiscal receipts and their transfer to tax authorities by integration via [API](https://pay.raif.ru/doc/fiscal.html).\n\n# General schemas of work\n\n## Working with a form\nTo accept payments online on the website or in the mobile application, you can use [QR code opening protocol in the form](https://pay.raif.ru/doc/ecom_en.html).\n\n\n\n## White label SBP API\n\nThe figure below shows the schema of information exchange with a partner when making a payment using a QR code.\n\n\n\n## Subscription schema\n\nYou can offer the client to link the SBP payment to the loyalty program or to an account in your service. To do this, you can generate a QR code and display it to the client or redirect it via a special link that is located in the response to the request to create a QR code for a subscription.\n\nAfter that, using the unique subscription identifier, you can apply for debiting funds from the client for your goods and services without the client's acceptance.\n\n\n\n## Payment and subscription schema\n\nThere is also a schema in which one request receives a QR code to receive payment and subscription.\n\nIn this case, the client makes a payment, after which a window is displayed with a proposal to activate the subscription.\n\nThe customer can pay but unsubscribe. Also, the client can make a payment from a bank application that does not support subscriptions.\n\n\n\n## Working with QRVariable\n\nThe diagram below depicts usage scenario for QRVariable. It is a new QR code type that is differentiated from QRStatic and QRDynamic.\n\n\n\n## Subscription with recurring charges\nSubscriptions support automatic recurring charges made by bank on regular basis. As of now, only monthly charges are supported.\nIn case of unsuccessful payment another attempt is made on the same day. If the second attempt fails, charge will be repeated the next day and so on. Failed attempts do not cause subscription cancellation.

\nAutomatic recurring charges can be made for both of subscription scenarios listed above. To enable the feature, additional fields must be passed either in [QR creation method](#operation/post-sbp-v2-qrs) or in [subscription creation method](#operation/post-sbp-v1-subscriptions).

\nPayment notifications might be received by [callbacks](#tag/Callback). In this case subscriptionId will be passed in the [body message](#operation/сallbackPay). Subscription can be deactivated via [cancellation method](#operation/delete-sbp-v1-subscriptions-subscriptionId).\n\n# Ready solutions\nYou can use our SDK for faster integration:\n* [Java](https://github.com/Raiffeisen-DGTL/sbp-sdk-java)\n[Our other solutions](https://pay.raif.ru/doc/solutions.html).\n# API description\nThe interaction is carried out using the HTTP protocol using the GET/POST/DELETE methods (the description of each request clearly indicates the required method and address).\n\nPOST requests use JSON arguments, GET/DELETE requests work with query strings.\n\nThe API always returns a response in JSON format, regardless of the type of request.\n\nThe response of any method contains a message code (code). If a logical error occurs during the processing of any request, the API will additionally return a description of the error (message).\n\n## Authorization\nRequests like:\n* receiving information on a QR code\n* receipt of payment information\n* processing a return on payment\n* receiving information on return\n\nare authorized using the API secret key (secretKey). The authorization parameter is specified in the Authorization header, the value of which is formed as \"Bearer secretKey\".\n\nYou can view your sbpMerchantId and generate keys in your [personal account](https://www.rbo.raiffeisen.ru/acquiring/mcp#/) in the \"Accept payments\" tab\n\n
\n\nTo generate test data, please contact the Bank's support team by sending an email to ecom@raiffeisen.ru\n\nThe secret key must be stored in a trusted environment, since refunds can be made using it.

\nIt is our recommendation to create a single merchant for all trading locations owned by your company. If so, there will be no need to:\n- store a dictionary linking merchants with your trading locations\n- store a large amount of secret keys and set them up at each trading location individually\n- create additional merchants if new trading locations are opened by the company\n- make refunds strictly at the same store where items were purchased\n- make complicated reports based on various merchants\n- link QR codes with corresponding merchants (in case of using QRVariable)\n# Mobile version and application\nWe recommend using our [payment form](https://pay.raif.ru/doc/ecom_en.html), for working in the mobile version of the site or mobile application.\n\nIf you plan to use your form, then you need to implement a bank selection widget, for this you need to get its scheme for each bank:\n- [bank schemes for payment QR](https://qr.nspk.ru/proxyapp/c2bmembers.json )\n- [bank schemes for subscription QR codes](https://sub.nspk.ru/proxyapp/c2bmembers.json )\n\nAnd substitute it in the url from the payload parameter, instead of https.\n\nFor the correct choice of the bank's app, we recommend using the SDK from the NSPK:\n\nIOS , Android , Web - https://sbp.nspk.ru/business_online/#widget-business\n\nOr you can use our SDK:\nAndroid - https://github.com/Raiffeisen-DGTL/sbp-sdk-android\nIOS - https://github.com/Raiffeisen-DGTL/payform-sdk-ios\n\n### Recommendations for working with deeplink in mobile applications\n\nFor correct deeplink handling in WebView, we recommend the following implementation:\n\n1. **Configure WebView:**\n ```kotlin\n webView.settings.javaScriptEnabled = true\n webView.settings.setSupportMultipleWindows = false\n ```\n\n2. **Create a custom WebViewClient:**\n ```kotlin\n webView.webViewClient = object : WebViewClient() {\n override fun shouldOverrideUrlLoading(\n view: WebView,\n request: WebResourceRequest\n ): Boolean {\n val url = request.url.toString()\n\n return if (url.startsWith(\"http://\") || url.startsWith(\"https://\")) {\n false\n } else {\n try {\n val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))\n if (intent.resolveActivity(view.context.packageManager) != null) {\n view.context.startActivity(intent)\n true\n } else {\n // resolveActivity may return null on API 30+ due to package visibility\n // try launching directly as fallback\n view.context.startActivity(intent)\n true\n }\n } catch (e: ActivityNotFoundException) {\n // No app available to handle this scheme\n false\n } catch (e: Exception) {\n e.printStackTrace()\n false\n }\n }\n }\n }\n ```\n\n3. **How it works:**\n - `http://` and `https://` links → load inside WebView\n - Other schemes (deeplinks) → open in installed apps via Intent\n\nThis approach ensures correct deeplink handling and keeps web pages within your app.\n\n# NFC and SBPay\nTo work with SBP via NFC, it is necessary to implement interaction via [\"QRVariable\"](#section/General-schemas-of-work/Working-with-QRVariable).\n\nYou need to generate a QR code with the QRVariable type for each cash register.\nFrom the response to the QR generation request, you need to get a link from the payload parameter, in the link to the beginning of the domain you need to add \"web.\" and the resulting link needs to be write into an NFC tag.\n\nExample:\n\nIn payload you got https://qr.nspk.ru/AS100004BAL7227F9BNP6KNE007J9B3K,\n\nthe NFC tag will need to be write https://web.qr.nspk.ru/AS100004BAL7227F9BNP6KNE007J9B3K\n\n# Testing\n\nFor a full payment testing cycle, Raiffeisenbank provides the opportunity to use a demo application for scanning QRC on behalf of the buyer at:\nhttps://pay.raif.ru/pay/rfuture/\n\nThe specified address can be opened in the browser of any device with a camera. No additional software / plugins need to be installed. Then click on the SBP icon (if necessary, allow the browser access to the camera) and bring the QR code image to it.\nIf the camera doesn't open, check the url, it has to have https.\n" x-logo: url: images/raifflogo.png backgroundColor: '#FFFFFF' altText: Raiff logo description: 'Operations tagged QRVariable across 2 of this provider''s published API definitions: raiffeisen-ru-raif-pay-sbp-openapi.json, raiffeisen-ru-raif-pay-sbp-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://pay.raif.ru/api description: Production - url: https://pay-test.raif.ru/api description: Sandbox tags: - name: QRVariable x-displayName: Кассовая ссылка x-x-displayName-i18n: eng: QRVariable description: 'Для реализации взаимодействия с кассовой ссылкой СБП (QRVariable) Райффайзенбанк предоставляет API из следующих запросов: * создание заказа * проведение возврата * получение статуса возврата * получение данных о заказе * отмена заказа * получение данных по QR-коду * отмена QR-кода Данный тип QR позволяет сгенерировать статическое изображение QR под каждую кассу и далее под каждую продажу создавать заказ с указанием qrId этой кассы. Схема взаимодействия приведена выше.' x-description-i18n: eng: "To implement interaction with a partner, Raiffeisenbank provides an API of the following requests:\n * Create order\n * Refund\n * Get refund status\n * Get order information\n * Order cancellation\n * Get QR information\n * QR code cancellation\n\nThis type of QR allows you to generate a static QR image for each cash register, and then create an order for each sale indicating the qrId of this QR-code.\n\n[Diagram](#section/Obshie-shemy-raboty/Kassovaya-ssylka-dlya-torgovyh-tochek).\n" paths: /sbp/v1/qr-drafts/{qrId}: parameters: - $ref: '#/components/parameters/qrId' post: summary: Привязка кассовой ссылки x-summary-i18n: eng: Bind QR draft description: 'Метод позволяет привязать драфт кассовой ссылки к мерчанту. Метод также позволяет перепривязать кассовую ссылку между мерчантами, либо изменить параметры QR-кода у текущего мерчанта. Перед перепривязкой QR-кода, необходима настройка со стороны Банка, для настройки необходимо написать на ecom@raiffeisen.ru с указанием мерчантов, между которыми будет осуществляться перепривязка QR-кодов.' x-description-i18n: eng: The method allows to bind a QR draft (QRVariable) with a merchant. Used only for QR drafts, that initially have been created as drafts without binding with any merchant. Must not be used for QR codes created by [standard method](#tag/QR/operation/createQrV2). The request body is required for transmission, but may be empty. operationId: bindDraftQrToMerchant tags: - QRVariable parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/BindDraftQrToMerchantRequest' responses: '200': $ref: '#/components/responses/BindQrDraftResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/GeneralErrorResponse' examples: Перепривязка QR-кода не разрешена: value: code: ERROR.REBINDING_QR_NOT_APPROVED message: Перепривязка QR AS5D904CACD4416B92CFA4B781CB1157 не разрешена '401': description: Unauthorized content: {} '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/GeneralErrorResponse' examples: QR-код не найден: value: code: ERROR.QR_DRAFT_NOT_REGISTERED message: 'QR-draft с qrId: AS5D904CACD4416B92CFA4B781CB1157 не зарегистрирован' Мерчант не зарегистрирован: value: code: ERROR.MERCHANT_NOT_REGISTERED message: Партнер с ID MA8374618 не зарегистрирован Счет не найден у данного мерчанта: value: code: ERROR.ACCOUNT_NOT_FOUND message: Счёт не найден security: - secretKey: [] servers: - url: https://pay.raif.ru/api description: Production - url: https://pay-test.raif.ru/api description: Sandbox /payment/v1/orders: post: summary: Создание заказа x-summary-i18n: eng: Create order operationId: createOrderQRVariable description: 'Метод позволяет создать новый заказ без возможности его редактирования. Для связки заказа с QR-кодом (с типом QRVariable) необходимо также передать блок с данными о QR в теле запроса. Необходимо передать тот идентификатор QR-кода, который был получен в ответе на запрос регистрации QR-кода.' x-description-i18n: eng: 'The method allows you to create a new order without the possibility of editing it. To link an order with a QR code (with the QRVariable type), you must also pass a block with QR data in the request body. It is necessary to transmit the QR code identifier that was received in response to the [QR code registration request](#operation/post-sbp-v2-qrs). ' parameters: [] requestBody: $ref: '#/components/requestBodies/CreateOrderQRVariableRequest' responses: '200': $ref: '#/components/responses/OrderStatusQRVariableResponse' '400': $ref: '#/components/responses/GeneralErrorResponse' tags: - QRVariable security: - secretKey: [] servers: - url: https://pay.raif.ru/api description: Production - url: https://pay-test.raif.ru/api description: Sandbox /payment/v1/orders/{orderId}: parameters: - $ref: '#/components/parameters/orderId' get: summary: Получение данных о заказе x-summary-i18n: eng: Get order information operationId: getOrderQRVariable description: Метод позволяет получить статус заказа по его номеру. Опрос статуса заказа рекомендуется проводить раз в 2 секунды. При работе в штатном режиме заказ переводится в статус оплаченного в течение 15 секунд с момента оплаты. x-description-i18n: eng: The method allows you to get data on the order responses: '200': $ref: '#/components/responses/OrderStatusQRVariableResponse' '404': $ref: '#/components/responses/GeneralErrorResponse' tags: - QRVariable security: - secretKey: [] delete: summary: Отмена заказа x-summary-i18n: eng: Order cancellation operationId: cancelOrderQRVariable responses: '200': description: OK '400': $ref: '#/components/responses/GeneralErrorResponse' '404': $ref: '#/components/responses/GeneralErrorResponse' description: Данный метод позволяет отменить заказ, если он не был оплачен. После отмены заказ будет недоступен для оплаты. x-description-i18n: eng: This method allows to cancel a previously created order. Order maybe canceled before making a payment only. tags: - QRVariable security: - secretKey: [] servers: - url: https://pay.raif.ru/api description: Production - url: https://pay-test.raif.ru/api description: Sandbox /payments/v2/orders/{orderId}/refunds/{refundId}: parameters: - $ref: '#/components/parameters/orderId' - $ref: '#/components/parameters/refundId' post: summary: Оформление возврата x-summary-i18n: eng: Refund operationId: createRefundOld responses: '200': $ref: '#/components/responses/RefundStatusOldResponse' description: 'Метод позволяет выполнить возврат по заказу. Метод также позволяет провести возврат плательщику в другой банк. Поддерживаются как полный, так и частичный возвраты.' x-description-i18n: eng: The method allows you to refund a payment, either full or partial. Also, if it is necessary to make a refund to another number and to another bank, for this you need to fill out bankAlias ​​and phone; during such an operation, the full name of the payer of the original transaction will be checked with the full name of the recipient of the return. parameters: [] tags: - QRVariable requestBody: $ref: '#/components/requestBodies/CreateRefundOldRequest' security: - secretKey: [] get: summary: Получение статуса возврата x-summary-i18n: eng: Get information about a refund tags: - QRVariable responses: '200': $ref: '#/components/responses/RefundStatusOldResponse' operationId: getRefundOld description: Метод позволяет получить статус по возврату. x-description-i18n: eng: Getting information about the refund. security: - secretKey: [] servers: - url: https://pay.raif.ru/api description: Production - url: https://pay-test.raif.ru/api description: Sandbox /payments/v2/banks: parameters: [] get: summary: Получение списка банков для возвратов tags: - QRVariable responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BankListResponse' examples: Payload: value: - alias: RAIFFEISEN name: Райффайзенбанк - alias: TINKOFF name: Тинькофф - alias: VTB name: ВТБ operationId: getBanksForRefunds description: Получение списка банков, принимающих возвраты по СБП. parameters: [] x-summary-i18n: eng: Get list of banks x-description-i18n: eng: Get a list of banks accepting SBP payments security: - secretKey: [] servers: - url: https://pay.raif.ru/api description: Production - url: https://pay-test.raif.ru/api description: Sandbox components: schemas: OrderComment: title: OrderComment type: string description: 'Комментарий. Доступен в реестрах и Онлайн-Банке. Не может быть пустым или содержать только пробелы. Может содержать:
• Символы латиницы (A–Z и a–z)
• Символы кириллицы (А-Я и а-я)
• Цифры 0-9
• Спецсимволы: пробел и `!`, `"`, `#`, `$`, `%`, `''`, `(`, `)`, `*`, `+`, `,`, `-`, `.`, `/`, `:`, `;`, `=`, `>`, `?`, `@`, `[`, `\`, `]`, `^`, `_`, `{`, `|`, `}`, `~`
• Спецсимвол `№`' x-description-i18n: eng: 'Comment. Cannot be empty or contain only spaces. May contain:
• Latin symbols (A–Z и a–z);
• Cyrillic symbols (А-Я и а-я);
• Digits 0-9;
• Special symbols: spaces and `!`, `"`, `#`, `$`, `%`, `''`, `(`, `)`, `*`, `+`, `,`, `-`, `.`, `/`, `:`, `;`, `=`, `>`, `?`, `@`, `[`, `\`, `]`, `^`, `_`, `{`, `|`, `}`, `~`
• Special symbol № ' maxLength: 140 pattern: ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:;=>?@\[\\\]\^_`{\|}~№]+$ example: Тестовый комментарий OrderStatus: title: OrderStatus type: object description: Статус заказа x-description-i18n: eng: Order status minProperties: 1 properties: value: $ref: '#/components/schemas/OrderStatusValue' date: type: string description: Дата создания заказа x-description-i18n: eng: Order creation date format: date-time example: '2025-01-10T20:10:00+03:00' minLength: 1 ExpirationDate: title: ExpirationDate type: string description: 'Срок действия
Может содержать точную дату и время, например `2025-01-10T20:10:00+03:00` или количество минут в формате `+nM`, где n - количество минут. Например, для формирования QR на 2 минуты можно передать: `''+2M''`.
Параметр не может быть меньше текущей даты и времени. Не может быть меньше 1 минуты. Максимальное значение - 90 суток. Если параметр не передан, то по умолчанию QR будет действителен 3 суток
' format: date-time OrderId: title: OrderId type: string pattern: ^[A-Za-z0-9-_.]+$ description: Идентификатор заказа. Рекомендуем использовать длинный формат без возможности перебора, например, использовать формат [UUID v4](https://ru.wikipedia.org/wiki/UUID) Extra: title: Extra type: object additionalProperties: type: string description: Дополнительные поля для свободного заполнения по принципу key-value
В extra рекомендуется передавать параметры `apiClient` и `apiClientVersion`. Данная информация позволит Банку определять клиентское ПО, исправлять ошибки и улучшать сервис BindDraftQrToMerchantRequest: title: BindDraftQrToMerchantRequest type: object x-internal: false properties: account: type: string description: Счет для зачисления example: '40700000000000000000' x-description-i18n: eng: Account redirectUrl: $ref: '#/components/schemas/RedirectUrl' qrDescription: type: string maxLength: 32 example: QR на главной кассе description: Описание QR-кода
Может содержать любую информацию для удобства идентификации конкретного QR-кода. Например, его местоположение или расположение в магазине. Отображается в ЛК и RBO как название QR. Не отображается покупателю и в выписке x-description-i18n: eng: QR description
May contain any useful information to differentiate between QRs. For example, QR location or where it is placed in the store. It is displayed as QR name in UI of RBO and Raif Pay account. This information is not displayed to customers in banking apps nor in bank statements AdditionalInfo: type: string description: "Дополнительная информация.
\nМожет быть доступна для пользователя в зависимости от банка, назначение платежа плательщика.\nПопадает в реестр в колонку \"Комментарий\".\nНе может быть пустым или содержать только пробелы. Может содержать:
\n • Символы латиницы (A–Z и a–z)
\n • Символы кириллицы (А-Я и а-я)
\n • Цифры 0-9
\n • Спецсимволы: пробел и `!`, `\"`, `#`, `$`, `%`, `'`, `(`, `)`, `*`, `+`, `,`, `-`, `.`, `/`, `:`, `;`, `=`, `>`, `?`, `@`, `[`, `\\`, `]`, `^`, `_`, `{`, `|`, `}`, `~`,`№`
" x-description-i18n: eng: 'Additional information to be filled out at the request of the partner when generating the QR code. Cannot be empty or contain only spaces. May contain:
• Latin letters (A–Z and a–z)
• Cyrillic letters (А–Я and а–я)
• Digits 0-9
• Special characters: space and `!`, `"`, `#`, `$`, `%`, `''`, `(`, `)`, `*`, `+`, `,`, `-`, `.`, `/`, `:`, `;`, `=`, `>`, `?`, `@`, `[`, `\`, `]`, `^`, `_`, `{`, `|`, `}`, `~`,`№`
' maxLength: 140 pattern: ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:;=>?@\[\\\]\^_`{\|}~№]+$ example: Дополнительная информация BankListResponse: type: array x-examples: '200': - alias: RAIFFEISEN name: Райффайзенбанк - alias: TINKOFF name: Тинькофф - alias: VTB name: ВТБ items: type: object properties: alias: type: string description: Алиас Банка x-description-i18n: eng: Bank alias minLength: 1 name: type: string description: Наименование Банка x-description-i18n: eng: Name of the Bank minLength: 1 CreatedOrder: title: CreatedOrder type: object properties: id: $ref: '#/components/schemas/OrderId' amount: type: number description: Сумма в рублях. Для копеек доступно два знака после точки. exclusiveMinimum: 0 comment: $ref: '#/components/schemas/OrderComment' extra: $ref: '#/components/schemas/Extra' status: $ref: '#/components/schemas/OrderStatus' expirationDate: $ref: '#/components/schemas/ExpirationDate' qr: type: object description: Данные QR-кода properties: id: type: string description: Идентификатор QR-кода maxLength: 32 additionalInfo: $ref: '#/components/schemas/AdditionalInfo' paymentDetails: $ref: '#/components/schemas/PaymentDetails' GeneralErrorResponse: type: object title: error properties: code: type: string description: Код ошибки x-description-i18n: eng: Error code message: type: string description: Описание ошибки x-description-i18n: eng: Error description OrderStatusValue: title: OrderStatusValue type: string enum: - NEW - PAID - EXPIRED - CANCELLED PaymentDetails: title: PaymentDetails type: string description: 'Назначение платежа. Отображается в выписке. Может содержать:
- Символы латиницы (A–Z и a–z) - Символы кириллицы (А-Я и а-я) - Цифры 0-9 - Спецсимволы: пробел и `!`, `"`, `#`, `$`, `%`, `''`, `(`, `)`, `*`, `+`, `,`, `-`, `.`, `/`, `:`, `;`, `=`, `>`, `?`, `@`, `[`, `\`, `]`, `^`, `_`, `{`, `|`, `}`, `~` - Спецсимвол `№`' pattern: ^(?=.*\S)[A-Za-zА-Яа-яЁё0-9 !"#$%''()*+,\-./:;=>?@\[\\\]\^_`{\|}~№]+$ RedirectUrl: title: RedirectUrl type: string description: 'Ссылка, по котрой плательщик будет перенаправлен из приложения Банка в приложение или на сайт мерчанта в случае успешной оплаты по СБП
* Допускается использование схемы `http` или `https`, за которой следует `://` и последовательность символов без пробелов. * Допускается использование схемы, начинающейся с буквы латинского алфавита и содержащей цифры, за которыми следует `://` и непробельная последовательность символов. ' pattern: ^[A-Za-z][A-Za-z0-9]*://\S+$ requestBodies: CreateRefundOldRequest: required: true content: application/json: schema: type: object properties: amount: type: number description: Сумма в рублях. Для копеек доступно два знака после точки. x-description-i18n: eng: Refund amount paymentDetails: $ref: '#/components/schemas/PaymentDetails' customer: type: object description: Данные плательщика. Необходимо заполнять, если требуется выполнить возврат в другой банк. x-description-i18n: eng: The object is transferred if you need to make a return to another bank or to another number properties: bankAlias: type: string description: Код банка плательщика. Коды банков можно получить выполнив [[Запрос на получение списка банков]](#tag/QR/operation/getBanksForRefunds). x-description-i18n: eng: Recipient bank code from the bank list request phone: type: string description: Номер телефона плательщика x-description-i18n: eng: Recipient's phone number required: - bankAlias - phone required: - amount examples: Обычный возврат: value: amount: 10 paymentDetails: Назначение платежа Возврат с изменением реквизитов: value: amount: 10 paymentDetails: Назначение платежа customer: bankAlias: RAIFFEISEN phone: '79191234567' CreateOrderQRVariableRequest: required: true content: application/json: schema: type: object properties: id: type: string minLength: 1 description: Уникальный идентификатор заказа. Рекомендуется использовать формат, не допускающий возможность перебора, например, [UUID v4](https://ru.wikipedia.org/wiki/UUID)
Если параметр не передан, то идентификатор присвоится заказу автоматически x-description-i18n: eng: Unique identifier of the order in the partner system. We recommend using a long format, for example, using the [UUID v4 format](https://ru.wikipedia.org/wiki/UUID) maxLength: 40 pattern: ^[A-Za-z0-9-_.]+$ amount: type: number description: Сумма в рублях. Для копеек доступно два знака после точки. x-description-i18n: eng: Amount in rubles exclusiveMinimum: 0 comment: $ref: '#/components/schemas/OrderComment' extra: $ref: '#/components/schemas/Extra' expirationDate: $ref: '#/components/schemas/ExpirationDate' qr: type: object description: Блок с данными QR-кода
Объект заполняется, если необходимо связать заказ с QR-кодом x-description-i18n: eng: A block with QR code data
The object is filled in if it is necessary to link the order with a QR code properties: id: type: string description: Уникальный идентификатор QR-кода
Параметр должен быть заполнен идентификатором QR, который был получен в ответе на [запрос создания QR-кода](#operation/post-sbp-v2-qrs) x-description-i18n: eng: ID of registered QR in SBP additionalInfo: $ref: '#/components/schemas/AdditionalInfo' paymentDetails: $ref: '#/components/schemas/PaymentDetails' required: - id examples: Создание заказа: value: 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: Назначение платежа responses: BindQrDraftResponse: description: OK content: application/json: schema: type: object description: Уникальный идентификатор QR properties: qrId: type: string example: AS5D904CACD4416B92CFA4B781CB1157 maxLength: 32 description: Уникальный идентификатор QR qrStatus: type: string enum: - NEW - INACTIVE - IN_PROGRESS - PAID - CANCELLED - EXPIRED description: 'Статус QR-кода - `NEW` - QR ожидает оплаты - `INACTIVE` - QR необходимо активировать для дальнейшей оплаты - `IN_PROGRESS` - промежуточный статус, оплата в процессе - `PAID` - оплата прошла успешно - `EXPIRED` - закончился срок действия QR-кода - `CANCELLED` - QR-код был отменен со стороны мерчанта' example: INACTIVE payload: type: string description: Данные для самостоятельной генерации изображения зарегистрированного QR-кода в СБП. При открытии с мобильного устройства запускает банковское приложение клиента или список для выбора банка qrUrl: type: string description: URL с изображением зарегистрированного QR-кода required: - qrId - qrStatus - payload - qrUrl examples: Успешная привязка: value: qrId: AS5D904CACD4416B92CFA4B781CB1157 qrStatus: INACTIVE payload: https://qr.nspk.ru/AS5D904CACD4416B92CFA4B781CB1157 qrUrl: https://pay-test.raif.ru/api/sbp/v2/qr/AS5D904CACD4416B92CFA4B781CB1157/image RefundStatusOldResponse: description: OK content: application/json: schema: type: object properties: amount: type: number description: Сумма в рублях. Для копеек доступно два знака после точки. x-description-i18n: eng: Refund amount in rubles status: type: object minProperties: 1 properties: value: type: string example: DECLINED description: Статус возврата minLength: 1 declineReason: type: string description: Причина отклонения операции возврата enum: - TIMEOUT - BANK_NOT_SUPPORTED - RECEIVER_ACCOUNT_ERROR - WRONG_RECIPIENT - SYSTEM_ERROR - ERROR.REFUND_INSUFFICIENT_FUNDS date: type: string description: Дата и время операции возврата format: date-time minLength: 1 examples: IN_PROGRESS: value: amount: 22 status: value: IN_PROGRESS date: '2024-07-09T15:00:00+03:00' COMPLETED: value: amount: 777 status: value: COMPLETED date: '2024-07-09T15:00:00+03:00' DECLINED: value: amount: 333 status: value: DECLINED date: '2024-07-09T15:00:00+03:00' declineReason: TIMEOUT GeneralErrorResponse: description: Bad Request content: application/json: schema: properties: code: type: string description: Код ошибки value: type: string description: Поясняющее сообщение об ошибке examples: Невалидный номер заказа: value: code: ERROR.INVALID_REQUEST message: Недопустимый идентификатор заказа Заказ уже был оплачен: value: code: ERROR.ORDER_NUMBER_ALREADY_REGISTERED message: QR-код с номером заказа 1-22-333 партнера MA0000000552 и успешными платежами уже зарегистрирован Невалидная дата истечения QR: value: code: ERROR.QR_EXPIRATION_DATE_NOT_VALID message: Неверная дата истечения QR-кода OrderStatusQRVariableResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/CreatedOrder' examples: '200': value: 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: Назначение платежа parameters: orderId: name: orderId in: path required: true schema: type: string description: Идентификатор заказа qrId: name: qrId in: path required: true schema: type: string description: Идентификатор QR кода refundId: name: refundId in: path required: true schema: type: string description: Уникальный идентификатор запроса за возврат securitySchemes: secretKey: type: http scheme: bearer description: 'Указывается в заголовке `Authorization` в формате `Bearer `. Подробная информация содержится в разделе [Авторизация](#section/Avtorizaciya)' x-refined-from: - raiffeisen-ru-raif-pay-sbp-openapi.json - raiffeisen-ru-raif-pay-sbp-openapi.yml