×

Account Information Service (AIS)

Account Information Service (AIS)

Послуга з надання відомостей з рахунків дозволяє стороннім надавачам платіжних послуг (Third party provider, TPP) отримувати доступ до інформації про рахунок користувача платіжних послуг (Payment Service User, PSU).

1. Загальна інформація та умови підключення до сервісу

Спеціалізовані інтерфейси побудовані за принципами REST API та базуються на специфікації XS2A (Access to Account), яка реалізована через платформу відкритого банкінгу (Open Banking Platform, OBP). XS2A є стандартним інтерфейсом доступу третіх сторін до платіжних рахунків відповідно до вимог PSD2.

1.2. Транспортний протокол

Протокол: HTTPS (HTTP over TLS/SSL). Усі запити передаються виключно по захищеному каналу HTTPS. Використання незахищеного протоколу HTTP не допускається.

1.3. Формат даних

Формат тіла запитів та відповідей: JSON (JavaScript Object Notation). Заголовок Content-Type: application/json обов'язковий для всіх запитів, що містять тіло (POST).

1.4. Версійність

Поточна версія v2. Версія зазначається у базовому шляху URL: /pis/v2/ та /ais/v2/.

1.5. Обов'язкові заголовки HTTP 

1.6. Процедура взаємодії (AIS Flow)

Інтерфейс AIS підтримує два режими сильної автентифікації клієнта SCA (Strong Customer Authentication):

Account Information Service (AIS)

Account Information Service (AIS)

1.7. Обмеження та ліміти

1.8. Коди помилок, специфічні для AIS

1.9. Реєстрація та сертифікати

Для підключення до спеціалізованих інтерфейсів необхідно:

Технічні вимоги

Середовища

TPP надсилає запит на створення згоди. У запиті передаються: IBAN рахунку, права доступу, тип згоди, ознака повторюваного доступу, термін дії та максимальна частота запитів на добу. Платформа повертає унікальний ідентифікатор згоди (consentId).

Метод та шлях: POST /ais/v2/consents/account-access

Тіло запиту (JSON):

Відповідь (JSON): consentId (UUID), consentStatus ("received"), _links.startAuthorisation.href.

Після створення згоди TPP ініціює авторизацію через метод POST. Підтримуються два режими SCA (Decoupled та Redirect). TPP перевіряє статус згоди методом GET /ais/v2/consents/account-access/{consent-id}/status до отримання статусу "valid" або "rejected".

Метод та шлях: POST /ais/v2/consents/account-access/{consent-id}/authorisations

Параметр шляху: consent-id (отримано з попереднього кроку).

Заголовки: Client-Redirect-URI, Client-Redirect-Nok-URI.

Відповідь для Decoupled SCA (JSON): scaStatus, authorisationId, psuMessage.

Відповідь для Redirect SCA (JSON): scaStatus, authorisationId, _links.scaRedirect.href.

TPP перевіряє статус згоди методом GET

Метод та шлях: GET /ais/v2/consents/account-access/{consent-id}/status

Відповідь (JSON): consentStatus — статус згоди ("received", "valid", "rejected" тощо).

TPP отримує перелік рахунків PSU методом GET, передаючи заголовок Consent-ID з ідентифікатором підтвердженої згоди. Платформа повертає список рахунків із IBAN, валютою, ідентифікатором ресурсу, назвою рахунку та поточними балансами.

Метод та шлях: GET /ais/v2/accounts

Параметр запиту: withBalance=true (для отримання балансів у відповіді).

Заголовок: Consent-ID — ідентифікатор підтвердженої AIS-згоди.

Відповідь (JSON): масив об'єктів accounts з полями: iban, currency, resourceId, name, balances[].balanceAmount, balances[].balanceType, balances[].referenceDate.

TPP отримує історію операцій за рахунком методом GET. Банк надає історію операцій за останні 31 день, враховуючи дату запиту. У разі, якщо Банк надає історію операцій за період від 31 до 90 днів, запит може оброблюватись без додаткової SCA-авторизації. Для отримання операцій давніше 90 днів необхідна одноразова AIS-згода (recurringIndicator: false). Підтримується посторінкова вибірка (пагінація) за параметрами limit та offset.

Метод та шлях: GET /ais/v2/accounts/{account-id}/transactions

Параметри запиту:

Пагінація: TPP збільшує значення offset на кількість вже отриманих записів. Ознакою завершення є відповідь із кількістю записів, меншою за limit, або порожній список. Якщо параметри пагінації не передані, кількість повернутих транзакцій визначається Банком.

3. Опис програми тестування AIS

Передумови:

Тест кейс № 1 Створення Consent типу "detailed" (POST /consents/account-access)

Кроки виконання:

  1. обрати провайдера до якого створюється Consent, зафіксувати providerId
  2. обрати список accounts для створення Consent, зафіксувати IBANи
  3. Зробити Виклик до API:

POST /providers/{providerId}/ais/v2/consents/account-access

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

TPP-Redirect-URI: "https://google.com"

Content-Type: application/json

Authorization: "Bearer {openid-connect/token}"

PSU-IP-Address: "1.1.1.1"

TPP-Explicit-Authorisation-Preferred: true

Client-SCA-Approach-Preference: decoupled // АБО: Client-SCA-Approach-Preference: redirect

PSU-ID: "+380971112233" // Не обов'язковий при Client-SCA-Approach-Preference redirect

PSU-ID-Type: "PHONE" // Не обов'язковий при Client-SCA-Approach-Preference redirect

BODY:

{

  "access": {

    "payments": [

      {

        "account": {

          "iban": "UA1234567890123456789012134567"

        },

        "rights": [

          "accountDetails",

          "balances",

          "transactions"

        ]

      }

    ]

  },

  "consentType": "detailed",

  "recurringIndicator": true,

  "validTo": "2026-06-28",

  "frequencyPerDay": "4"

}

Очікуваний результат:

  1. Створено Consent з типом "detailed"
  2. У відповіді присутній consentId Приклад відповіді:

{

  "consentStatus": "received",

  "consentId": "019c0916-ef4d-7228-babe-e0b2a03d57dd",

  "_links": {

    "self": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd"

    },

    "status": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/status"

    },

    "startAuthorisation": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/authorisations"

    }

  }

}

Тест кейс №2 Сreate Consent типу "accountList" (POST /consents/account-access)

Кроки виконання:

  1. Обрати провайдера до якого створюється Consent, зафіксувати providerId
  2. Зробити Виклик до API:

POST /providers/{providerId}/ais/v2/consents/account-access

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

TPP-Redirect-URI: "https://google.com"

Content-Type: application/json

Authorization: "Bearer {openid-connect/token}"

PSU-IP-Address: "1.1.1.1"

TPP-Explicit-Authorisation-Preferred: true

Client-SCA-Approach-Preference: decoupled // АБО: Client-SCA-Approach-Preference: redirect

PSU-ID: "+380971112233" // Не обов'язковий при Client-SCA-Approach-Preference redirect

PSU-ID-Type: "PHONE" // Не обов'язковий при Client-SCA-Approach-Preference redirect

BODY:

{

  "access": {

    "payments": [

      {

        "rights": [

          "accountDetails",

          "balances",

          "transactions"

        ]

      }

    ]

  },

  "consentType": "accountList",

  "recurringIndicator": true,

  "validTo": "2026-06-28",

  "frequencyPerDay": "4"

}

Очікуваний результат:

  1. Створено Consent з типом "accountList"
  2. У відповіді присутній consentId

Приклад відповіді:

{

  "consentStatus": "received",

  "consentId": "019c0916-ef4d-7228-babe-e0b2a03d57dd",

  "_links": {

    "self": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd"

    },

    "status": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/status"

    },

    "startAuthorisation": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/authorisations"

    }

  }

}

Тест кейс №3 Створення Consent типу "aspspManaged" (POST /consents/account-access)

Кроки виконання:

  1. Обрати провайдера до якого створюється Consent, зафіксувати providerId
  2. Зробити Виклик до API:

POST /providers/{providerId}/ais/v2.0/consents/account-access

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

TPP-Redirect-URI: "https://google.com"

Content-Type: application/json

Authorization: "Bearer {openid-connect/token}"

PSU-IP-Address: "1.1.1.1"

TPP-Explicit-Authorisation-Preferred: true

Client-SCA-Approach-Preference: decoupled // АБО: Client-SCA-Approach-Preference: redirect

PSU-ID: "+380971112233" // Не обов'язковий при Client-SCA-Approach-Preference redirect

PSU-ID-Type: "PHONE" // Не обов'язковий при Client-SCA-Approach-Preference redirect

BODY:

{

  "access": {

    "payments": [

      {

        "rights": [

          "accountDetails",

          "balances",

          "transactions"

        ]

      }

    ]

  },

  "consentType": "aspspManaged",

  "recurringIndicator": true,

  "validTo": "2026-06-28",

  "frequencyPerDay": "4"

}

Очікуваний результат:

  1. Створено Consent з типом "aspspManaged"
  2. У відповіді присутній consentId Приклад відповіді:

{

  "consentStatus": "received",

  "consentId": "019c0916-ef4d-7228-babe-e0b2a03d57dd",

  "_links": {

    "self": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd"

    },

    "status": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/status"

    },

    "startAuthorisation": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c0916-ef4d-7228-babe-e0b2a03d57dd/authorisations"

    }

  }

}

Тест кейс №4 Авторизація Consent (POST /consents/account-access/{consent-id}/authorisations)

Передумови:

Кроки виконання:

  1. Зробити Виклик до API:

POST /providers/{providerId}/ais/v2/consents/account-access/{consent-id}/authorisations

HEADERS:

X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}

TPP-Redirect-URI: "https://google.com"

Content-Type: application/json

Authorization: "Bearer {openid-connect/token}"

PSU-IP-Address: "1.1.1.1"

TPP-Explicit-Authorisation-Preferred: true

Client-SCA-Approach-Preference: decoupled // АБО: Client-SCA-Approach-Preference: redirect

PSU-ID: "+380971112233" // Не обов'язковий при Client-SCA-Approach-Preference redirect

PSU-ID-Type: "PHONE" // Не обов'язковий при Client-SCA-Approach-Preference redirect

BODY:

{}

  1. Створено авторизацію для Consent
  2. У відповіді присутній scaStatus та authorisationId

Приклад відповіді:

{

  "consentStatus": "received",

  "consentId": "019c7aab-5419-7046-bcf5-e718134e0adc",

  "_links": {

    "self": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c7aab-5419-7046-bcf5-e718134e0adc"

    },

    "status": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c7aab-5419-7046-bcf5-e718134e0adc/status"

    },

    "startAuthorisation": {

      "href": "/sandbox/ais/v2.0/consents/account-access/019c7aab-5419-7046-bcf5-e718134e0adc/authorisations"

    }

Icon fond Учасник Фонду гарантування вкладів фізичних осіб
Сторінка не підтримується браузером

Сторінка не підтримується браузером

Ви користуєтеся застарілим браузером, який не підтримує сучасні веб-сторінки та загрожує вашій безпеці.

Будь ласка, встановіть сучасний браузер:

Pravex bank alt