NAV

Введение

Последнее обновление: 2017-08-01 | Предложить свои правки на GitHub

API QIWI Кошелька позволяет автоматизировать получение информации о вашем счёте в сервисе Visa QIWI Кошелек и проводить операции с его помощью.

Методы API доступны после регистрации пользователя в сервисе Visa QIWI Кошелек.

Служебные данные

Параметр Описание Тип
Bearer token Токен для доступа к вашему QIWI кошельку по API. Действие токена заканчивается через 1 месяц после выпуска. Одновременно может действовать только один токен. String

Доступ к API

Для успешного вызова методов API необходимы:

Получение OAuth-токена

API QIWI Кошелька использует открытый протокол OAuth 2.0. Согласно протоколу, пользователь авторизуется или регистрируется на сайте https://qiwi.com и запрашивает токен OAuth 2.0 Bearer с правом выполнения определённых действий. Выпуск токена подтверждается одноразовым кодом из СМС. При выпуске токена выберите нужные права доступа:

  1. Откройте в браузере страницу https://qiwi.com/api. Для этого потребуется авторизоваться или зарегистрироваться в сервисе Visa QIWI Кошелек. Token Issue
  2. Нажмите Выпустить новый токен. Во всплывающем окне выберите разрешения на операции с токеном:
    • Запрос информации о профиле кошелька - разрешает выполнение запросов профиля пользователя
    • Запрос баланса кошелька - разрешает выполнение запросов баланса
    • Просмотр истории платежей - разрешает выполнение запросов истории платежей
    • Проведение платежей без SMS - разрешает выполнение платежных запросов без подтверждения по SMS (независимо от настроек https://qiwi.com/settings/options/security.action) Token Scopes
  3. Нажмите Продолжить и подтвердите выпуск токена кодом из SMS-сообщения. Token Accept
  4. Скопируйте строку токена и сохраните в безопасном месте. Используйте токен для запросов к API QIWI Кошелька.

Token

Токен действует в течение 1 месяца с момента выпуска. Вы можете заблокировать токен, не дожидаясь окончания срока его действия, на странице https://qiwi.com/settings/mine.action.

Пример вызова API

user@server:~$ curl "адрес сервера"
  --header "Authorization: Bearer jMyN22DQxMjM6NDUzRmRnZDQ0Mw11212e"

Полученный токен следует передавать в заголовке Authorization при каждом вызове API, указывая тип токена Bearer перед его значением. Пример получения такого заголовка:

U1QtOTkwMTAyLWNud3FpdWhmbzg3M

Authorization: Bearer U1QtOTkwMTAyLWNud3FpdWhmbzg3M

Профиль пользователя

user@server:~$ curl "https://edge.qiwi.com/person-profile/v1/profile/current"
  --header "Accept: application/json" 
  --header "Content-Type: application/json"
  --header "Authorization: Bearer 5c4b25xx93aa435d9cb8cd17480356f9"
GET /person-profile/v1/profile/current HTTP/1.1
Accept: application/json
Authorization: Bearer 5c4b25xx93aa435d9cb8cd17480356f9
Content-type: application/json
Host: edge.qiwi.com

Тип запроса - GET.

URL запроса:

https://edge.qiwi.com/person-profile/v1/profile/current?<parameters>

Заголовки запроса:

В заголовке Authorization указывается токен доступа.

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

Параметр Тип Описание
authInfoEnabled Boolean Логический признак выгрузки настроек авторизации пользователя. По умолчанию true
contractInfoEnabled Boolean Логический признак выгрузки данных о кошельке пользователя. По умолчанию true
userInfoEnabled Boolean Логический признак выгрузки прочих пользовательских данных. По умолчанию true

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

{
  "authInfo": {
    "boundEmail": "m@ya.ru",
    "ip": "81.210.201.22",
    "lastLoginDate": "2017-07-27T06:51:06.099Z",
    "mobilePinInfo": {
      "lastMobilePinChange": "2017-07-13T11:22:06.099Z",
      "mobilePinUsed": true,
      "nextMobilePinChange": "2017-11-27T06:51:06.099Z"
    },
    "passInfo": {
      "lastPassChange": "2017-07-21T09:25:06.099Z",
      "nextPassChange": "2017-08-21T09:25:06.099Z",
      "passwordUsed": true
    },
    "personId": 79683851815,
    "pinInfo": {
      "pinUsed": true
    },
    "registrationDate": "2017-01-07T16:51:06.100Z"
  },
  "contractInfo": {
    "blocked": false,
    "contractId": 79683851815,
    "creationDate": "2017-01-07T16:51:06.100Z",
    "features": [
      ...
    ],
    "identificationInfo": [
      {
        "bankAlias": "QIWI",
        "identificationLevel": "SIMPLE"
      }
    ]
  },
  "userInfo": {
    "defaultPayCurrency": 643,
    "defaultPaySource": 7,
    "email": null,
    "firstTxnId": 10807097143,
    "language": "string",
    "operator": "Beeline",
    "phoneHash": "lgsco87234f0287",
    "promoEnabled": null
  }
}

Успешный ответ содержит данные о профиле пользователя:

Параметр Тип Описание
authInfo Object Настройки авторизации пользователя
authInfo.personId Number Номер кошелька пользователя
authInfo.registrationDate String Дата/время регистрации QIWI Кошелька пользователя (через сайт либо мобильноое приложение, либо другим способом)
authInfo.boundEmail String E-mail, привязанный к кошельку. Если отсутствует, то null
authInfo.ip String IP-адрес последней пользовательской сессии
authInfo.lastLoginDate String Дата/время последней сессии в QIWI Кошельке
authInfo.mobilePinInfo Object Данные о PIN-коде мобильного приложения QIWI Кошелька
mobilePinInfo.mobilePinUsed Boolean Логический признак использования PIN-кода (фактически означает, что мобильное приложение используется)
mobilePinInfo.lastMobilePinChange String Дата/время последнего изменения PIN-кода мобильного приложения QIWI Кошелька
mobilePinInfo.nextMobilePinChange String Дата/время следующего (планового) изменения PIN-кода мобильного приложения QIWI Кошелька
passInfo Object Данные о пароле к сайту qiwi.com
passInfo.passwordUsed Boolean Логический признак использования пароля (фактически означает, что пользователь заходит на сайт)
passInfo.lastPassChange String Дата/время последнего изменения пароля сайта qiwi.com
passInfo.nextPassChange String Дата/время следующего (планового) изменения пароля сайта qiwi.com
pinInfo Object Данные о PIN-коде к приложению QIWI Кошелька на QIWI терминалах
pinInfo.pinUsed Boolean Логический признак использования PIN-кода (фактически означает, что пользователь заходил в приложение)
contractInfo Object Информация о кошельке пользователя
contractInfo.blocked Boolean Логический признак блокировки кошелька
contractInfo.contractId Number Номер кошелька пользователя
contractInfo.creationDate String Дата/время создания QIWI Кошелька пользователя (через сайт либо мобильноое приложение, либо при первом пополнении, либо другим способом)
contractInfo.features Array[Object] Служебная информация
contractInfo.identificationInfo Array[Object] Данные об идентификации пользователя.
identificationInfo[].bankAlias String Акроним системы, в которой пользователь получил идентификацию:
QIWI - QIWI Кошелек.
identificationInfo[].identificationLevel Уровень идентификации:
ANONYMOUS - без идентификации;
SIMPLE, VERIFIED - упрощенная идентификация;
FULL - полная идентификация.
 
userInfo Object Прочие пользовательские данные
userInfo.defaultPayCurrency Number Код валюты баланса кошелька по умолчанию (number-3 ISO-4217)
userInfo.defaultPaySource Number Служебная информация
userInfo.email String E-mail пользователя
userInfo.firstTxnId Number Номер первой транзакции пользователя после регистрации
userInfo.language String Служебная информация
userInfo.operator String Название мобильного оператора номера пользователя
userInfo.phoneHash String Служебная информация
userInfo.promoEnabled String Служебная информация

История платежей

История платежей и пополнений вашего кошелька.

Тип запроса - GET.

Пример 1. Последние 10 платежей

user@server:~$ curl "https://edge.qiwi.com/payment-history/v1/persons/79112223344/payments?rows=10"
  --header "Accept: application/json" 
  --header "Content-Type: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"

Пример 2. Платежи за 10.05.2017

user@server:~$ curl "https://edge.qiwi.com/payment-history/v1/persons/79112223344/payments?rows=50&startDate=2017-05-10T00%3A00%3A00Z&endDate=2017-05-10T23%3A59%3A59Z"
  --header "Accept: application/json" 
  --header "Content-Type: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"

Пример 3. Продолжение списка платежей (в предыдущем запросе истории возвращены параметры nextTxnId=9103121 и nextTxnDate=2017-05-11T12:35:23+03:00)

user@server:~$ curl "https://edge.qiwi.com/payment-history/v1/persons/79112223344/payments?rows=50&nextTxnId=9103121&nextTxnDate=2017-05-11T12:35:23Z"
  --header "Accept: application/json" 
  --header "Content-Type: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"
Пример 1. Последние 10 платежей с рублевого баланса и с привязанной карты
GET /payment-history/v1/persons/79112223344/payments?rows=10&operation=OUT&sources[0]=QW_RUB&sources[1]=CARD HTTP/1.1
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Content-type: application/json
Host: edge.qiwi.com
Пример 2. Платежи за 10.05.2017
GET /payment-history/v1/persons/79112223344/payments?rows=50&startDate=2017-05-10T00%3A00%3A00Z&endDate=2017-05-10T23%3A59%3A59Z HTTP/1.1
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Content-type: application/json
Host: edge.qiwi.com
Пример 3. Продолжение списка платежей 

(в предыдущем запросе истории возвращены параметры nextTxnId=9103121 и nextTxnDate=2017-05-11T12:35:23)
GET /payment-history/v1/persons/79112223344/payments?rows=50&nextTxnId=9103121&nextTxnDate=2017-05-11T12%3A35%3A23Z HTTP/1.1
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Content-type: application/json
Host: edge.qiwi.com

URL запроса:

https://edge.qiwi.com/payment-history/v1/persons/<wallet>/payments?<parameters>

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

Заголовки запроса:

В заголовке Authorization указывается токен доступа.

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

Параметр Тип Описание
rows Integer Число платежей в ответе, для разбивки отчета на части. Целое число от 1 до 50. Обязательный параметр
operation String Тип операций в отчете, для отбора. Допустимые значения:
ALL - все операции,
IN - только пополнения,
OUT - только платежи,
QIWI_CARD - только платежи по картам QIWI (QVC, QVP).
По умолчанию ALL
sources Array[String] Источники платежа, для отбора. Каждый источник задается как отдельный параметр и нумеруется элементом массива, начиная с нуля (sources[0], sources[1] и т.д.). Допустимые значения:
QW_RUB - рублевый счет кошелька,
QW_USD - счет кошелька в долларах,
QW_EUR - счет кошелька в евро,
CARD - привязанные и непривязанные к кошельку банковские карты,
MK - счет мобильного оператора. Если не указаны, учитываются все источники
startDate DateTime URL-encoded Начальная дата поиска платежей (формат ГГГГ-ММ-ДДTчч:мм:ссZ). По умолчанию, равен вчерашней дате. Используется только вместе с endDate
endDate DateTime URL-encoded Конечная дата поиска платежей (формат ГГГГ-ММ-ДДTчч:мм:ссZ). По умолчанию, равен текущей дате. Используется только вместе с startDate
nextTxnDate DateTime URL-encoded Дата транзакции (формат ГГГГ-ММ-ДДTчч:мм:ссZ), для отсчета от предыдущего списка (см. параметр nextTxnDate в ответе). Используется только вместе с nextTxnId
nextTxnId Long Номер предшествующей транзакции, для отсчета от предыдущего списка (см. параметр nextTxnId в ответе). Используется только вместе с nextTxnDate

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

{"data":
  [{
    "txnId":9309,
    "personId":79112223344,
    "date":"2017-01-21T11:41:07+03:00",
    "errorCode":0,
    "error":null,
    "status":"SUCCESS",
    "type":"OUT",
    "statusText":"Успешно",
    "trmTxnId":"1489826461807",
    "account":"0003***",
    "sum":{
        "amount":70,
        "currency":"RUB"
        },
    "commission":{
        "amount":0,
        "currency":"RUB"
        },
    "total":{
        "amount":70,
        "currency":"RUB"
        },
    "provider":{
      ...
    },
    "source": {},
    "comment":null,
    "currencyRate":1,
    "extras":null,
    "chequeReady":true,
    "bankDocumentAvailable":false,
    "bankDocumentReady":false,
    "repeatPaymentEnabled":false,
    "favoritePaymentEnabled": true,
    "regularPaymentEnabled": true
  }],
  "nextTxnId":9001,
  "nextTxnDate":"2017-01-31T15:24:10+03:00"
}

Успешный ответ содержит список платежей из истории кошелька, соответствующих заданному фильтру:

Параметр Тип Описание
data Array[Object] Массив платежей.
Число платежей равно параметру rows из запроса
data[].txnId Integer ID транзакции в процессинге
data[].personId Integer Номер кошелька
data[].date DateTime Дата/время платежа (в формате ГГГГ-ММ-ДДTчч:мм:ссTMZ)
data[].errorCode Number(Integer) Код ошибки платежа
data[].error String Описание ошибки
data[].status String Статус платежа. Возможные значения:
WAITING - платеж проводится,
SUCCESS - успешный платеж,
ERROR - ошибка платежа.
data[].type String Тип платежа (соответствует параметру запроса operation)
data[].statusText String Описание статуса платежа
data[].trmTxnId String Клиентский ID транзакции
data[].account String Номер счета получателя
data[].sum Object Данные о сумме платежа. Параметры:
sum.amount Number(Decimal) сумма,
sum.currency String валюта
data[].commission Object Данные о комиссии платежа. Параметры:
commission.amount Number(Decimal) сумма,
commission.currency String валюта
data[].total Object Данные об общей сумме платежа. Параметры:
total.amount Number(Decimal) сумма,
total.currency String валюта
data[].provider Object Данные о провайдере. Параметры:
provider.id Integer ID провайдера в процессинге,
provider.shortName String краткое наименование провайдера,
provider.longName String развернутое наименование провайдера,
provider.logoUrl String ссылка на логотип провайдера,
provider.description String описание провайдера (HTML),
provider.keys String список ключевых слов,
provider.siteUrl String сайт провайдера
data[].comment String Комментарий к платежу
data[].currencyRate Number(Decimal) Курс конвертации (если применяется в транзакции)
data[].extras Object Служебная информация
data[].chequeReady Boolean Специальное поле
data[].bankDocumentAvailable Boolean Специальное поле
data[].bankDocumentReady Boolean Специальное поле
data[].repeatPaymentEnabled Boolean Специальное поле
data[].favoritePaymentEnabled Boolean Специальное поле
data[].regularPaymentEnabled Boolean Специальное поле
nextTxnId Number(Integer) ID следующей транзакции в полном списке
nextTxnDate DateTime Дата/время следующей транзакции в полном списке

Статистика платежей

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

user@server:~$ curl "https://edge.qiwi.com/payment-history/v1/persons/79112223344/payments/total?startDate=2017-03-01T00%3A00%3A00Z&endDate=2017-03-31T11%3A44%3A15Z"
  --header "Accept: application/json" 
  --header "Content-Type: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"
GET /payment-history/v1/persons/79112223344/payments/total?startDate=2017-03-01T00%3A00%3A00Z&endDate=2017-03-31T11%3A44%3A15Z HTTP/1.1
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Content-type: application/json
Host: edge.qiwi.com

Тип запроса - GET.

URL запроса:

https://edge.qiwi.com/payment-history/v1/persons/<wallet>/payments/total?<parameters>

Заголовки запроса:

В заголовке Authorization указывается токен доступа.

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

Параметр Тип Описание  
startDate DateTime URL-encoded Начальная дата периода статистики (в формате ГГГГ-ММ-ДДTчч:мм:ссZ). Обязательный параметр  
endDate DateTime URL-encoded Конечная дата периода статистики (в формате ГГГГ-ММ-ДДTчч:мм:ссZ). Обязательный параметр  
operation String Тип операций, учитываемых при подсчете статистики. Допустимые значения:
ALL - все операции,
IN - только пополнения,
OUT - только платежи,
QIWI_CARD - только платежи по картам QIWI (QVC, QVP).
По умолчанию ALL.
Нет
sources Array[String] Источники платежа, учитываемые при подсчете статистики. Каждый источник задается как отдельный параметр и нумеруется элементом массива, начиная с нуля (sources[0], sources[1] и т.д.). Допустимые значения:
QW_RUB - рублевый счет кошелька,
QW_USD - счет кошелька в долларах,
QW_EUR - счет кошелька в евро,
CARD - привязанные и непривязанные к кошельку банковские карты,
MK - счет мобильного оператора. Если не указан, учитываются все источники платежа.
Нет
{
 "incomingTotal":[
  {
  "amount":3500,
  "currency":"RUB"
  }],
 "outgoingTotal":[
  {
  "amount":3497.5,
  "currency":"RUB"
  }]
}

Успешный ответ содержит статистику платежей за соответствующий период:

Параметр Тип Описание
incomingTotal Array[Object] Данные о входящих платежах (пополнениях), отдельно по каждой валюте
incomingTotal[].amount Number(Decimal) Сумма пополнений за период
incomingTotal[].currency String Валюта пополнений
outgoingTotal Array[Object] Данные об исходящих платежах, отдельно по каждой валюте
outgoingTotal[].amount Number(Decimal) Сумма платежей за период
outgoingTotal[].currency String Валюта платежей

Баланс QIWI Кошелька

user@server:~$ curl "https://edge.qiwi.com/funding-sources/v1/accounts/current"
  --header "Accept: application/json" 
  --header "Content-Type: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"
GET /funding-sources/v1/accounts/current HTTP/1.1
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Content-type: application/json
Host: edge.qiwi.com

Тип запроса - GET.

URL запроса:

https://edge.qiwi.com/funding-sources/v1/accounts/current

Заголовки запроса:

В заголовке Authorization указывается токен доступа.

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

{
    "accounts": [
        {
            "alias": "mc_beeline_rub",
            "fsAlias": "qb_mc_beeline",
            "title": "MC",
            "type": {
                "id": "MC",
                "title": "Счет мобильного кошелька"
            },
            "hasBalance": false,
            "balance": null,
            "currency": 643
        },
        {
            "alias": "qw_wallet_rub",
            "fsAlias": "qb_wallet",
            "title": "WALLET",
            "type": {
                "id": "WALLET",
                "title": "Visa QIWI Wallet"
            },
            "hasBalance": true,
            "balance": {
                "amount": 8.74,
                "currency": 643
            },
            "currency": 643
        }
    ]
}

Успешный ответ содержит список счетов для фондирования платежей и их текущие балансы:

Параметр Тип Описание
accounts Array[Object] Массив балансов
accounts[].alias String Псевдоним пользовательского баланса
accounts[].fsAlias String Псевдоним банковского баланса
accounts[].title String Название соответствующего счета кошелька
accounts[].hasBalance Boolean Логический признак реального баланса в системе QIWI Кошелек (не привязанная карта, не счет мобильного телефона и т.д.)
accounts[].currency Number Код валюты баланса (number-3 ISO-4217). Возвращаются балансы в следующих валютах: 643 - российский рубль, 840 - американский доллар, 978 - евро
accounts[].type Object Сведения о счете
type.id, type.title String Описание счета
accounts[].balance Object Сведения о балансе данного счета
balance.amount Number Текущий баланс данного счета
balance.currency Number Код валюты баланса (number-3 ISO-4217)

Платежи

Комиссионные тарифы

Стандартные тарифы

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

Тип запроса - GET. Запрос не требует токена доступа.

URL запроса:

https://edge.qiwi.com/sinap/providers/{id}/form

user@server:~$ curl "https://edge.qiwi.com/sinap/providers/99/form"
  --header "Content-Type: application/json"
  --header "Accept: application/json"
  --header "User-Agent: ***"
GET /sinap/providers/99/form HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: edge.qiwi.com
Origin: qiwi.com
User-Agent: ****

Заголовки запроса:

Параметр URL запроса:

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

{
  "content": {
      "terms": {
         "commission": {
                "ranges": [{
                     "bound": 0,
                     "fixed": 50.0,
                     "rate": 0.02
                }]
           }
       }
    }
}

Успешный ответ содержит фрагмент с данными о комиссии:

Параметр Тип Описание
commission Object Объект, содержащий данные об условиях комиссий.
commission.ranges Array[Object] Массив объектов с граничными условиями комиссий. Каждый объект содержит параметры:
ranges[].bound Number сумма платежа, начиная с которой применяется условие
ranges[].rate Number комиссия (абс.множитель)
ranges[].min Number минимальная сумма комиссии
ranges[].max Number максимальная сумма комиссии
ranges[].fixed Number фиксированная сумма комиссии

Специальные тарифы

Запрос предназначен для получения специальных комиссий на платеж (с учетом всех тарифов) по заданному набору платежных реквизитов.

Тип запроса - POST.

URL запроса:

https://edge.qiwi.com/sinap/providers/{id}/onlineCommission

user@server:~$ curl -X POST "https://edge.qiwi.com/sinap/providers/99/onlineCommission"
  --header "Accept: application/json" 
  --header "Content-Type: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"
  -d '{
        "account":"380995238345",
        "paymentMethod":{
          "type":"Account",
          "accountId":"643"
        },
        "purchaseTotals":{
          "total":{
            "amount":10,
            "currency":"643"
            }
          }
        }'
POST /sinap/providers/99/onlineCommission HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Host: edge.qiwi.com

{
  "account":"380995238345",
  "paymentMethod":{
    "type":"Account",
    "accountId":"643"
  },
  "purchaseTotals":{
    "total":{
      "amount":10,
      "currency":"643"
    }
  }
}

Заголовки запроса:

В заголовке Authorization указывается токен доступа.

Параметр URL запроса:

Тело запроса - JSON. Параметры запроса:

Параметр Тип Описание
account String Номер телефона (с международным префиксом) или номер карты/счета получателя, в зависимости от провайдера
paymentMethod Object Объект, определяющий обработку платежа процессингом. Содержит следующие параметры:
paymentMethod.type String Тип платежа, только Account
paymentMethod.accountId String Идентификатор счета, только 643.
purchaseTotals Object Объект с платежными реквизитами
purchaseTotals.total Object Объект, содержащий данные о сумме платежа:
total.amount Number Сумма (можно указать рубли и копейки, разделитель .). Положительное число, округленное до 2 знаков после десятичной точки. При большем числе знаков значение будет округлено до копеек в меньшую сторону.
total.currency String Валюта (только 643, рубли)

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

В параметре ответа qwCommission.amount возвращается сумма комиссии.

{
    "providerId": 99,
    "withdrawSum": {
        "amount": 1011.01,
        "currency": "643"
    },
    "enrollmentSum": {
        "amount": 1001,
        "currency": "643"
    },
    "qwCommission": {
        "amount": 10.01,
        "currency": "643"
    },
    "fundingSourceCommission": {
        "amount": 0,
        "currency": "643"
    },
    "withdrawToEnrollmentRate": 1
}

Перевод на QIWI Кошелек

Тип запроса - POST.

URL запроса:

https://edge.qiwi.com/sinap/api/v2/terms/99/payments

user@server:~$ curl -X POST "https://edge.qiwi.com/sinap/api/v2/terms/99/payments"
  --header "Content-Type: application/json"
  --header "Accept: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"
  --header "User-Agent: ***"
  -d '{
        "id":"11111111111111",
        "sum": {
          "amount":100,
          "currency":"643"
        },
        "paymentMethod": {
          "type":"Account",
          "accountId":"643"
        },
        "comment":"test",
        "fields": {
          "account":"+79121112233"
        }
      }'
POST /sinap/api/v2/terms/99/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Host: edge.qiwi.com
User-Agent: ****

{
	"id":"11111111111111",
	"sum": {
				"amount":100.50,
				"currency":"643"
	},
	"paymentMethod": {
			"type":"Account",
			"accountId":"643"
	},
	"comment":"test",
	"fields": {
	 			"account":"+79121112233"
	}
}

Заголовки запроса:

В заголовке Authorization указывается токен доступа.

Тело запроса - JSON. Параметры запроса:

Параметр Тип Описание
id String Клиентский ID транзакции (максимум 20 цифр). Должен быть уникальным для каждой транзакции и увеличиваться с каждой последующей транзакцией. Для выполнения этих требований рекомендуется задавать равным 1000*(Standard Unix time в секундах).
sum Object Данные о сумме платежа:
sum.amount Number Сумма (можно указать рубли и копейки, разделитель .). Положительное число, округленное до 2 знаков после десятичной точки. При большем числе знаков значение будет округлено до копеек в меньшую сторону.
sum.currency String Валюта (только 643, рубли)
paymentMethod Object Объект, определяющий обработку платежа процессингом. Содержит следующие параметры:
paymentMethod.type String Тип платежа, только Account
paymentMethod.accountId String Идентификатор счета, только 643.
fields Object Реквизиты платежа. Содержит параметр:
fields.account String Номер телефона получателя (с международным префиксом)
comment String Комментарий к платежу. Необязательный параметр.

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

{
    "id": "150217833198900",
    "terms": "99",
    "fields": {
        "account": "79121238345"
    },
    "sum": {
        "amount": 100,
        "currency": "643"
    },
    "transaction": {
        "id": "11155897070",
        "state": {
            "code": "Accepted"
        }
    },
    "source": "account_643",
    "comment": "test"
}

Успешный ответ содержит данные о принятом платеже:

Параметр Тип Описание
id String ID транзакции (максимум 20 цифр)
terms String Константа, 99
fields Object Копия объекта fields из исходного запроса.
sum Object Копия объекта sum из исходного запроса.
source String Источник фондирования платежа. Константа, account_643
comment String Копия параметра comment из исходного запроса (если присутствует в запросе)
transaction Object Объект с данными о транзакции в процессинге. Параметры:
transaction.id String ID транзакции в процессинге
transaction.state Object Объект содержит текущее состояние транзакции в процессинге. Параметр:
state.code String Текущий статус транзакции, только значение Accepted (платеж принят к проведению). Финальный результат транзакции можно узнать в истории платежей.

Оплата сотовой связи

Тип запроса - POST.

URL запроса:

https://edge.qiwi.com/sinap/api/v2/terms/{id}/payments

user@server:~$ curl -X POST "https://edge.qiwi.com/sinap/api/v2/terms/1/payments"
  --header "Content-Type: application/json"
  --header "Accept: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"
  --header "User-Agent: ***"
  -d '{
        "id":"11111111111111",
        "sum": {
          "amount":100,
          "currency":"643"
        },
        "paymentMethod": {
          "type":"Account",
          "accountId":"643"
        },
        "fields": {
          "account":"9161112233"
        }
      }'
POST /sinap/api/v2/terms/1/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Host: edge.qiwi.com
User-Agent: ****
 
{
  "id":"21131343",
  "sum": {
        "amount":1000,
        "currency":"643"
  },
  "paymentMethod": {
      "type":"Account",
      "accountId":"643"
  },
  "fields": {
        "account":"9161112233"
  }
}

Заголовки запроса:

В заголовке Authorization указывается токен доступа.

Параметр URL запроса:

Тело запроса - JSON. Все перечисленные параметры обязательны:

Параметр Тип Описание
id String Клиентский ID транзакции (максимум 20 цифр). Должен быть уникальным для каждой транзакции и увеличиваться с каждой последующей транзакцией. Для выполнения этих требований рекомендуется задавать равным 1000*(Standard Unix time в секундах).
sum Object Данные о сумме платежа:
sum.amount Number Сумма (можно указать рубли и копейки, разделитель .). Положительное число, округленное до 2 знаков после десятичной точки. При большем числе знаков значение будет округлено до копеек в меньшую сторону.
sum.currency String Валюта (только 643, рубли)
paymentMethod Object Объект, определяющий обработку платежа процессингом. Содержит следующие параметры:
paymentMethod.type String Тип платежа, только Account
paymentMethod.accountId String Идентификатор счета, только 643.
fields Object Реквизиты платежа. Содержит параметр:
fields.account String Номер мобильного телефона для пополнения (без префикса 8)
{
    "id": "21131343",
    "terms": "1",
    "fields": {
          "account": "9161112233"
    },
    "sum": {
         "amount": 1000,
         "currency": "643"
    },
    "source": "account_643",
    "transaction": {
         "id": "4969142201",
         "state": {
            "code": "Accepted"
          }
    }
}

Успешный ответ содержит данные о принятом платеже:

Параметр Тип Описание
id Number ID транзакции (максимум 20 цифр)
terms String Параметр {id} из URL запроса
fields Object Копия объекта fields из исходного запроса.
sum Object Копия объекта sum из исходного запроса.
source String Источник фондирования платежа. Константа, account_643
transaction Object Объект с данными о транзакции в процессинге. Параметры:
transaction.id String ID транзакции в процессинге
transaction.state Object Объект содержит текущее состояние транзакции в процессинге. Параметр:
state.code String Текущий статус транзакции, только значение Accepted (платеж принят к проведению). Финальный результат транзакции можно узнать в истории платежей.

Определение оператора

Предварительная проверка мобильного номера выполняется POST-запросом:

https://qiwi.com/mobile/detect.action

В ответе возвращается идентификатор оператора для запроса пополнения телефона. Запрос не требует токена доступа.

Заголовки запроса:

user@server:~$ curl -X POST "https://qiwi.com/mobile/detect.action"
  --header "Accept: application/json" 
  --header "Content-Type: application/x-www-form-urlencoded"
  --header "User-Agent: ***"
  -d 'phone=%2B79651238341'
POST /mobile/detect.action HTTP/1.1
Host: qiwi.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

phone=%2B79651238341

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

Параметр Тип Описание
phone String URL-encoded Мобильный номер в международном формате

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

Успешная проверка - Ответ с HTTP Status 200, параметр code.value = 0.

Идентификатор оператора находится в параметре message.

{
  "code": {
    "value": "0",
    "_name": "NORMAL"
  },
  "data": null,
  "message": "3",
  "messages": null
}

Невозможно определить оператора - Ответ с HTTP Status 200, параметр code.value = 2.

{
  "code": {
    "value": "2",
    "_name": "ERROR"
  },
 "data": null,
 "message": "По указанному номеру невозможно определить оператора сотовой связи. Воспользуйтесь поиском.",
 "messages": {}
}

Перевод на карту

Выполняет перевод на карты платежных систем Visa или MasterCard. Предварительно можно проверить тип платежной системы.

Тип запроса - POST.

URL запроса:

https://edge.qiwi.com/sinap/api/v2/terms/{id}/payments

user@server:~$ curl -X POST "https://edge.qiwi.com/sinap/api/v2/terms/1963/payments"
  --header "Content-Type: application/json"
  --header "Accept: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"
  --header "User-Agent: ***"
  -d '{
        "id":"21131343",
        "sum":{
          "amount":1000,
          "currency":"643"
        },
        "paymentMethod":{
          "type":"Account",
          "accountId":"643"
        },
        "fields": {
          "account":"4256********1231"
        }
      }'
POST /sinap/api/v2/terms/1963/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Host: edge.qiwi.com
User-Agent: ****
 
{
  "id":"21131343",
  "sum": {
        "amount":1000,
        "currency":"643"
  },
  "paymentMethod": {
      "type":"Account",
      "accountId":"643"
  },
  "fields": {
        "account":"4256********1231"
  }
}

Заголовки запроса:

В заголовке Authorization указывается токен доступа.

Параметр URL запроса:

Тело запроса - JSON. Параметры запроса:

Параметр Тип Описание
id String Клиентский ID транзакции (максимум 20 цифр). Должен быть уникальным для каждой транзакции и увеличиваться с каждой последующей транзакцией. Для выполнения этих требований рекомендуется задавать равным 1000*(Standard Unix time в секундах).
sum Object Данные о сумме платежа:
sum.amount Number Сумма (можно указать рубли и копейки, разделитель .). Положительное число, округленное до 2 знаков после десятичной точки. При большем числе знаков значение будет округлено до копеек в меньшую сторону.
sum.currency String Валюта (только 643, рубли)
paymentMethod Object Объект, определяющий обработку платежа процессингом. Содержит следующие параметры:
paymentMethod.type String Тип платежа, только Account
paymentMethod.accountId String Идентификатор счета, только 643.
fields Object Реквизиты платежа. Содержит параметр:
fields.account String Номер банковской карты получателя
{
  "id": "21131343",
  "terms": "1963",
  "fields": {
          "account": "4256********1231"
    },
    "sum": {
         "amount": 1000,
         "currency": "643"
    },
    "source": "account_643",
    "transaction": {
         "id": "4969142201",
         "state": {
            "code": "Accepted"
          }
    }
}

Успешный ответ содержит данные о принятом платеже:

Параметр Тип Описание
id Number ID транзакции (максимум 20 цифр)
terms String Параметр {id} из URL запроса
fields Object Копия объекта fields из исходного запроса.
sum Object Копия объекта sum из исходного запроса.
source String Источник фондирования платежа. Константа, account_643
transaction Object Объект с данными о транзакции в процессинге. Параметры:
transaction.id String ID транзакции в процессинге
transaction.state Object Объект содержит текущее состояние транзакции в процессинге. Параметр:
state.code String Текущий статус транзакции, только значение Accepted (платеж принят к проведению). Финальный результат транзакции можно узнать в истории платежей.

Проверка карты

Определение платежной системы карты выполняется POST-запросом:

https://qiwi.com/card/detect.action

В ответе возвращается идентификатор платежной системы для запроса перевода на карту. Запрос не требует токена доступа.

Заголовки запроса:

user@server:~$ curl -X POST "https://qiwi.com/card/detect.action"
  --header "Accept: application/json" 
  --header "Content-Type: application/x-www-form-urlencoded"
  --header "User-Agent: ***"
  -d 'cardNumber=4256********1231'
POST /card/detect.action HTTP/1.1
Host: qiwi.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

cardNumber=4256********1231

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

Параметр Тип Описание
cardNumber String Немаскированный номер карты

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

Успешная проверка - Ответ с HTTP Status 200, параметр code.value = 0.

Идентификатор платежной системы находится в параметре message.

{
  "code": {
    "value": "0",
    "_name": "NORMAL"
  },
  "data": null,
  "message": "1963",
  "messages": null
}

Ошибка в номере карты - Ответ с HTTP Status 200, параметр code.value = 2.

{
    "code": {
        "value": "2",
        "_name": "ERROR"
    },
    "data": null,
    "message": "Неверно введен номер банковской карты. Попробуйте ввести номер еще раз.",
    "messages": {}
}

Банковский перевод

Выполняет перевод на банковские карты/счета российских банков.

Тип запроса - POST.

URL запроса:

https://edge.qiwi.com/sinap/api/v2/terms/{id}/payments

user@server:~$ curl -X POST "https://edge.qiwi.com/sinap/api/v2/terms/466/payments"
  --header "Content-Type: application/json"
  --header "Accept: application/json"
  --header "Authorization: Bearer YUu2qw048gtdsvlk3iu"
  --header "User-Agent: ***"
  -d '{
        "id":"21131343",
        "sum": {
          "amount":1000,
          "currency":"643"
        },
        "paymentMethod": {
          "type":"Account",
          "accountId":"643"
        },
        "fields": {
          "account_type": "1",
          "account":"4256********1231",
          "exp_date": "MMYY"
        }
      }'
POST /sinap/api/v2/terms/466/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Host: edge.qiwi.com
User-Agent: ****
 
{
  "id":"21131343",
  "sum": {
        "amount":1000,
        "currency":"643"
  },
  "paymentMethod": {
      "type":"Account",
      "accountId":"643"
  },
  "fields": {
        "account":"4256********1231",
        "account_type": "1",
        "exp_date": "MMYY"
  }
}

Заголовки запроса:

В заголовке Authorization указывается токен доступа.

Параметр URL запроса:

Тело запроса - JSON. Параметры запроса:

Параметр Тип Описание
id String Клиентский ID транзакции (максимум 20 цифр). Должен быть уникальным для каждой транзакции и увеличиваться с каждой последующей транзакцией. Для выполнения этих требований рекомендуется задавать равным 1000*(Standard Unix time в секундах).
sum Object Данные о сумме платежа:
sum.amount Number Сумма (можно указать рубли и копейки, разделитель .). Положительное число, округленное до 2 знаков после десятичной точки. При большем числе знаков значение будет округлено до копеек в меньшую сторону.
sum.currency String Валюта (только 643, рубли)
paymentMethod Object Объект, определяющий обработку платежа процессингом. Содержит следующие параметры:
paymentMethod.type String Тип платежа, только Account
paymentMethod.accountId String Идентификатор счета, только 643.
fields Object Реквизиты платежа. Содержит параметры:
fields.account String Номер карты/счета получателя
fields.exp_date String Срок действия карты, в формате ММГГ (например, 0218). Только для перевода на карту.
fields.account_type String Тип банковского идентификатора. Допустимые значения:
для Тинькофф Банк - карта “1”, договор “3”
для Альфа-Банка - карта “1”, счет “2”
для Промсвязьбанка - карта “7”, счет “9”
для банка Русский Стандарт - карта “1”, счет “2”, договор “3”
{
  "id": "21131343",
  "terms": "466",
  "fields": {
          "account": "4256********1231",
          "account_type": "1",
          "exp_date": "MMYY"
  },
  "sum": {
         "amount": 1000,
         "currency": "643"
  },
  "source": "account_643",
  "transaction": {
         "id": "4969142201",
         "state": {
            "code": "Accepted"
          }
  }
}

Успешный ответ содержит данные о принятом платеже:

Параметр Тип Описание
id Number ID транзакции (максимум 20 цифр)
terms String Параметр {id} из URL запроса
fields Object Копия объекта fields из исходного запроса.
sum Object Копия объекта sum из исходного запроса.
source String Источник фондирования платежа. Константа, account_643
transaction Object Объект с данными о транзакции в процессинге. Параметры:
transaction.id String ID транзакции в процессинге
transaction.state Object Объект содержит текущее состояние транзакции в процессинге. Параметр:
state.code String Текущий статус транзакции, только значение Accepted (платеж принят к проведению). Финальный результат транзакции можно узнать в истории платежей.

Коды ошибок

В случае ошибки API возвращается HTTP-код ошибки.

Код API Описание
400 Все Ошибка синтаксиса запроса (неправильный формат данных)
401 Все Неверный токен или истек срок действия токена.
404 История платежей Не найдена транзакция или отсутствуют платежи с указанными признаками
404 Балансы, Профиль пользователя Не найден кошелек
423 История платежей Слишком много запросов, сервис временно недоступен