Everypay IAPI (0.8)
Download OpenAPI specification:Download
Спецификация OpenAPI 3.0 для интеграции с Everypay.
Зарегистрируйте своё приложение - для этого необходимо отправить заявку на hello@everypay.io.
В заявке необходимо предоставить:
- данные о компании - ИНН, название, контакты для связи и ответственное лицо,
- ссылка для перенаправления запросов авторизации OAuth (
redirect_url
).
В ответ вы получите client_id
и client_secret
, с которыми и будете запрашивать данные.
Стандарты и спецификации OpenBanking API:
Разработано с учетом:
Ниже представлена схема для авторизации в сервисе everypay с помощью внешней стороны (банка).
Процесс авторизации схож с OAuth 2.0 Authorization Code
После прохождения авторизации партнёру выдаётся access_token
и refresh_token
.
Для начала нужно сгенерировать первоначальный код. Далее он поможет определить пользователя в
процессе авторизации. Необходимо выполнить POST
запрос по адресу /oauth/third-party-code
.
Формат тела запроса - application/json
. Необходимые параметры:
type
- должен быть указанexternal
,user_id
- должен быть указан идентификатор сервиса партнёра, от лица которого запрашивается доступ. Тип -string
.
В запросе необходимо использовать Basic
авторизацию. В качестве логина должен быть использован
client_id
, а в качестве пароля - client_secret
.
Пример тела запроса:
{
"type": "external",
"user_id": "1"
}
Пример тела ответа:
{
"code": "code"
}
Время жизни параметра code
- 1 минута
После получения первичного кода необходимо направить пользователя на адрес /oauth/authorize
.
Основные параметры взяты из спецификации OAuth 2.0 Authorization Code:
client_id
,redirect_uri
,response_type
со значениемthird_party_code
,scope
. Должен быть в форматеurlencoded
,code_challenge
. Должен быть в форматеbase64 urlencoded
,code_challenge_method
. Поддерживаетсяplain
иS256
,state
(рекомендуется).
Для успешной интеграции необходимо два дополнительных параметра:
third_party
- внешний сервис (банк) для которого партнёр хочет получить токены,code
- первичный код авторизации.
Пример итоговой ссылки для начала авторизации:
https://id.everypay.io/oauth/authorize
?client_id=partner
&redirect_uri=https://example.com
&response_type=third_party_code
&scope=iapi%2Fthird-parties%20iapi%2Faccounts
&code_challenge=73oehA2tBul5grZPhXUGQwNAjxh69zNES8bu2bVD0EM
&code_challenge_method=S256
&state=example_state
&third_party=example_bank
&code=code
При возникновении ошибки во время авторизации (после перехода по ссылке) возможен один из двух вариантов:
- В случае валидного
redirect_uri
пользователь будет перенаправлен на него; - В случае невалидного
redirect_uri
ошибка будет отображена на той же странице в форматеJSON
.
Обязательное поле error
, которое содержит низкоуровневое текстовое описание ошибки. Поле
error_description
- подробное описание ошибки, не является обязательным.
После того, как пользователь пройдёт авторизацию во внешнем сервисе (банке) он будет перенаправлен на указанный
redirect_uri
с параметрами:
code
,state
(если он был передан ранее).
Полученный code
необходимо обменять на токены. Для этого необходимо выполнить POST
запрос на адрес
/oauth/token
. Формат тела запроса - application/x-www-form-urlencoded
. В теле запроса указываются
параметры согласно спецификации OAuth 2.0 Authorization Code:
grant_type
со значениемthird_party_authorization_code
,client_id
,client_secret
,code
,redirect_uri
,code_verifier
.
Пример тела запроса:
{
"grant_type": "third_party_authorization_code",
"client_id": "partner",
"client_secret": "example_secret",
"code": "code",
"redirect_uri": "https://example.com",
"code_verifier": "code_verifier"
}
Пример ответа:
{
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "access_token",
"refresh_token": "refresh_token"
}
При возникновении ошибки во время получения токенов будет возвращён соответствующий ответ. Поля аналогичны тем, которые могут присутствовать при ошибке авторизации.
Для обмена refresh_token
на новую пару токенов необходимо выполнить POST
запрос на адрес /oauth/token
.
Формат тела запроса - application/x-www-form-urlencoded
. В теле запроса указываются параметры согласно
спецификации OAuth 2.0 Authorization Code:
client_id
,client_secret
,grant_type
со значениемrefresh_token
,refresh_token
.
Пример тела запроса:
{
"client_id": "partner",
"client_secret": "example_secret",
"grant_type": "refresh_token",
"refresh_token": "refresh_token"
}
Пример ответа:
{
"token_type": "Bearer",
"expires_in": "86400",
"access_token": "access_token",
"refresh_token": "refresh_token"
}
При возникновении ошибки во время обновления токенов будет возвращён соответствующий ответ. Поля аналогичны тем, которые могут присутствовать при ошибке авторизации.
Authorization
authorizationCode
/oauth/authorize
/oauth/token
account
-Доступ к информации о счете
Для того, чтобы настроить работу с песочницей необходимо заменить базовый домен для запросов с
*.everypay.io
на *-beta.everypay.io
, т.е. добавить -beta
перед .everypay.io
во всех
используемых доменах.
id-beta.everypay.io
- для авторизации,iapi-beta.everypay.io
- для API.
В режиме песочницы все доступные третьи стороны работают аналогично в режиме песочницы. Т.е. авторизация производится не на реальных аккаунтах, а данные, получаемые с API внешних сервисов, не являются настоящими.
Получение списка счетов
Предоставляется полный список счетов (с идентификаторами accountId), которые были авторизованы пользователем на стороне ППУ.
Authorizations:
query Parameters
page | integer Default: 0 Номер страницы |
header Parameters
x-fapi-auth-date | string Время последнего входа Пользователя в систему с TPP. Значение предоставляется в виде HTTP-date, как в разделе 7.1.1.1 [RFC7231]. Например, x-fapi-auth-date: Mon, 26 Aug 2019 12:23:11 GMT |
x-fapi-customer-ip-address | string IP-адрес Пользователя, если Пользователь в данный момент подключен к Стороннему Поставщику (залогинен в приложении Стороннего Поставщика). |
x-fapi-interaction-id | string RFC4122 UID, используемый в качестве идентификатора корреляции. Если необходимо, то ППУ передает обратно значение идентификатора корреляции в заголовке ответа x-fapi-interaction-id. |
x-customer-user-agent | string В заголовке указывается тип устройства (user-agent), который использует Пользователь. Сторонний Поставщик может заполнить это поле значением типа устройства (user-agent), указанным Пользователем. Если Пользователь использует мобильное приложение Стороннего Поставщика, Сторонний Поставщик проверяет, что строка типа устройства (user-agent) отличается от строки типа устройства (user-agent) на основе браузера. |
Responses
Response samples
- 200
- 400
- 403
- 500
- 501
- 502
- 503
{- "Data": {
- "Account": [
- {
- "accountId": "string",
- "status": "Enabled",
- "statusUpdateDateTime": "2019-08-24T14:15:22Z",
- "currency": "string",
- "accountType": "Business",
- "accountSubType": "CreditCard",
- "accountDescription": "string",
- "AccountDetails": [
- {
- "schemeName": "RU.CBR.PAN",
- "identification": "string",
- "name": "string"
}
], - "Owner": {
- "name": "ПАО Моя организация",
- "mobileNumber": "string",
- "countryOfResidence": "string",
- "countryOfBirth": "string",
- "provinceOfBirth": "string",
- "cityOfBirth": "string",
- "birthDate": "2019-08-24T14:15:22Z",
- "PartyIdentification": [
- {
- "schemeName": "RU.CBR.TXID",
- "identification": "string"
}
], - "PostalAddress": [
- {
- "addressType": "Business",
- "department": "string",
- "subDepartment": "string",
- "streetName": "string",
- "buildingNumber": "string",
- "postCode": "string",
- "townName": "string",
- "countrySubDivision": "string",
- "country": "string",
- "addressLine": [
- "string"
]
}
]
}, - "ServiceProvider": {
- "schemeName": "RU.CBR.BICFI",
- "identification": "string"
}, - "registrationDate": "1970-01-01"
}
]
}, - "Risk": { },
- "Links": {
}, - "Meta": {
- "totalPages": 0
}
}
Получение детальной информации о счете
СПИУ получает детальную информацию о счете по идентификатору accountId (который был получен при вызове конечной точке списка счетов GET /accounts).
Authorizations:
path Parameters
accountId required | string Идентификатор счета |
header Parameters
x-fapi-auth-date | string Время последнего входа Пользователя в систему с TPP. Значение предоставляется в виде HTTP-date, как в разделе 7.1.1.1 [RFC7231]. Например, x-fapi-auth-date: Mon, 26 Aug 2019 12:23:11 GMT |
x-fapi-customer-ip-address | string IP-адрес Пользователя, если Пользователь в данный момент подключен к Стороннему Поставщику (залогинен в приложении Стороннего Поставщика). |
x-fapi-interaction-id | string RFC4122 UID, используемый в качестве идентификатора корреляции. Если необходимо, то ППУ передает обратно значение идентификатора корреляции в заголовке ответа x-fapi-interaction-id. |
x-customer-user-agent | string В заголовке указывается тип устройства (user-agent), который использует Пользователь. Сторонний Поставщик может заполнить это поле значением типа устройства (user-agent), указанным Пользователем. Если Пользователь использует мобильное приложение Стороннего Поставщика, Сторонний Поставщик проверяет, что строка типа устройства (user-agent) отличается от строки типа устройства (user-agent) на основе браузера. |
Responses
Response samples
- 200
- 400
- 403
- 500
- 501
- 502
- 503
{- "Data": {
- "Account": [
- {
- "accountId": "string",
- "status": "Enabled",
- "statusUpdateDateTime": "2019-08-24T14:15:22Z",
- "currency": "string",
- "accountType": "Business",
- "accountSubType": "CreditCard",
- "accountDescription": "string",
- "AccountDetails": [
- {
- "schemeName": "RU.CBR.PAN",
- "identification": "string",
- "name": "string"
}
], - "Owner": {
- "name": "ПАО Моя организация",
- "mobileNumber": "string",
- "countryOfResidence": "string",
- "countryOfBirth": "string",
- "provinceOfBirth": "string",
- "cityOfBirth": "string",
- "birthDate": "2019-08-24T14:15:22Z",
- "PartyIdentification": [
- {
- "schemeName": "RU.CBR.TXID",
- "identification": "string"
}
], - "PostalAddress": [
- {
- "addressType": "Business",
- "department": "string",
- "subDepartment": "string",
- "streetName": "string",
- "buildingNumber": "string",
- "postCode": "string",
- "townName": "string",
- "countrySubDivision": "string",
- "country": "string",
- "addressLine": [
- "string"
]
}
]
}, - "ServiceProvider": {
- "schemeName": "RU.CBR.BICFI",
- "identification": "string"
}, - "registrationDate": "1970-01-01"
}
]
}, - "Risk": { },
- "Links": {
}, - "Meta": {
- "totalPages": 0
}
}
Баланс банковского счета
Конечная точка используется для получения информации о балансе банковского счета с идентификатором accountId.
Authorizations:
path Parameters
accountId required | string Идентификатор счета |
header Parameters
x-fapi-auth-date | string Время последнего входа Пользователя в систему с TPP. Значение предоставляется в виде HTTP-date, как в разделе 7.1.1.1 [RFC7231]. Например, x-fapi-auth-date: Mon, 26 Aug 2019 12:23:11 GMT |
x-fapi-customer-ip-address | string IP-адрес Пользователя, если Пользователь в данный момент подключен к Стороннему Поставщику (залогинен в приложении Стороннего Поставщика). |
x-fapi-interaction-id | string RFC4122 UID, используемый в качестве идентификатора корреляции. Если необходимо, то ППУ передает обратно значение идентификатора корреляции в заголовке ответа x-fapi-interaction-id. |
x-customer-user-agent | string В заголовке указывается тип устройства (user-agent), который использует Пользователь. Сторонний Поставщик может заполнить это поле значением типа устройства (user-agent), указанным Пользователем. Если Пользователь использует мобильное приложение Стороннего Поставщика, Сторонний Поставщик проверяет, что строка типа устройства (user-agent) отличается от строки типа устройства (user-agent) на основе браузера. |
Responses
Response samples
- 200
- 400
- 403
- 500
- 501
- 502
- 503
{- "Data": {
- "Balance": [
- {
- "accountId": "11139",
- "Amount": {
- "amount": "13430.00",
- "currency": "RUB"
}, - "CreditDebitIndicator": "Credit",
- "Type": "OpeningAvailable",
- "DateTime": "2019-09-15T14:33:07+00:00",
- "CreditLine": {
- "Included": "true",
- "Amount": {
- "Amount": "4000.00",
- "currency": "RUB"
}, - "Type": "Pre-Agreed"
}
}
]
}, - "Risk": { },
- "Meta": {
- "totalPages": "1"
}
}
Получения идентификатора выписки statementId по идентификатору счета accountId
ППУ предоставляет конечную точку СПИУ для получения идентификатора выписки statementId по идентификатору счета accountId, который предоставляется при вызове конечной точки GET /accounts
Authorizations:
path Parameters
accountId required | string Идентификатор счета |
header Parameters
x-customer-user-agent | string В заголовке указывается тип устройства (user-agent), который использует Пользователь. Сторонний Поставщик может заполнить это поле значением типа устройства (user-agent), указанным Пользователем. Если Пользователь использует мобильное приложение Стороннего Поставщика, Сторонний Поставщик проверяет, что строка типа устройства (user-agent) отличается от строки типа устройства (user-agent) на основе браузера. |
x-fapi-auth-date | string Время последнего входа Пользователя в систему с TPP. Значение предоставляется в виде HTTP-date, как в разделе 7.1.1.1 [RFC7231]. Например, x-fapi-auth-date: Mon, 26 Aug 2019 12:23:11 GMT |
x-fapi-interaction-id | string RFC4122 UID, используемый в качестве идентификатора корреляции. Если необходимо, то ППУ передает обратно значение идентификатора корреляции в заголовке ответа x-fapi-interaction-id. |
x-fapi-customer-ip-address | string IP-адрес Пользователя, если Пользователь в данный момент подключен к Стороннему Поставщику (залогинен в приложении Стороннего Поставщика). |
x-idempotency-key required | string <= 40 characters ^(?!\s)(.*)(\S)$ Не стандартный HTTP заголовок. Уникальный идентификатор запроса для поддержки идемпотентности. Обязательно для запросов POST к конечным точкам идемпотентного ресурса. Для других запросов не указывается. |
Request Body schema: application/json
= 2 propertiesrequired | object (DataStatementInitRequestComplexType) Контейнер для данных |
required | object (RiskType) Раздел 'Risk' содержит индикаторы риска для конкретного запроса API, предоставленного Сторонним Поставщиком. |
Responses
Request samples
- Payload
{- "Data": {
- "Statement": {
- "accountId": 1234,
- "fromBookingDateTime": "2019-09-03T00:00:00+00:00",
- "toBookingDateTime": "2019-12-03T00:00:00+00:00"
}
}, - "Risk": { }
}
Response samples
- 200
- 400
- 403
- 500
- 501
- 502
- 503
{- "Data": {
- "Statement": {
- "accountId": "1234",
- "statementId": "234",
- "fromBookingDateTime": "2019-09-03T00:00:00+00:00",
- "toBookingDateTime": "2019-12-03T00:00:00+00:00"
}
}, - "Risk": { },
- "Meta": {
- "totalPages": "1"
}
}
Массовое получение идентификаторов выписок statementId по идентификатору счета accountId
ППУ предоставляет конечную точку СПИУ для массового получения идентификаторов выписок statementId по идентификатору счета accountId, который предоставляется при вызове конечной точки GET /accounts
Authorizations:
path Parameters
accountId required | string Идентификатор счета |
header Parameters
x-customer-user-agent | string В заголовке указывается тип устройства (user-agent), который использует Пользователь. Сторонний Поставщик может заполнить это поле значением типа устройства (user-agent), указанным Пользователем. Если Пользователь использует мобильное приложение Стороннего Поставщика, Сторонний Поставщик проверяет, что строка типа устройства (user-agent) отличается от строки типа устройства (user-agent) на основе браузера. |
x-fapi-auth-date | string Время последнего входа Пользователя в систему с TPP. Значение предоставляется в виде HTTP-date, как в разделе 7.1.1.1 [RFC7231]. Например, x-fapi-auth-date: Mon, 26 Aug 2019 12:23:11 GMT |
x-fapi-interaction-id | string RFC4122 UID, используемый в качестве идентификатора корреляции. Если необходимо, то ППУ передает обратно значение идентификатора корреляции в заголовке ответа x-fapi-interaction-id. |
x-fapi-customer-ip-address | string IP-адрес Пользователя, если Пользователь в данный момент подключен к Стороннему Поставщику (залогинен в приложении Стороннего Поставщика). |
x-idempotency-key required | string <= 40 characters ^(?!\s)(.*)(\S)$ Не стандартный HTTP заголовок. Уникальный идентификатор запроса для поддержки идемпотентности. Обязательно для запросов POST к конечным точкам идемпотентного ресурса. Для других запросов не указывается. |
Request Body schema: application/json
= 2 propertiesrequired | object (DataStatementInitRequestComplexType) Контейнер для данных |
required | object (RiskType) Раздел 'Risk' содержит индикаторы риска для конкретного запроса API, предоставленного Сторонним Поставщиком. |
Responses
Request samples
- Payload
{- "Data": {
- "Statement": {
- "accountId": "1234",
- "fromBookingDateTime": "2023-03-23T12:12:12+00:00",
- "toBookingDateTime": "2023-03-24T23:23:23+00:00"
}
}, - "Risk": { }
}
Response samples
- 200
- 400
- 403
- 500
- 501
- 502
- 503
{- "Data": {
- "Statements": [
- {
- "accountId": "1234",
- "statementId": "1234",
- "fromBookingDateTime": "2023-03-23T12:12:12+00:00",
- "toBookingDateTime": "2023-03-23T23:59:59+00:00"
}, - {
- "accountId": "1234",
- "statementId": "5678",
- "fromBookingDateTime": "2023-03-24T00:00:00+00:00",
- "toBookingDateTime": "2023-03-24T23:23:23+00:00"
}
]
}, - "Risk": { },
- "Meta": {
- "totalPages": 1
}
}
Получения выписки по идентификатору счета и идентификатору выписки
ППУ предоставляет конечную точку СПИУ для получения выписки по идентификатору счета и идентификатору выписки.
Authorizations:
path Parameters
accountId required | string Идентификатор счета |
statementId required | string Идентификатор выписки |
query Parameters
page | integer Default: 0 Номер страницы |
fromBookingDateTime | string <date-time> (ISODateTime) Дата и время начала фильтрации списка транзакций. |
toBookingDateTime | string <date-time> (ISODateTime) Дата и время окончания фильтрации списка транзакций. |
header Parameters
x-fapi-auth-date | string Время последнего входа Пользователя в систему с TPP. Значение предоставляется в виде HTTP-date, как в разделе 7.1.1.1 [RFC7231]. Например, x-fapi-auth-date: Mon, 26 Aug 2019 12:23:11 GMT |
x-fapi-customer-ip-address | string IP-адрес Пользователя, если Пользователь в данный момент подключен к Стороннему Поставщику (залогинен в приложении Стороннего Поставщика). |
x-fapi-interaction-id | string RFC4122 UID, используемый в качестве идентификатора корреляции. Если необходимо, то ППУ передает обратно значение идентификатора корреляции в заголовке ответа x-fapi-interaction-id. |
x-customer-user-agent | string В заголовке указывается тип устройства (user-agent), который использует Пользователь. Сторонний Поставщик может заполнить это поле значением типа устройства (user-agent), указанным Пользователем. Если Пользователь использует мобильное приложение Стороннего Поставщика, Сторонний Поставщик проверяет, что строка типа устройства (user-agent) отличается от строки типа устройства (user-agent) на основе браузера. |
Responses
Response samples
- 200
- 202
- 400
- 403
- 500
- 501
- 502
- 503
{- "Data": {
- "Statement": [
- {
- "accountId": "string",
- "statementId": "string",
- "fromBookingDateTime": "2019-08-24T14:15:22Z",
- "toBookingDateTime": "2019-08-24T14:15:22Z",
- "creationDateTime": "2019-08-24T14:15:22Z",
- "Transaction": [
- {
- "transactionId": "string",
- "creditDebitIndicator": "Credit",
- "status": "Booked",
- "documentNumber": "string",
- "bookingDateTime": "2019-08-24T14:15:22Z",
- "valueDateTime": "2019-08-24T14:15:22Z",
- "description": "string",
- "Amount": {
- "amount": "string",
- "currency": "string"
}, - "DebtorParty": {
- "inn": "string",
- "name": "string",
- "kpp": "string"
}, - "DebtorAccount": {
- "schemeName": "RU.CBR.PAN",
- "identification": "string"
}, - "DebtorAgent": {
- "schemeName": "RU.CBR.BICFI",
- "identification": "string",
- "name": "string",
- "Address": {
- "addressType": "Business",
- "department": "string",
- "subDepartment": "string",
- "streetName": "string",
- "buildingNumber": "string",
- "postCode": "string",
- "townName": "string",
- "countrySubDivision": "string",
- "country": "string",
- "addressLine": [
- "string"
]
}
}, - "CreditorParty": {
- "inn": "string",
- "name": "string",
- "kpp": "string"
}, - "CreditorAccount": {
- "schemeName": "RU.CBR.PAN",
- "identification": "string"
}, - "CreditorAgent": {
- "schemeName": "RU.CBR.BICFI",
- "identification": "string",
- "name": "string",
- "Address": {
- "addressType": "Business",
- "department": "string",
- "subDepartment": "string",
- "streetName": "string",
- "buildingNumber": "string",
- "postCode": "string",
- "townName": "string",
- "countrySubDivision": "string",
- "country": "string",
- "addressLine": [
- "string"
]
}
}
}
]
}
]
}, - "Risk": { },
- "Links": {
}, - "Meta": {
- "totalPages": 0
}
}
Получение статистики по запросам
Получение статистики по запросам
При указании параметра start_date_time
необходимо указать параметр end_date_time
.
При этом дата начала должна быть больше, чем дата окончания и разница между датами не должна превышать
один месяц (2 678 399 секунд)
Если период не указан, по умолчанию рассматривается текущий месяц
ВНИМАНИЕ: для использования метода API необходимо указать один из новых базовых API URL:
- https://api.everypay.io - промышленный контур
- https://api-beta.everypay.io - тестовый контур
Authorizations:
query Parameters
start_date_time | string <date-time> (ISODateTime) Example: start_date_time=2024-12-01T00:00:00Z Формат даты и времени |
end_date_time | string <date-time> (ISODateTime) Example: end_date_time=2024-12-31T23:59:59Z Формат даты и времени |
Responses
Response samples
- 200
- 400
- 422
- 500
{- "startDateTime": "2019-08-24T14:15:22Z",
- "endDateTime": "2019-08-24T14:15:22Z",
- "granularity": "day",
- "totalRequests": 500000,
- "breakdown": {
- "statuses": {
- "200": 499900,
- "202": 50,
- "400": 25,
- "429": 25
}, - "aggregated": {
- "successful": 499950,
- "unsuccessful": 50
}
}, - "granulated": [
- {
- "date": "2019-08-24",
- "requests": 500000,
- "successful": 499950,
- "unsuccessful": 50
}
]
}