Вопросы
bss@qiwi.com
NAV Navbar
Примеры

Общие сведения

Редактировать на GitHub

API выплат на кошельки предназначено для платежных агентов КИВИ Банк (АО), позволяет зачислять деньги на кошельки пользователей (балансы учетных записей клиентов в системе QIWI Wallet).

Что позволяет протокол

  1. Переводить деньги клиентам сервиса QIWI Кошелек — запрос pay.
  2. Проверить текущий статус транзакции перевода — запрос status.
  3. Проверять возможность проведения платежа — запрос check-deposit-possible.
  4. Проверять существование клиентов в сервисе QIWI Кошелек — запрос check-user.
  5. Следить за балансом на агентском счете для выплат — запрос ping.

Как это работает

  1. Пользователь передает вам сумму пополнения и номер QIWI Кошелька, который нужно пополнить.
  2. Вы отправляете запрос в Top-Up API QIWI Кошелька на проверку возможности проведения платежа.
  3. Вы отправляете запрос в Top-Up API QIWI Кошелька на пополнение этого кошелька.
  4. Вы проверяете текущий статус платежа. Платеж должен принять финальный статус.
  5. При успешном финальном статусе платежа средства автоматически перечисляются на баланс кошелька пользователя с вашего агентского счета.
  6. При неуспешном финальном статусе платежа вы возвращаете средства клиенту.

По вопросам интеграции и сотрудничества пишите на bss@qiwi.com.

Формат взаимодействия

Взаимодействие происходит посредством пересылки запросов и ответов на них системы QIWI Wallet. Запросы и ответы – XML-документы в кодировке UTF-8.

В API используются только HTTP POST-запросы, XML-документ помещается в теле HTTP-запроса. Используется только HTTPS-протокол.

Справка по формату значений тегов и атрибутов XML.

Запросы в производственной среде отправляются по протоколу HTTPS на URL:

https://api.qiwi.com/xml/topup.jsp

При использовании аутентификации по клиентскому сертификату запросы в производственной среде отправляются по протоколу HTTPS на URL:

https://private-api.qiwi.com/xml/topup.jsp

Необходимо проверять подлинность сервера QIWI с помощью цепочки сертификации и не устанавливать соединение, если проверка не пройдет успешно.

Аутентификация запросов выполняется по логину и паролю, помещаемым в XML-тегах terminal-id и extra name="password", соответственно. Логин и пароль выдаются при подключении к системе QIWI Wallet. Смена пароля выполняется через сотрудников КИВИ Банк (АО) или сотрудников уполномоченного представителя КИВИ Банк (АО).

Для повышения безопасности информационного обмена также может использоваться аутентификация по цифровой подписи или по клиентскому сертификату.

Единственным признаком, на основе которого вы можете принимать решение о успешности или неуспешности выполнения платежа на своей стороне, является статус транзакции в системе QIWI Wallet. Как только вы получили для вашего платежа идентификатор транзакции txn_id в системе QIWI Wallet, вы можете проверить статус транзакции методом Проверка статуса платежа.

Каждому платежу (набору реквизитов: сумма, валюта, идентификатор клиента в системе QIWI Wallet, идентификатор сервиса) вы должны присваивать уникальный идентификатор.

Сценарий пополнения QIWI Кошелька отображен на диаграмме:

sequenceDiagram participant Agent as Агент participant qb as Система QIWI Wallet Agent->>qb:Проверка возможности
проведения платежа
(запрос "check-deposit-possible") qb->>Agent:Ответ alt Проведение платежа возможно Agent->>qb:Пополнение учетной записи Клиента
(запрос "pay") qb->>qb:Создание кошелька
при отсутствии учетной записи qb->>Agent:Ответ (статус платежа или ошибка) Agent->>Agent:Финальный статус платежа? alt Если финальный статус не получен loop Цикл до получения финального статуса Agent->>qb:Проверка статуса платежа пополнения
(запрос "status") qb->>Agent:Ответ (текущий статус платежа) end end alt Успех / Финал qb->>qb:Зачисление средств на кошелек Клиента end alt Неуспех / Финал Agent->>Agent:Возврат средств Клиенту end end

Логическая последовательность операций при взаимодействии с системой QIWI Wallet должна соответствовать блок-схеме:

graph TB ST(Начало пополнения учетной записи Клиента) --> A A[Проверка возможности проведения платежа] --> B{Проведение
платежа
возможно?} B -->|да| C{Учетная запись
существует?} B -->|нет| G[[Платеж НЕ проведен]] C -->|нет| H{Создать Клиента
и зарегистрировать платеж?} C -->|да| K H -->|да| K[Пополнение учетной записи Клиента] H -->|нет, если Клиент не найден,
то платеж не проводить| G K -->KN{Сетевая ошибка?} KN & KER -->|да| KW([Ожидание >= 10 минут]) KER -->|нет| PFS KN -->|нет| KER{Ошибка обработки запроса?} PFS -->|final-status=true| RS{Атрибут status?} PFS -->|final-status=false| MR KW --> MR[Проверка статуса платежа] RS -->|> 100| G RS -->|=60| X[[Платеж проведен]] MR --> MER{Сетевая ошибка?} MER -->|нет| MW{Ошибка обработки запроса?} MW & MER -->|да| KW MW -->|нет| PT{В ответе есть
тег payment с
номером транзакции txn_id?} PT -->|да| PFS{Атрибут final-status?} PT -->|нет| KW

Аутентификация по SSL

Редактировать на GitHub

Помимо аутентификации по логину и паролю, может быть использована аутентификация по сертификатам, а также электронная цифровая подпись.

Аутентификация по цифровой подписи

Для аутентификации по цифровой подписи Контрагент должен создать пару RSA-ключей, например, с помощью утилиты OpenSSL. Размер ключа должен быть 2048 бит, ключ должен быть закодирован в BASE64.

Как создать ключи

openssl genrsa -out private.key 2048

Далее введите пароль и подтвердите:

Enter pass phrase for private.key:

В папке выполнения команды будет создан файл с приватным ключом: private.key.

openssl rsa -in private.key -pubout -out public.key

Как подписывать запросы

POST /xml/topup.jsp HTTP/1.1
Content-Type: application/xml
Host: api.qiwi.com
X-Digital-Sign: XXXXXXXX
X-Digital-Sign-Alg: SHA1withRSA

  1. Для каждого XML-пакета вычисляется хэш от текста XML-запроса с использованием выбранного алгоритма MD5 / SHA1, подписывается сохраненным закрытым ключом и кодируется по схеме Base64. Таким образом формируется ЭЦП пакета.
  2. В заголовке HTTP запроса передаются следующие параметры для выполнения авторизации и проверки целостности данных пакета:
    • X-Digital-Sign – ЭЦП пакета;
    • X-Digital-Sign-Alg – алгоритм вычисления ЭЦП, выбранный для вычисления хеша. Поддерживаются алгоритмы:
      • MD5withRSA
      • SHA1withRSA

Аутентификация по клиентскому сертификату

Для аутентификации по клиентскому сертификату Контрагенту необходимо создать, а затем передать запрос на сертификат и открытый ключ в QIWI.

1. Создание CSR-запроса на сертификат

Запрос на сертификат генерируется одновременно с закрытым ключом, например, с помощью утилиты OpenSSL:

openssl req -new -nodes -batch -subj "/C=RU/ST=Russia/L=Moscow/O=QIWI/emailAddress=mail@qiwi.ru" -newkey rsa:2048 -keyout private.key -out cert_request.csr

В запросе Контрагент указывает свои данные: язык, страну, город, название организации и email. В примере запроса указаны данные QIWI.

В папке, в которой была выполнена команда, будет создан файл cert_request.csr и файл закрытого ключа private.key.

Далее формируется открытый ключ, соответствующий закрытому. Выполните команду:

openssl rsa -in private.key -pubout -out public.key

2. Получение сертификата

Открытый ключ и запрос на сертификат необходимо передать менеджеру QIWI. Менеджер возвращает Контрагенту СА-сертификат и клиентский сертификат, сформированный в ответ на запрос.

3. Отправка запросов

Запросы к API должны отправляться по адресу:

https://private-api.qiwi.com/xml/topup.jsp

Пример запроса с сертификатом:

user@pc:~/station$ openssl s_client -connect private-api.qiwi.com/xml/topup.jsp:443 -showcerts -CAfile ./CA/our_CA -cert ./my_cert -key ./private_key.pem

Пополнение баланса QIWI Кошелька

Редактировать на GitHub

Запрос используется для перевода средств с агентского счета на счет клиента в системе QIWI Wallet. Перед выполнением запроса необходимо проверить возможность проведения платежа.

Вы должны указывать тип средств, которые получены Контрагентом от клиента – наличные или безналичные средства, в параметре запроса extra name="income_wire_transfer".

Если клиент с указанным номером кошелька не существует в системе QIWI Wallet и проведение платежа возможно, то клиент будет создан в момент регистрации платежа.

После успешного выполнения запроса платёж начинает жизненный цикл в системе QIWI Wallet. Каждому этапу жизненного цикла соответствует определённый статус платежа. Цикл заканчивается после получения финального статуса платежа. Признак финального статуса указан в списке возвращаемых API статусов платежа.

Если в ответе на запрос выплаты получен нефинальный статус платежа, то для проверки успешного прохождения платежа вы должны периодически (но не чаще одного раза в 10 минут) выполнять запрос проверки статуса платежа до получения успешного или неуспешного финального статуса платежа.

Формат запроса

Параметры запроса

<?xml version="1.0" encoding="utf-8"?>
<request>
  <request-type>pay</request-type>
  <terminal-id>123</terminal-id>
  <extra name="password">***</extra>
  <extra name="income_wire_transfer">1</extra>
  <auth>
    <payment>
     <transaction-number>12345678</transaction-number>
     <from>
       <ccy>RUB</ccy>
     </from>
     <to>
       <amount>1115.00</amount>
       <ccy>RUB</ccy>
       <service-id>99</service-id>
       <account-number>79181234567</account-number>
     </to>
   </payment>
 </auth>
</request>
Тег Описание
request Группирующий тег. Дочерние теги содержат параметры платежа.
request-type Тип запроса (идентификатор запроса пополнения QIWI Кошелька: pay)
terminal-id Идентификатор агента в системе QIWI Wallet
extra name="password" Экстра-поле, содержащее пароль для аутентификации в системе QIWI Wallet
extra name="income_wire_transfer" Экстра-поле, содержащее целочисленный признак безналичных (1) или наличных (0) средств, полученных от Клиента
auth Группирующий тег, описывает платежные данные
payment Группирующий тег, описывает единичный платеж. В запросе может присутствовать только один тег payment.
transaction-number Номер транзакции платежа в информационной системе агента. Его необходимо использовать при проверке статуса платежа. Номер транзакции и идентификатор terminal-id однозначно определяют платёж в системе QIWI Wallet.
from Группирующий тег, содержит информацию о сумме, полученной агентом от клиента
from/ccy Валюта счета агента, с которого будет произведено списание денежных средств (в качестве значения используется цифровой или буквенный код валюты по ISO 4217)
from/service-id Идентификатор источника (канала) пополнения (необязательный параметр). Параметр используется в случае необходимости разделения потоков пополнения QIWI Кошельков, сохраняя единый баланс агента.
to Группирующий тег, содержит информацию о платеже
to/amount Сумма к зачислению на баланс учетной записи Клиента в системе QIWI Wallet. Система QIWI Wallet накладывает ограничения на сумму платежа, исходя из условий на остаток денежных средств учетной записи Клиента QIWI Wallet, указанных в оферте пользователя по адресу https://static.qiwi.com/ru/doc/oferta_lk.pdf. Платежи с суммой, менее разрешенной и более разрешенной, завершатся с ошибками 241 и 242 соответственно.
to/service-id Идентификатор сервиса (константа: 99)
to/account-number Идентификатор Клиента в системе QIWI Wallet (номер телефона Клиента системы QIWI Wallet в международном формате)
to/ccy Валюта счета получателя, на который будут зачислены денежные средства (в качестве значения используется цифровой или буквенный код валюты по ISO 4217).
to/extra="comment" Экстра-поле, содержащее комментарий (необязательный параметр)

Формат ответа

При возникновении сетевых ошибок (например, таймауты при соединении или чтении ответа), HTTP-ошибок (HTTP-статус не равен 200, пустой ответ), некорректных XML-документов (например, c отсутствующими обязательными тегами и/или атрибутами) вы должны перейти к периодическому запросу статуса до получения успешного или неуспешного финального статуса платежа. Поскольку в таких случаях информация о статусе платежа не доступна, вы не должны отклонять платёж на своей стороне.

Формат ответа API зависит от того, как сервер обработал запрос:

Ответ без ошибок обработки запроса

<?xm version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false">0</result-code>
<payment status='60' txn_id='6060' transaction-number='12345678' result-code='0' message='Ok' msg='Ok' final-status='true' fatal-error='false' txn-date='02.03.2011 14:35:46'  >
  <from>
    <amount>1115.00</amount>
    <ccy>643</ccy>
  </from>
  <to>
    <service-id>99</service-id>
    <amount>1000.00</amount>
    <ccy>643</ccy>
    <account-number>79181234567</account-number>
  </to>
</payment>
<balances>
<balance code="428">0.00</balance>
<balance code="643">200.00</balance>
<balance code="840">12.20</balance>
</balances>
</response>

Если запрос обработан корректно, то в ответе возвращаются сведения о платеже в теге <payment>.

Параметры ответа:

Тег Описание Атрибуты
response Группирующий тег ответа. Отсутствуют.
result-code Код ошибки обработки запроса. fatal – логический признак фатальности ошибки обработки запроса.
payment Описание принятого платежа. statusстатус платежа в системе QIWI Wallet;
txn_id – идентификатор транзакции платежа в системе QIWI Wallet. Если не заполнен, платёж не был зарегистрирован из-за временной ошибки. Попробуйте повторить запрос позже;
transaction-number – номер транзакции платежа в информационной системе Контрагента;
result-codeкод ошибки обработки платежа;
message, msg - текстовое описание ошибки;
final-status – логический признак финального статуса платежа;
fatal-error - логический признак фатальности ошибки обработки платежа (фатальная ошибка означает, что повторный запрос с теми же реквизитами приведет к повторению той же ошибки);
txn-date – дата приема платежа в систему QIWI Wallet.
from Группирующий тег, содержит информацию о списанных средствах. Отсутствуют.
from/amount Сумма, списанная со счета Контрагента. Отсутствуют.
from/ccy Валюта счета (в качестве значения используется цифровой или буквенный код валюты по ISO 4217). Отсутствуют.
to Группирующий тег, содержит информацию о платеже. Отсутствуют.
to/amount Сумма к зачислению на баланс учетной записи Клиента в системе QIWI Wallet. Отсутствуют.
to/service-id Идентификатор сервиса, на который производится зачисление средств (константа: 99). Отсутствуют.
to/account-number Идентификатор Клиента в системе QIWI Wallet. Отсутствуют.
to/ccy Валюта платежа (цифровой или буквенный код валюты по ISO 4217). Отсутствуют.
balances Группирующий тег, содержит информацию о балансе всех активных счетов Контрагента в системе QIWI Wallet. Отсутствуют.
balances/balance Текущий баланс единичного счета Контрагента в системе QIWI Wallet code - цифровой код валюты счета (в формате ISO 4217).

Ответ с ошибками обработки запроса

Если сервер не смог обработать запрос на пополнение баланса учетной записи Клиента в системе QIWI Wallet, API возвращает ответ с кодом произошедшей ошибки. В этом случае информация о платеже отсутствует в ответе, поэтому вы должны перейти к периодическому запросу статуса, не отклоняя платёж на своей стороне.

<?xml version="1.0" encoding="utf-8"?>
<response>
  <result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>

Параметры ответа:

Тег Описание Атрибуты
result-code Код ошибки обработки запроса. fatal – логический признак фатальности ошибки обработки запроса. Фатальность ошибки означает, что повторный запрос с теми же параметрами приведет к повторению той же ошибки. Фатальные ошибки обработки запроса, как правило, вызваны ошибками конфигурирования и требуют ручного вмешательства (обращения в службу поддержки сервиса QIWI Wallet по адресу bss@qiwi.com). При появлении таких ошибок вы можете либо не приостанавливать выполнение повторных запросов, либо приостановить до устранения ошибок конфигурирования;
message, msg - текстовое описание ошибки.

Проверка статуса платежа

Редактировать на GitHub

С момента регистрации платеж проходит стадии жизненного цикла, изменяющие его статус. Каждый статус задается уникальным числовым идентификатором.

Проведение платежа считается завершенным, когда он достигает финального статуса. Значения статусов с указанием признака финальности приведены в разделе Статусы платежей.

Для проверки успешного прохождения платежа, вы должны периодически выполнять данный запрос до получения успешного или неуспешного финального статуса. Запрос позволяет получить текущий статус платежа.

Формат запроса

Параметры запроса

<?xml version="1.0" encoding="utf-8"?>
  <request>
    <request-type>pay</request-type>
    <extra name="password">XXXXXX</extra>
    <terminal-id>123</terminal-id>
    <status>
      <payment>
        <transaction-number>12345678</transaction-number>
        <to>
          <account-number>79181234567</account-number>
        </to>
      </payment>
    </status>
  </request>
Тег Описание
request Группирующий тег. Дочерние теги содержат параметры платежа.
request-type Тип запроса (равен идентификатору запроса пополнения QIWI Кошелька: pay)
terminal-id Идентификатор агента в системе QIWI Wallet
extra name="password" Экстра-поле, содержащее пароль для аутентификации в системе QIWI Wallet
status Группирующий тег, содержит список платежей, по которым необходимо получить текущий статус. Данный тег может содержать один или более тегов payment
payment Группирующий тег, содержит данные единичного платежа, статус которого запрашивается.
transaction-number Номер транзакции платежа в информационной системе Контрагента. Должен совпадать с номером, указанным при создании этого платежа. В сочетании с идентификатором Контрагента номер транзакции однозначно идентифицирует платёж в системе QIWI Wallet. Значение остается неизменным в течение жизненного цикла платежа.
to Группирующий тег, содержит информацию о платеже
to/account-number Идентификатор Клиента в системе QIWI Wallet (номер телефона Клиента системы QIWI Wallet в международном формате)

Формат ответа

При возникновении сетевых ошибок (например, таймауты при соединении или чтении ответа), HTTP-ошибок (HTTP-статус не равен 200, пустой ответ), некорректных XML-документов (например, c отсутствующими тегами и/или атрибутами) вы должны сделать повторный запрос. В таких случаях информация о статусе платежа не доступна, поэтому вы не должны отклонять платеж на своей стороне.

Формат ответа зависит от того, как сервер обработал запрос:

При возврате ответов с ошибками запроса или с нефинальными статусами платежей вы должны сделать повторный запрос проверки статуса платежа.

Ответ без ошибок обработки запроса

Если запрос обработан корректно, то в ответе возвращаются сведения о статусе платежа в теге <payment>.

<?xml version="1.0" encoding="utf-8"?>
<response>
  <result-code fatal="false">0</result-code>
  <payment status='60' transaction-number='12345678' txn_id='759640439' result-сode='0' message='' msg='' final-status='true'  fatal-error='false' txn-date='12.03.2012 14:24:38'  />
  <balances>
    <balance code="643">90.79</balance>
    <balance code="840">0.00</balance>
  </balances>
</response>

Параметры ответа:

Тег Описание Атрибуты
response Группирующий тег ответа. Отсутствуют.
result-code Код ошибки обработки запроса. fatal – логический признак фатальности ошибки обработки запроса.
payment Описание платежа, статус которого запрошен. В случае запроса статуса по нескольким платежам в ответе содержится соответствующее количество тегов payment. В случае, если запрашиваемый платеж не найден в системе QIWI Wallet, соответствующий тег payment будет отсутствовать в ответе. statusстатус платежа в системе QIWI Wallet;
txn_id – идентификатор транзакции платежа в системе QIWI Wallet;
transaction-number – номер транзакции платежа в информационной системе Контрагента;
result-codeкод ошибки обработки платежа;
message, msg - текстовое описание ошибки;
final-status – логический признак финального статуса платежа;
fatal-error - логический признак фатальности ошибки обработки платежа (фатальность ошибки означает, что повторный запрос с теми же параметрами приведет к повторению той же ошибки);
txn-date – дата приема платежа в систему QIWI Wallet.
balances Группирующий тег, содержит информацию о балансе всех активных счетов Контрагента в системе QIWI Wallet. Отсутствуют.
balances/balance Текущий баланс единичного счета Контрагента в системе QIWI Wallet. code - цифровой код валюты счета (в формате ISO 4217).

Ответ с ошибками обработки запроса

Если сервер не смог обработать запрос на получение статуса платежа, API возвращает ответ с кодом произошедшей ошибки. В этом случае информация о статусе платежа отсутствует в ответе, поэтому вы должны продолжать запросы статуса, не отклоняя платеж на своей стороне.

<?xml version="1.0" encoding="utf-8"?>
<response>
  <result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>

Параметры ответа:

Тег Описание Атрибуты
result-code Код ошибки обработки запроса fatal – логический признак фатальности ошибки обработки запроса. Фатальность ошибки означает, что повторный запрос с теми же параметрами приведет к повторению той же ошибки. Фатальные ошибки обработки запроса, как правило, вызваны ошибками конфигурирования и требуют ручного вмешательства. При появлении таких ошибок вы можете либо не приостанавливать выполнение повторных запросов, либо приостановить до устранения ошибок конфигурирования;
message, msg - текстовое описание ошибки.

Проверка возможности проведения платежа

Редактировать на GitHub

Данным запросом вы должны проверить, возможно ли проведение платежа для пополнения учетной записи клиента в системе QIWI Wallet.

Если вам необходима только проверка регистрации учетной записи, то используйте этот запрос.

Формат запроса

Параметры запроса

<?xml version="1.0" encoding="utf-8"?>
<request>
  <request-type>check-deposit-possible</request-type>
  <terminal-id>123</terminal-id>
  <extra name="password">XXXXX</extra>
  <extra name="phone">79031234567</extra>
  <extra name="income_wire_transfer">1</extra>
</request>
Тег Описание
request Группирующий тег
request-type Тип запроса (идентификатор запроса проверки возможности проведения платежа: check-deposit-possible).
terminal-id Идентификатор агента в системе QIWI Wallet.
extra name="password" Экстра-поле, содержащее пароль для аутентификации агента в системе QIWI Wallet.
extra name="phone" Экстра-поле, содержащее номер телефона клиента.
extra name="income_wire_transfer" Экстра-поле, содержащее целочисленный признак безналичных (1) или наличных (0) средств, полученных от клиента для пополнения его учетной записи в системе QIWI Wallet.
extra name="ccy" Экстра-поле, содержащее код валюты учетной записи клиента. Опциональный параметр. В случае его передачи проверяется возможность проведения платежа для пополнения учетной записи в данной валюте. В качестве значения используется цифровой или буквенный код валюты по ISO 4217.

Формат ответа

Ответ без ошибок обработки запроса

Если запрос обработан корректно, то в ответе возвращаются сведения о возможности проведения платежа.

Пример ответа - проведение платежа возможно

<?xml version="1.0" encoding="utf-8"?>
<response>
  <result-code fatal="false">0</result-code>
  <exist>1</exist>
  <deposit-possible>1</deposit-possible>
</response>

Пример ответа - проведение платежа невозможно

<?xml version="1.0" encoding="utf-8"?>
<response>
    <result-code fatal="true" message="Недостаточный статус идентификации кошелька для проведения платежа" msg="Недостаточный статус идентификации кошелька для проведения платежа">204</result-code>
    <exist>1</exist>
    <deposit-possible>0</deposit-possible>
</response>

Параметры ответа:

Тег Описание Атрибуты
result-code Код ошибки обработки запроса. fatal – логический признак фатальности ошибки обработки запроса.
exist Целочисленный флаг, указывающий на существование учетной записи клиента в системе QIWI Wallet. Флаг передается в ответе только в случае удачной обработки запроса (с кодом ошибки 0). Флаг может принимать значения:
0 – учетная запись клиента не зарегистрирована в системе QIWI Wallet (в случае если в исходном запросе указана валюта (тег <extra name="ccy">), это означает, что у клиента нет учетной записи в данной валюте);
1 – учетная запись клиента зарегистрирована в системе QIWI Wallet (в случае если в исходном запросе указана валюта (тег <extra name="ccy">), это означает, что клиент имеет учетную запись в данной валюте).
Отсутствуют.
deposit-possible Целочисленный флаг, указывающий на возможность пополнения учетной записи клиента в системе QIWI Wallet. Флаг передается в ответе только в случае удачной обработки запроса (с кодом ошибки 0). Флаг может принимать значения:
0 – учетную запись клиента нельзя пополнить указанным в запросе типом средств. Платеж будет отклонён.
1 – учетную запись клиента можно пополнить указанным в запросе типом средств.
Отсутствуют.

Ответ с ошибками обработки запроса

Если сервер не смог обработать запрос, API возвращает ответ с кодом произошедшей ошибки.

<?xml version="1.0" encoding="utf-8"?>
<response>
    <result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>

Параметры ответа:

Тег Описание Атрибуты
result-code Код ошибки обработки запроса fatal – логический признак фатальности ошибки обработки запроса;
message, msg - текстовое описание ошибки.

Проверка регистрации клиента

Редактировать на GitHub

Данным запросом вы можете до проведения платежа проверить, зарегистрирована ли учетная запись Клиента в системе QIWI Wallet.

Проверка существования учетной записи Клиента не является обязательной для регистрации платежа. При успешной регистрации платежа отсутствующая в системе QIWI Wallet учетная запись Клиента создаётся автоматически.

Формат запроса

Параметры запроса

<?xml version="1.0" encoding="utf-8"?>
<request>
  <request-type>check-user</request-type>
  <terminal-id>123</terminal-id>
  <extra name="password">XXXXX</extra>
  <extra name="phone">79031234567</extra>
  <extra name="ccy">RUB</extra>
</request>
Тег Описание
request Группирующий тег
request-type Тип запроса (идентификатор запроса проверки существования учетной записи Клиента в системе: check-user)
terminal-id Идентификатор агента в системе QIWI Wallet
extra name="password" Экстра-поле, содержащее пароль для аутентификации агента в системе QIWI Wallet
extra name="phone" Экстра-поле, содержащее номер телефона Клиента, регистрацию учетной записи которого необходимо проверить
extra name="ccy" Экстра-поле, содержащее код валюты учетной записи Клиента. Опциональный параметр. В случае его передачи проверяется наличие у Клиента учетной записи в данной валюте. В качестве значения используется цифровой или буквенный код валюты по ISO 4217.

Формат ответа

Ответ без ошибок обработки запроса

Если запрос обработан корректно, то в ответе возвращаются сведения о Клиенте.

<?xml version="1.0" encoding="utf-8"?>
<response>
  <result-code fatal="false">0</result-code>
  <exist>1</exist>
</response>

Параметры ответа:

Тег Описание Атрибуты
result-code Код ошибки обработки запроса. fatal – логический признак фатальности ошибки обработки запроса.
exist Флаг, указывающий на существование учетной записи Клиента в системе QIWI Wallet. Флаг передается в ответе только в случае удачной обработки запроса (с кодом ошибки 0). Флаг может принимать значения:
0 – учетная запись Клиента не зарегистрирована в системе QIWI Wallet (в случае если в исходном запросе указана валюта (тег <extra name="ccy">), это означает, что у Клиента нет учетной записи в данной валюте);
1 – учетная запись Клиента зарегистрирована в системе QIWI Wallet (в случае если в исходном запросе указана валюта (тег <extra name="ccy">), это означает, что Клиент имеет учетную запись в данной валюте).
Отсутствуют.

Ответ с ошибками обработки запроса

Если сервер не смог обработать запрос, API возвращает ответ с кодом произошедшей ошибки.

<?xml version="1.0" encoding="utf-8"?>
<response>
  <result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>

Параметры ответа:

Тег Описание Атрибуты
result-code Код ошибки обработки запроса fatal – логический признак фатальности ошибки обработки запроса;
message, msg - текстовое описание ошибки.

Запрос баланса контрагента

Редактировать на GitHub

Данный запрос возвращает текущий баланс по агентскому договору в сервисе QIWI Кошелек.

Формат запроса

Параметры запроса

<?xml version="1.0" encoding="utf-8"?>
<request>
<request-type>ping</request-type>
<terminal-id>44</terminal-id>
<extra name="password">password</extra>
</request>
Параметр Описание
request Группирующий тег
request-type Тип запроса (идентификатор запроса баланса: ping)
terminal-id Идентификатор агента в системе QIWI Wallet
extra name="password" Экстра-поле, содержащее пароль для аутентификации в системе QIWI Wallet

Формат ответа

Ответ без ошибок обработки запроса

Если запрос обработан корректно, то в ответе возвращаются сведения об агентском балансе.

<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false">0</result-code>
<balances>
  <balance code="428">100.00</balance>
  <balance code="643">200.26</balance>
  <balance code="840">300.00</balance>
</balances>
</response>

Параметры ответа:

Параметр Описание Атрибуты
response Группирующий тег ответа. Отсутствуют.
result-code Код ошибки обработки запроса. fatal - логический признак фатальности ошибки обработки платежа.
balances Группирующий тег, содержит информацию о балансе всех активных счетов Контрагента в системе QIWI Wallet. Отсутствуют.
balance Текущий баланс единичного счета Контрагента в системе QIWI Wallet. code - цифровой код валюты счета (в формате ISO 4217).

Ответ с ошибками обработки запроса

Если сервер не смог обработать запрос, API возвращает ответ с кодом произошедшей ошибки.

<?xml version="1.0" encoding="utf-8"?>
<response>
  <result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>

Параметры ответа:

Тег Описание Атрибуты
result-code Код ошибки обработки запроса fatal – логический признак фатальности ошибки обработки запроса;
message, msg - текстовое описание ошибки.

Статусы платежей

Редактировать на GitHub

Для платежных запросов (пополнение кошелька, проверка статуса платежа) API возвращает статус платежа в атрибуте status тега <payment>.

Финальный статус означает, что жизненный цикл платежа в сервисе QIWI Wallet завершен и его статус больше не изменится.

API возвращает статусы из следующих диапазонов:

Статус Описание Финальный статус
-1 Платеж не был зарегистрирован из-за временной ошибки. Попробуйте повторить запрос позже. Если ранее на запрос пополнения баланса вы получили статус отличный от -1, то продолжайте запрашивать статус платежа, до получения финального статуса  
0-49 Платеж принят, но ждет подтверждения со стороны системы QIWI Wallet. Свяжитесь с техническими специалистами системы QIWI Wallet: bss@qiwi.com -
50-59 Платеж находится в проведении. Средства списаны со счета Контрагента. -
50 Платеж принят в обработку -
52 Средства зачисляются на счет Клиента -
60 Платеж проведен. Успех +
> 100 Ошибка проведения платежа. Средства возвращены на баланс Контрагента. Особые статусы см. ниже +
150 Платеж не принят +
151 Ошибка авторизации платежа +
160 Платеж не проведен или отменен +

Коды ошибок обработки платежа

Для платежных запросов (пополнение кошелька, проверка статуса платежа) API возвращает информационный код ошибки обработки платежа в атрибуте result-code тега <payment>.

Код ошибки Описание ошибки
0 Ошибок нет
155 Запрещен прием платежей в пользу данного сервиса (тег to/service-id в запросе проведения платежа должен быть равен 99)
204 Недостаточный статус идентификации кошелька для проведения платежа
215 Запрос проведения платежа содержит уже существующий номер транзакции платежа (transaction-number), но другие реквизиты платежа. Необходимо привести реквизиты платежа в соответствие данному номеру транзакции платежа.
220 Недостаточно средств на счете для проведения платежа
241 Сумма платежа меньше допустимой
242 Сумма платежа больше допустимой
298 Учетная запись Клиента с введенным номером телефона не может быть зарегистрирована в системе QIWI Wallet. Ошибочный номер телефона Клиента
300 Неизвестная ошибка обработки платежа. Обратитесь к техническим специалистам системы QIWI Wallet: bss@qiwi.com
316 Попытка авторизации заблокированного Контрагента
319 Запрет на пополнение учетной записи данного номера телефона
700 Превышен месячный лимит на операции
702 Превышен лимит на остаток учетной записи Клиента в системе QIWI Wallet

При появлении не описанных в данной таблице ошибок свяжитесь с техническими специалистами системы QIWI Wallet: bss@qiwi.com.

Коды ошибок обработки запроса

Данные коды возвращаются в теге <result-code> ответа API. Ошибки с кодом > 0 возвращаются, если сервер не смог обработать запрос (в ответе отсутствуют запрашиваемые данные).

Код ошибки Описание ошибки
0 Ошибок нет
13 Повторите запрос через минуту
150 Ошибка авторизации. Уточните логин и пароль, а затем повторите запрос
300 Неизвестная ошибка. Повторите запрос
339 Ограничение по IP адресу

При появлении не описанных в данной таблице ошибок свяжитесь с техническими специалистами системы QIWI Wallet: bss@qiwi.com.

Формат XML-данных

Тег/атрибут Тип данных
request-type Строка буквенных символов
terminal-id Целое положительное число
transaction-number Целое положительное число до 20 разрядов
amount Дробное число (2 знака после запятой, разделителем является точка)
to/service-id Константа (99)
from/service-id Целое положительное число
to/account-number Номер телефона в международном формате без лидирующего знака +
final-status Логическое значение (true/false)
fatal-error Логическое значение (true/false)
txn-date Временная метка в следующем формате:
dd.MM.yyyy HH:mm:ss
balance Дробное число (2 знака после запятой, разделителем является точка)
fatal Логическое значение (true/false)
exist 0/1
income_wire_transfer 0/1
"password" Строка символов
"comment" Строка символов (до 1000 символов)
"phone" Номер телефона в международном формате без лидирующего знака +
"deposit-possible" 0/1