- Типы операций
- Возвраты и отмены
- Статус возврата
- Формат реестра
- Обзор протокола
- Тестирование проведения операций
- Статус выплаты
- Подтверждение платежа
- Платеж через форму мерчанта
- Уведомления по сплитованным операциям
- Оплата через СБП
- Получение QR-кода
- Статус платежа через СБП
- Статус QR-кода
- Оплата токеном через СБП
- Тестирование оплаты СБП
- PayoutReceiverDataCallback
- Как использовать сервис через Платежную форму QIWI
- Формат уведомления TOKEN
- Выпуск платежного токена карты
- Справочник ошибок API
- Возвраты по проведенным платежам
- Завершение аутентификации покупателя
- Реестры
- Статус возвратов
- Yandex Pay
- Как отправлять платеж
- Завершение аутентификации при проверке карты
- Интеграция с Платёжной формой мерчанта
- Процесс платежа
- Перенаправление на форму QIWI
- Безопасная сделка
- Операция возврата
- Формат уведомления CHECK_CARD
- Возвраты по оплаченным счетам
- Формат взаимодействия
- Справочник кодов детализации ошибки
- Правила работы с детализированной информацией
- Статус проверки карты
- Mir Pay
- Как отправлять платеж с расшифрованными данными
- Как отправлять платеж с зашифрованными данными
- Серверные уведомления
- Платежный токен
- Аутентификация по цифровой подписи
- Как создать ключи
- Получение списка платежей по счету
- Платеж токеном СБП
- Частота отправки уведомлений
- Статус счета
- PayoutReceiverDataRequest
- Завершение выплаты
Типы операций
В Протоколе доступны следующие операции:
Возвраты и отмены
Операции возврата и отмены доступны не для всех способов платежей:
При возврате платежа комиссия QIWI за проведение платежа не возвращается. Исключение — если при возврате платежа выполнена операция отмены. В этом случае финансовой операции (списания средств со счета покупателя) не происходит и комиссия не взимается.
Статус возврата
Пример запроса статуса возврата
Формат реестра
Пример фрагмента реестра
Файл реестра формируется в формате CSV.
| Поле реестра | Описание |
|---|---|
| BANK_DATA_DOC | Дата документа, влияющего на баланс банковского счета, по этой дате составляется Акт в конце месяца |
| BANK_VALUE_DOC | Дата фактического изменения баланса счета в банке |
| BANK_AGR_CODE | Банковский код, уникальный номер документа |
| SUM_BANK | Сумма документа |
| TRANS_DATE | Дата создания операции |
| TRANSACTION_ID | Номер операции |
| SUM | Сумма операции |
| COMMISSION | Комиссия за проведение операции с мерчанта |
| ID | Номер операции paymentId на стороне мерчанта |
| MERCH | ID мерчанта |
| MERCH_SITE | siteId мерчанта |
| PARENT_TRANSACTION_ID | Для возвратов указывается номер исходной операции платежа |
| BILL_ID | выставленного счета |
| PURPOSE | Тип проводки CHARGEBACK/ REVERT_CHARGEBACK/ Оплата/ Возврат/ OPERATION+/ OPERATION-/ SETTLEMENT |
| MERCHANT_SITE_NAME | URL сайта мерчанта |
| PAYMENT_METHOD_TYPE | Метод оплаты: Bank card/ QIWI_WALLET/ SBP |
| ММВБ | Курс ММВБ на момент оплаты для валютных операций |
| CLIENT_AMOUNT | Сумма списания с покупателя |
| CLIENT_CUR_CODE | Валюта списания с покупателя |
| SETTLEMENT_AMOUNT | Сумма платежного поручения, отправленного на расчетный счет партнера |
| PAYMENT_DETAILS | Назначение платежного поручения, отправленного на расчетный счет партнера |
Обзор протокола
Протокол приема платежей предоставляет быстрые и безопасные решения для приема и отправки платежей в интернете. Протокол дает вашим покупателям возможность использовать разнообразные методы платежей, включая:
Тестирование проведения операций
При подключении идентификатор сайта партнёра siteId находится в тестовом режиме. В этом режиме партнёр может проводить операции без списания средств с банковской карты. Также можно запросить переключение в режим тестирования любого siteId партнёра, либо добавление нового siteId в режиме тестирования через сопровождающего менеджера.
Для операций в тестовом режиме используются стандартные URL API Протокола.
Тестовый режим для метода оплаты с баланса КИВИ Кошелька не предусмотрен.
Когда интеграция на вашей стороне закончена, служба поддержки QIWI переводит siteId в производственный режим. В этом режиме выполняются реальные списания денежных средств с карт.
При переходе в производственный режим перевыпускать ключ доступа к API не нужно.
При необходимости измените постоянный URL для обработки уведомлений с тестового (например, https://your-shop-test.ru/callbacks) на производственный (например, https://your-shop-prod.ru/callbacks) в Личном кабинете.
Статус выплаты
Пример запроса статуса выплаты
some comment for payout operation
Incorrect payout amount
Подтверждение платежа
Пример подтверждения платежа
Платеж через форму мерчанта
При подключении платежей через собственную платежную форму по умолчанию доступен только способ оплаты Банковские карты. Другие способы оплаты доступны по запросу:
Уведомления по сплитованным операциям
Уведомления по сплитованным платежам и по возвратам сплитованных платежей формируются аналогично описанным выше ответам на запросы API:
Оплата через СБП
Протокол приема платежей поддерживает списание средств с покупателя через Систему быстрых платежей (СБП). Через СБП можно выполнять платежи в пользу юридических лиц, в том числе с использованием QR-кодов.
По умолчанию прием оплаты через СБП отключен. Чтобы подключить этот способ оплаты, обратитесь к вашему сопровождающему менеджеру.
Получение QR-кода
Пример тела запроса для платежа через СБП
Flower for my girlfriend
Пример ответа c QR-кодом
При оплате через СБП покупатель сканирует QR-код и получает ссылку на платеж, которую можно открыть в приложении своего банка.
Для выпуска QR-кода СБП отправьте запрос API Получение QR-кода СБП. В запросе укажите:
В ответе на запрос в объекте qrCode содержатся данные QR-кода:
Статус платежа через СБП
После перехода платежа в финальный статус вы получите уведомление с указанным в исходном запросе идентификатором выпуска QR-кода в поле qrCodeUid. Актуальный статус платежа по идентификатору платежа paymentId из уведомления можно получить через API.
Статус QR-кода
Пример ответа на запрос статуса QR-кода
Используйте запрос Статус QR-кода СБП. В ответе возвращается информация о QR-коде, в том числе его текущий статус. Так вы можете определить действует ли QR-код.
Оплата токеном через СБП
Пример тела запроса оплаты токеном СБП
О выпуске платежного токена читайте подробнее в этом разделе.
Воспользуйтесь методом API Платеж токеном СБП и передайте в запросе:
Тестирование оплаты СБП
См. информацию в этом разделе.
Для тестирования различных вариантов выплаты и ответов в тестовом режиме указывайте разные суммы платежа (поле amount.value):
| Значение поля amount.value | Результат |
|---|---|
| 200.00 или 2.00 | На инициирующий запрос выплаты возвращается status.value=WAITING, на последующие запросы статуса выплаты возвращается status.value=SUCCESS |
| 500.00 или 5.00 | На запрос выплаты возвращается status.value=DECLINED |
| 510.00 или 5.10 | На инициирующий запрос выплаты возвращается status.value=WAITING, на последующие запросы статуса выплаты возвращается status.value=DECLINED |
PayoutReceiverDataCallback
Информация о получателе. Доступные типы: CARD и SBP.
Тип метода выплаты CARD:
| Поле | Тип или константа | Описание |
|---|---|---|
| type | required: CARD | Тип метода выплаты |
| maskedPan | required: string(19) | Маскированный номер банковской карты |
Тип метода выплаты SBP:
| Поле | Тип | Описание |
|---|---|---|
| type | required: SBP | Тип метода выплаты: SBP — СБП |
| phone | required: string | Номер телефона |
| bankMemberId | required: string(12) | Идентификатор банка получателя в СБП |
Как использовать сервис через Платежную форму QIWI
Пример запроса выставления счета с проверкой карты
Пример тела успешного ответа
Пример уведомления с результатом проверки карты
Формат уведомления TOKEN
Уведомление об успешной привязке токена СБП
Уведомление о неуспешной привязке токена СБП
| Поле | Описание | Тип | В каких случаях используется |
|---|---|---|---|
| token | Описание токена | Object | Всегда |
| token.status | Информация о статусе операции | Object | Всегда |
| token.status.value | Строковое значение статуса | String | Всегда |
| token.status.changedDateTime | Дата обновления статуса | URL-закодированная строка | Всегда |
| token.status.rejectReason | Причина отклонения | String | В случае отклонения операции |
| token.merchantSiteUid | ID поставщика | String | Всегда |
| token.account | Идентификатор покупателя | String | Всегда |
| token.value | Платежный токен | String | В случае успешной операции |
| token.expiredDate | Дата окончания срока действия платежного токена | String | В случае успешной операции |
| token.tokenizationSource | Информация об источнике токенизации | Object | Всегда |
| token.tokenizationSource.type | Тип источника токенизации | String | Всегда |
| token.tokenizationSource.uid | ID источника токенизации | String | Всегда |
| token.bankMemberId | Идентификатор банка покупателя | String | В случае успешной операции |
| type | Тип уведомления — только TOKEN | String | Всегда |
| version | Версия уведомлений | String | Всегда |
Выпуск платежного токена карты
Пример запроса выставления счета с выпуском платежного токена
Пример запроса платежа с выпуском платежного токена
Пример тела ответа с платежным токеном
Для выпуска платежного токена карты вы можете использовать два способа:
Подробнее о том, как использовать платежный токен, см. ссылки:
Справочник ошибок API
Ошибки API описывают причину отклонения операции и передаются:
Некоторые ошибки API сопровождаются детализацией ошибки и рекомендованными действиями, полученными от платежной системы в поле status.psErrorCode.
| Ошибка API | Описание |
|---|---|
| INVALID_STATE | Некорректный статус транзакции |
| INVALID_AMOUNT | Некорректная сумма |
| INVALID_RECEIVER_DATA | Ошибка при передаче данных о получателе |
| DECLINED_BY_MPI | Отклонено MPI |
| DECLINED_BY_FRAUD | Отклонено fraud-мониторингом |
| REATTEMPT_NOT_PERMITTED | Повторный запрос авторизации запрещен |
| REATTEMPT_NOT_PERMITTED_BY_PS | Операция отклонена платежной системой |
| GATEWAY_INTEGRATION_ERROR | Ошибка взаимодействия с банком |
| GATEWAY_TECHNICAL_ERROR | Техническая ошибка на стороне банка |
| ACQUIRING_MPI_TECH_ERROR | Техническая ошибка при проведении 3DS аутентификации |
| ACQUIRING_GATEWAY_TECH_ERROR | Техническая ошибка |
| ACQUIRING_ACQUIRER_ERROR | Техническая ошибка |
| ACQUIRING_AUTH_TECHNICAL_ERROR | Ошибка при проведении авторизации средств |
| ACQUIRING_ISSUER_NOT_AVAILABLE | Ошибка эмитента. Банк-эмитент не доступен |
## Ошибки эмитента
- ACQUIRING_SUSPECTED_FRAUD: Ошибка эмитента. Подозрение на мошенничество
- ACQUIRING_LIMIT_EXCEEDED: Ошибка эмитента. Превышен один из лимитов
- ACQUIRING_NOT_PERMITTED: Ошибка эмитента. Операция не разрешена
- ACQUIRING_INCORRECT_CVV: Ошибка эмитента. Некорректный CVV
- ACQUIRING_EXPIRED_CARD: Ошибка эмитента. Неверный срок действия карты
- ACQUIRING_INVALID_CARD: Ошибка эмитента. Проверьте корректность введенных данных
- ACQUIRING_INSUFFICIENT_FUNDS: Ошибка эмитента. Недостаточно средств
- ACQUIRING_UNKNOWN: Неизвестная ошибка
## Ошибки оплаты
- BILL_ALREADY_PAID: Счет уже оплачен
- PAYIN_PROCESSING_ERROR: Ошибка при проведении платежа
- PAYMENT_EXPIRED_3DS: Не пройдена 3DS-аутентификация
- QW_LIMIT_ERROR: Ошибка превышения лимита пользователя QIWI Кошелька
- QW_IDENTIFICATION_ERROR: Пользователю необходимо пройти идентификацию в QIWI Кошельке
- QW_AUTH_ERROR: Ошибка авторизации в QIWI Кошельке
- QW_INSUFFICIENT_FUNDS: Недостаточно средств в QIWI Кошельке
- QW_AMOUNT_ERROR: Недопустимая сумма платежа
- QW_REGISTRATION_ERROR: Ошибка регистрации пользователя QIWI Кошелька
- QW_AGENT_ERROR: Ошибка при пополнении QIWI Кошелька пользователя
- QW_ACCOUNT_ERROR: QIWI Кошелек заблокирован
- QW_IDENTIFICATION_STATUS_ERROR: Достигнут лимит платежей в QIWI Кошельке
- QW_CURRENCY_ERROR: Валюта QIWI Кошелька не найдена
- QW_PAYMENT_ERROR: Ошибка проведения платежа в QIWI Кошельке
- QW_PROVIDER_ERROR: Провайдер QIWI Кошелька заблокирован
- QW_SMS_CONFIRM_EXPIRED: Истекло время СМС-подтверждения платежа в QIWI Кошельке
- TRY_AGAIN_LATER: Повторите запрос через некоторое время
## Ошибки операции выплаты
- GATEWAY_TECHNICAL_ERROR: Неизвестная техническая ошибка, попробуйте повторить запрос еще раз
- MERCHANT_SETTINGS_ERROR: Ошибка в настройках мерчанта, обратитесь в Службу поддержки
- DECLINED_BY_PAYOUT_GATEWAY: Отклонено выплатным шлюзом
## Способы подключения
Протокол приема платежей поддерживает несколько вариантов взаимодействия:
## Возмещение
По умолчанию, возмещение по проведенным операциям производится раз в 2 дня и минимальным порогом 10.000 рублей. Если вам необходимо особое расписание, обратитесь к вашему сопровождающему менеджеру.
КИВИ взимает комиссию за каждую подтвержденную операцию. Если отмена операции была произведена до подтверждения, комиссия не взимается. Если была произведена частичная отмена до подтверждения операции, комиссия будет пересчитана.
## Акты
Акт по принятым платежам формируется ежемесячно во второй рабочий день месяца.
Акт сначала отправляется на email, указанный при регистрации в сервисе. После подтверждения со стороны партнера, уполномоченное лицо КИВИ Банка подписывает Акт в системе документооборота электронной подписью. Подписанный Акт отправляется на юридический адрес партнера.
## Создание счёта
Пример создания счета
## Проверка карты покупателяМерчант может воспользоваться сервисом проверки реквизитов карты на валидность и доступность для совершения покупок. При этом средства на счете держателя карты не списываются до того, как будут установлены договоренности на рекуррентные списания или будет инициирована транзакция покупки на всю сумму.
Если проверка пройдена успешно, для карты может быть выпущен платежный токен.
Сервис проверки карт по умолчанию отключен. Чтобы подключить его, обратитесь к вашему сопровождающему менеджеру.
Возвраты по проведенным платежам
Возврат по платежу возможен только для успешно проведенного платежа. Возврат может быть как частичным, так и полным. В первом случае возвращается вся сумма принятого платежа. Во втором — только часть от суммы платежа. Перед возвратом платежа проверьте, что платеж успешно завершен и находится в статусе COMPLETED.
Чтобы выполнить возврат по карточному платежу, используйте метод API Операция возврата.
Завершение аутентификации покупателя
Пример завершения аутентификации покупателя
Реестры
Реестр операций отправляется после 14:00 МСК по рабочим дням, содержит информацию только об успешных платежах, обработанных банком. Реестр полностью соответствует Акту.
Реестр отправляется на email, указанный при регистрации в сервисе, во вложенном в письме zip-архиве.
Статус возвратов
Пример запроса статуса всех возвратов по платежу
Yandex Pay
Оплата покупок с Yandex Pay происходит без ввода данных карты.
Для включения способа оплаты Yandex Pay обратитесь к вашему сопровождающему менеджеру.
Как отправлять платеж
Пример платежа с данными расшифрованного платежного токена Yandex Pay (метод CLOUD_TOKEN)
Пример платежа с данными расшифрованного платежного токена Yandex Pay (метод PAN_ONLY)
Формат платежных данных зависит от способа аутентификации, указанного в поле authMethod расшифрованного платежного токена Yandex Pay:
Завершение аутентификации при проверке карты
Пример завершения аутентификации при проверке карты
Интеграция с Платёжной формой мерчанта
Чтобы отправить платёж со сплитованием, передайте в запросе API Платёж JSON-массив paymentSplits с данными поставщиков.
Пример платежа со сплитованием
Пример ответа на платеж со сплитованием
"Товар из корзины"
Формат массива paymentSplits в запросе:
Название Тип Описание
paymentSplits Array Массив данных о поставщиках
type String Тип передаваемых данных. Доступные значения: MERCHANT_DETAILS (данные поставщика)
siteUid String ID поставщика
splitAmount Object Возмещение поставщику
value Number Сумма возмещения, округленная в меньшую сторону до 2 десятичных знаков
currency String(3) Буквенный код валюты возмещения по ISO. Доступен только RUB
orderId String Номер заказа (необязательный)
В объекте paymentSplits ответа содержатся данные о принятых платежах и комиссиях:
Поле ответа Тип Описание
paymentSplits Array Массив с данными о принятых платежах
type String Тип передаваемых данных. Всегда возвращается строка MERCHANT_DETAILS
splitAmount Object Данные о возмещении поставщику
value String Сумма возмещения
splitCommissions Object Данные о комиссии (необязательный)
merchantCms Object Данные о комиссии с поставщика
value String Сумма комиссии
currency String(3) Буквенный код валюты комиссии по ISO
Процесс платежа
При подключении платежей через форму QIWI покупателю доступен только способ оплаты банковскими картами. Другие способы оплаты включаются по запросу:
Чтобы выполнить платеж через форму QIWI, выставите счет покупателю. Воспользуйтесь выставлением счета через API или перенаправьте покупателя на форму QIWI по прямой ссылке с параметрами счета.
Перенаправление на форму QIWI
Пример ответа с payUrl
Чтобы покупатель смог оплатить выставленный счет, перенаправьте его на Платежную форму по ссылке из поля payUrl ответа на запрос выставления счета.
По умолчанию, на Платежной форме QIWI 3-D Secure покупателя обязателен.
Пример ссылки с successUrl
К ссылке можно добавить параметры:
Параметр Описание Тип
successUrl URL для возврата на сайт мерчанта в случае успешной оплаты. Возврат произойдет после успешной 3DS аутентификации. Ссылку необходимо указывать в кодировке UTF-8. URL-закодированная строка
lang Язык платежной формы. Язык по умолчанию — русский (ru). ru, en
paymentMethod Платежный метод, предлагаемый покупателю по умолчанию на платежной форме. Если указанный метод недоступен мерчанту, отображается другой доступный. По умолчанию — CARD. CARD, SBP, QIWI_WALLET
Пример обработчика событий iframe
// Форма загружена // Попытка платежа // Платеж прошел успешно // Платеж не прошел
вы можете использовать метод postMessage для отслеживания состояния формы.
Возможные значения состояния:
Методы библиотеки позволяют открыть Платежную форму оплаты счета как всплывающее окно (popup) поверх вашего сайта. В библиотеке доступно два метода:
Для установки и подключения библиотеки добавьте скрипт в код сайта:
Пример вызова метода выставления счета
Чтобы создать счет и открыть форму оплаты, вызовите метод QiwiCheckout.createInvoice. Параметры метода:
Параметр Описание Формат
publicKey Обязательный параметр. Ключ идентификации мерчанта, уникальный для каждого siteId. Ключ можно получить в Личном кабинете в разделе Настройки. String
amount Обязательный параметр. Сумма, на которую выставляется счет, округленная в меньшую сторону до 2 десятичных знаков Number(6.2)
phone Номер телефона пользователя, на который выставляется счет (в международном формате) String
email E-mail пользователя, куда будет отправлена ссылка для оплаты счета String
account Идентификатор пользователя в системе мерчанта String
customFields Дополнительные данные счета. Список полей см. в описании одноименного параметра в запросе API выставления счета Object
lifetime Дата, до которой счет будет доступен для оплаты. Если счет не будет оплачен до этой даты, он получит финальный статус и последующая оплата станет невозможна. ГГГГ-ММ-ДДTччмм
Пример вызова метода открытия существующего счета
Этот метод используется, когда ссылка на Платежную форму оплаты счета получена при выставлении счета через API.
Чтобы открыть форму оплаты выставленного счета, вызовите метод QiwiCheckout.openInvoice. Параметры метода:
payUrl Обязательный параметр. URL-ссылка на Платежную форму String
Безопасная сделка
Безопасная сделка — сервис для расчётов между двумя физическими лицами на онлайн-площадке. Чтобы подключить Безопасную сделку, обратитесь к вашему сопровождающему менеджеру.
Алгоритм безопасной сделки состоит из двух этапов:
Операция возврата
Пример возврата по платежу
Формат уведомления CHECK_CARD
Пример тела уведомления CHECK_CARD
checkPaymentMethod Описание результата проверки карты Object
checkPaymentMethod.checkOperationDate Дата проверки карты URL-закодированная строкаГГГГ-ММ-ДДTчч:мм:ссZ
checkPaymentMethod.requestUid Идентификатор операции проверки карты String
checkPaymentMethod.status Статус проверки карты String
checkPaymentMethod.isValidCard Признак доступности карты для платежей Bool
checkPaymentMethod.threeDsStatus Информация о статусе дополнительной аутентификации при проверке карты. Возможные значения: PASSED (3-D Secure пройден), NOT_PASSED (3-D Secure не пройден), WITHOUT (3-D Secure не требовалось) String
checkPaymentMethod.paymentMethod Информация о средстве платежа Object
checkPaymentMethod.paymentMethod.type Тип метода оплаты String
checkPaymentMethod.paymentMethod.maskedPan Маскированный PAN карты String
checkPaymentMethod.paymentMethod.cardExpireDate Срок действия карты String
checkPaymentMethod.paymentMethod.cardHolder Имя держателя карты String
checkPaymentMethod.cardInfo Информация о карте Object
checkPaymentMethod.cardInfo.issuingCountry Код страны эмитента String(3)
checkPaymentMethod.cardInfo.issuingBank Банк-эмитент String
checkPaymentMethod.cardInfo.paymentSystem Тип платежной системы String
checkPaymentMethod.cardInfo.fundingSource Тип карты String
checkPaymentMethod.cardInfo.paymentSystemProduct Категория карты String
checkPaymentMethod.createdToken Объект с информацией о платежном токене, выпущенном вместе с проверкой карты Object
checkPaymentMethod.createdToken.token Строка платежного токена String
checkPaymentMethod.createdToken.name Маскированный PAN карты, для которой выпущен платежный токен String
checkPaymentMethod.createdToken.expiredDate Дата окончания срока действия платежного токена. Формат даты соответствует стандарту ISO-8601:ГГГГ-ММ-ДДTчч:мм:сс±чч:мм String
checkPaymentMethod.createdToken.account Идентификатор покупателя, указанный при выпуске платежного токена String
checkPaymentMethod.merchantSiteUid Строковый идентификатор сайта ТСП в QIWI Кассе String
type Тип уведомления — только CHECK_CARD String
Возвраты по оплаченным счетам
Чтобы сделать возврат средств по оплаченному счету, используйте запрос API Возврат по платежу.
Формат взаимодействия
API Протокола приема платежей основано на принципах REST-архитектуры. Данные и методы считаются ресурсами, которые доступны через вызов универсальных идентификаторов ресурсов (URI).
Методы API вызываются через HTTP-запросы. Постоянная часть URL-адреса для вызова методов API:
Параметры методов помещаются в JSON-тело запроса. В GET-запросах параметры помещаются в query запроса.
Необходимо указывать Accept: application/json в заголовках запроса — API всегда возвращает ответ в формате JSON.
Методы API обеспечивают логическую идемпотентность, т. е. многократный вызов метода эквивалентен однократному. Однако ответ сервера может меняться (например, состояние счёта может измениться между запросами).
Справочник кодов детализации ошибки
Коды детализации ошибки и рекомендованных действий, полученные от платежной системы, возвращаются в поле status.psErrorCode.
Код Ошибка API, с которой возвращается Детализация причины ошибки и рекомендация по ее устранению
03 REATTEMPT_NOT_PERMITTED_BY_PS Операция в данную категорию ТСП запрещена эмитентом
04 REATTEMPT_NOT_PERMITTED_BY_PS Карта заблокирована
05 ACQUIRING_NOT_PERMITTED Отклонение запроса по иным причинам
12 REATTEMPT_NOT_PERMITTED_BY_PS Операция данного типа запрещена Правилами и Стандартами платежной системой
13 ACQUIRING_NOT_PERMITTED Некорректная сумма. Повторите попытку совершения операции с другой суммой
14 ACQUIRING_NOT_PERMITTED Некорректный номер карты. Введите корректный номер карты или используйте другую карту
15 REATTEMPT_NOT_PERMITTED_BY_PS Эмитента с данной картой не существует
30 ACQUIRING_NOT_PERMITTED Операция отклонена, обратитесь в Qiwi за дополнительной информацией
33 REATTEMPT_NOT_PERMITTED_BY_PS Данная карта недоступна для использования
41 REATTEMPT_NOT_PERMITTED_BY_PS Данная карта недоступна для использования
43 REATTEMPT_NOT_PERMITTED_BY_PS Данная карта недоступна для использования
51 ACQUIRING_INSUFFICIENT_FUNDS Клиенту может быть рекомендовано повторить попытку совершения операции после пополнения счёта
54 ACQUIRING_EXPIRED_CARD Срок действия карты отсутствует или передан неверно
57 REATTEMPT_NOT_PERMITTED_BY_PS Операция данного типа недоступна для карты
58 REATTEMPT_NOT_PERMITTED_BY_PS Операция данного типа недоступна для эквайера
61 ACQUIRING_LIMIT_EXCEEDED Клиенту может быть рекомендовано повторить попытку совершения операции в другой день — после переустановки Эмитентом лимита по общей сумме операций данного типа
62 REATTEMPT_NOT_PERMITTED_BY_PS Операция недоступна из-за ограничений на карте или счёте Держателя карты
63 ACQUIRING_NOT_PERMITTED Операция отклонена, обратитесь в Qiwi за дополнительной информацией
65 ACQUIRING_LIMIT_EXCEEDED Клиенту может быть рекомендовано повторить попытку совершения операции в другой день — после переустановки Эмитентом лимита по общему количеству операций данного типа
75 ACQUIRING_INCORRECT_CVV Отклонение запроса по причине неверного ввода PIN-кода ранее
76 REATTEMPT_NOT_PERMITTED_BY_PS Отклонение отмены запроса из-за отсутствия оригинального запроса
78 REATTEMPT_NOT_PERMITTED_BY_PS Отклонение запроса из-за попытки использования закрытой карты
86 ACQUIRING_INCORRECT_CVV Отклонение запроса по причине неверного ввода PIN-кода ранее
88 ACQUIRING_AUTH_TECHNICAL_ERROR Отклонение запроса из-за ошибки криптографии, может возникнуть из-за неправильного CVV2/CVC2
91 ACQUIRING_ISSUER_NOT_AVAILABLE Клиенту может быть рекомендовано повторить попытку совершения операции в другое время — после восстановления работоспособности Эмитента
92 REATTEMPT_NOT_PERMITTED_BY_PS Отклонение Платежной Системой из-за невозможности проведения операции
93 REATTEMPT_NOT_PERMITTED_BY_PS Отклонение запроса по причине нарушения требований законодательства
94 REATTEMPT_NOT_PERMITTED_BY_PS Отклонение задублированного запроса
96 ACQUIRING_NOT_PERMITTED Клиенту может быть рекомендовано повторить попытку совершения операции в другое время — после восстановления работоспособности Эмитента или Платформы
TS REATTEMPT_NOT_PERMITTED_BY_PS Отклонение запроса в связи с отменой длительного поручения Держателя карты
CB ACQUIRING_ACQUIRER_ERROR Отклонение запроса из-за некорректной даты рождения Держателя карты
CD REATTEMPT_NOT_PERMITTED_BY_PS Отклонение запроса по причине смерти Держателя карты
Правила работы с детализированной информацией
Существуют две группы кодов ошибок:
По правилам НСПК действуют следующие условия совершения повторов транзакций с non-3DS авторизацией по картам платёжной системы МИР:
Ограничения применяются в отношении конечного получателя, в случае если нами были получены соответствующие коды ответа.
Статус проверки карты
Пример запроса статуса проверки карты
Mir Pay
Клиент оплачивает покупку с Mir Pay без указания данных карты, через приложение Mir Pay.
Для включения способа оплаты Mir Pay обратитесь к вашему сопровождающему менеджеру.
Как отправлять платеж с расшифрованными данными
Пример оформленного платежа
Укажите в объекте paymentMethod запроса API Платёж параметры:
Как отправлять платеж с зашифрованными данными
По умолчанию выпуск платежных токенов отключен. Чтобы подключить его, обратитесь к вашему сопровождающему менеджеру.
Серверные уведомления
Уведомление от QIWI — это входящий POST-запрос с информацией о событии. Тело запроса содержит JSON-сериализованные данные платежа/счета (кодировка UTF-8).
Протокол поддерживает следующие типы уведомлений о событиях API:
Адрес вашего сервера для обработки уведомлений указывается в Личном кабинете в разделе Настройки.
Чтобы указать URL сервера обработки уведомлений для отдельной операции, используйте параметры:
URL для уведомлений должен начинаться с https, так как уведомления отправляются по протоколу HTTPS на порт 443. URL должен быть доступен из Интернета.
Сертификат сайта должен быть выпущен доверенным центром сертификации (например Comodo, Verisign, Thawte и т.п.).
Уведомление считается успешно доставленным, если ваш сервер ответил HTTP кодом состояния 200 OK.
Платежный токен
В Протоколе приема платежей поддерживается выпуск платежных токенов карт, токенов для QR-кодов СБП и QIWI Кошельков. Они могут быть использованы для последующих списаний без дополнительного ввода реквизитов карт или номера кошелька. При выпуске платежного токена карты ее реквизиты сохраняются в зашифрованном виде в QIWI.
См. описание тестового режима для выплат.
Аутентификация по цифровой подписи
Аутентификация по цифровой подписи применяется только для создания операций типа "Выплата" через API.
Для аутентификации по цифровой подписи мерчант должен создать пару RSA-ключей, например, с помощью утилиты OpenSSL. Закрытый ключ должен быть размером 2048 бит в PEM-формате. Мерчант должен передать в QIWI закодированный в Base64 открытый ключ, соответствующий закрытому ключу.
Как создать ключи
Алгоритм с примерами на языке Bash:
Получение списка платежей по счету
Пример запроса на получение списка платежей по счету
"Детская футбольная школа «Тигры»""Детская футбольная школа «Тигры»"
Платеж токеном СБП
Пример платежа токеном СБП
Частота отправки уведомлений
Сервис отправки уведомлений распределяет неуспешные уведомления по очередям:
Время повторной отправки может быть увеличено.
Статус счета
Пример запроса статуса счета
"Детская футбольная школа «Тигры»""Детская футбольная школа «Тигры»""Детская футбольная школа «Тигры»"
PayoutReceiverDataRequest
panrequired string(19) Номер банковской карты
receiverFirstName string(64) Имя получателя
receiverLastName string(64) Фамилия получателя
Поле Тип или константа Описание
phonerequired number(11..13) Номер телефона
flags array of strings Дополнительные флаги для операции. Поддерживается значение INIT, которое включает двухшаговый сценарий выплаты на СБП. В случае передачи флага нужно будет дополнительно отправить запрос подтверждения выплаты
Завершение выплаты
Пример завершения выплаты





