5. Запит на отримання інформації по рахунку (Read Data)

Редакція OpenBanking Ukraine

Цей розділ описує запити AIS API для отримання інформації по рахунках PSU: список доступних рахунків (ідентифікатори), баланси та транзакції, за умови що відповідна згода PSU вже надана та збережена в ASPSP.

5.1. Отримання ідентифікаторів рахунків

Виклик

GET /v2/accounts {query-parameters}

Дозволяє отримати ідентифікатори рахунків з додатковою інформацією, яка описана у цьому розділі нижче. Передбачається, що згода PSU для цього доступу вже надана та збережена в системі ASPSP, вона визначає список рахунків, по яких можуть бути отримані ідентифікатори.

Query Parameters

АтрибутТипУмоваОпис
withBalanceBooleanOptionalСписок доступних рахунків, включаючи баланс, якщо такий тип доступу вказано PSU у відповідній згоді. Цей параметр може бути проігнорований ASPSP.

Request Header

АтрибутТипУмоваОпис
X-Request-IDUUIDMandatoryID запиту, унікальний для виклику, який визначається стороною-ініціатором.
Consent-IDMax70TextMandatoryІдентифікатор згоди PSU на отримання інформації по рахунку (див. Специфікацію API згоди).
PSU-IP-AddressStringConditionalПоле заголовка IP-адреси, що пересилається, складається з відповідного поля IP-адреси запиту HTTP між PSU і AISP. Він повинен міститися тоді, коли цей запит був активно ініційований PSU.
AuthorizationStringConditionalМіститься лише у випадку, якщо автентифікація на основі OAuth2 була виконана на попередньому кроці або SCA була виконана на основі OAuth2 в рамках відповідної авторизації згоди PSU.

Request Body

Немає.

Response Code

HTTP Response Code = 200

Response Header

АтрибутТипУмоваОпис
X-Request-IDUUIDMandatoryID запиту, унікальний для виклику, який визначається стороною-ініціатором.

Response Body

АтрибутТипУмоваОпис
accountsArray of Account DetailsMandatoryСписок деталей по рахунку, обов’язковим для повернення є атрибут resourceId (у наступних endpoints — це accountId) та currency. Значення accountId є постійним, принаймні протягом усього життєвого циклу даної згоди. Усі інші атрибути, зазначені у yaml файлі є опціональними для повернення ASPSP. У разі, якщо жоден рахунок недоступний по причині відсутності згоди PSU на доступ до цих рахунків, ASPSP повинен повернути порожній масив. Оскільки це також вважається позитивною відповіддю, то код відповіді повинен бути 200.

Приклад

Response body (приклад 1)

Відповідь у випадку, коли згоду PSU на отримання відомостей з рахунків надано на два різних IBAN:

{
  "accounts": [
    {
      "resourceId": "abd2f95f-0d4b-4dc1-9f2b-62cfcadda6fc",
      "iban": "UA233077700000026205011558000",
      "currency": "UAH",
      "balances": [
        {
          "balanceAmount": {
            "amount": "0.00",
            "currency": "UAH"
          },
          "balanceType": "interimAvailable",
          "referenceDate": "2024-12-25"
        }
      ],
      "_links": {
        "balances": {
          "href": "/v2/accounts/abd2f95f-0d4b-4dc1-9f2b-62cfcadda6fc/balances"
        },
        "transactions": {
          "href": "/v2/accounts/abd2f95f-0d4b-4dc1-9f2b-62cfcadda6fc/transactions"
        }
      }
    }
  ]
}

Response body (приклад 2)

Відповідь у випадку, коли згоду PSU на отримання відомостей з рахунків надана до мультивалютного рахунку по двох валютах мультивалютного рахунку.

5.2. Отримання балансу

Виклик

GET /v2/accounts/{account-id}/balances

Повертає баланс по рахунку відповідно до вказаного account-id.

Path Parameters

АтрибутТипОпис
account-idMax70TextЦе ідентифікатор рахунку, по якому потрібно отримати баланс. Атрибут account-id отримується за допомогою виклику GET /v2/accounts {query-parameters} (див. розділ 5.1) у атрибуті resourceId. Його значення є постійним, принаймні протягом усього життєвого циклу даної згоди.

Query Parameters

Відсутні.

Response Code

HTTP Response Code = 200.

Request Header

АтрибутТипУмоваОпис
X-Request-IDUUIDMandatoryID запиту, унікальний для виклику, який визначається стороною-ініціатором.
Consent-IDMax70TextMandatoryІдентифікатор згоди PSU на отримання інформації по рахунку (див. Специфікацію API згоди).
PSU-IP-AddressStringConditionalПоле header IP-адреси, що пересилається, складається з відповідного поля IP-адреси запиту HTTP між PSU і AISP. Він повинен міститися якщо цей запит був безпосередньо ініційований PSU.
AuthorizationStringConditionalМіститься лише у випадку, якщо автентифікація на основі OAuth2 була виконана на попередньому кроці або SCA була виконана на основі OAuth2 в рамках відповідної авторизації згоди PSU.

Request Body

Немає.

Response Header

АтрибутТипУмоваОпис
X-Request-IDUUIDMandatoryID запиту, унікальний для виклику, який визначається стороною-ініціатором.

Response Body

АтрибутТипУмоваОпис
accountAccount Reference (більше деталей у yaml файлі)MandatoryІдентифікатор рахунку по якому ініційовано запит. Примітка: це атрибут для ідентифікації рахунку є обов’язковим, IBAN та інші — опціональними.
balancesArray of Balance (більше деталей у yaml файлі)MandatoryБаланс по запитуваному рахунку. Набір атрибутів див. нижче у таблиці «Деталізація атрибуту balances».

Деталізація атрибуту balances

АтрибутТипУмоваОпис
balanceAmountAmountMandatoryСума балансу по рахунку
balanceTypeBalance TypeMandatoryТип балансу. Можливі значення: closingBooked; expected; openingBooked; interimAvailable. Примітка: рекомендовано підтримувати статус interimAvailable, незалежно від того підтримуються чи ні усі інші статуси із списку. Також: interimBooked; forwardAvailable; nonInvoiced. Примітка: визначення типів балансу відповідає визначенням у ISO20022. Примітка: ASPSP на порталі має зазначити: 1) які типи із зазначеного переліку балансу підтримує; 2) який із підтримуваних типів балансів використовує для відображення PSU балансу по рахунку у своєму платіжному застосунку; 3) який із підтримуваних типів балансів повертає «доступний баланс по рахунку».
creditLimitIncludedBooleanOptionalВказує чи включений кредитний ліміт до балансу відповідного рахунку чи ні.
lastChangeDateTimeISODateTimeOptionalЦей елемент даних може бути використаний, щоб вказати дату та час останньої платіжної операції і показати інший тип балансу, якщо ASPSP підтримує повернення інших типів балансів, крім рекомендованого interimAvailable.
referenceDateISODateOptionalВказує дату балансу.

Більше опціональних атрибутів можна знайти у yaml файлі.

Приклад

Response body

{
  "account": {
    "iban": "UA233077700000026205011558000",
    "currency": "UAH"
  },
  "balances": [
    {
      "balanceAmount": {
        "amount": "0.00",
        "currency": "UAH"
      },
      "balanceType": "interimAvailable",
      "referenceDate": "2025-01-20"
    }
  ]
}

5.3. Отримання списку транзакцій

Виклик

GET /v2/accounts/{account-id}/transactions {query-parameters}

Повертає список транзакцій по вказаному account-id.

Примітка: ASPSP може використовувати стандартні методи стиснення на рівні application для повідомлення відповіді, як зазначено в кодуванні header. У разі повернення форматів camt.05x, кілька файлів camt.05x можуть міститися в одній відповіді.

Path Parameters

АтрибутТипОпис
account-idMax70TextЦей ідентифікатор рахунку, по якому потрібно отримати список транзакцій. Атрибут account-id отримується за допомогою виклику GET /v2/accounts {query-parameters}, це значення, отримане в атрибуті resourceId (див. розділ 5.1). Його значення є постійним, принаймні протягом усього життєвого циклу даної згоди PSU.

Query Parameters

АтрибутТипУмоваОпис
bookingStatusMax35TextMandatoryМожливі значення: booked (status code = BOOK) — обов’язково підтримується ASPSP; pending (status code = PNDG) — опціонально підтримується ASPSP; both — опціонально підтримується ASPSP (передається якщо потрібна інформація по транзакціях у статусі booked та pending); information (status code = INFO) — опціонально підтримується ASPSP (лише інформація по транзакціях за поточну дату); all — опціонально підтримується ASPSP (для booked, pending, information). Якщо будь-який із опціональних статусів не підтримується — повертається відповідний код помилки (див. Data Dictionary). Визначення статусів відповідають ISO20022.
dateFromISODateConditionalПочаткова дата (включно з dateFrom) списку транзакцій. Можна ігнорувати якщо bookingStatus дорівнює information. Для транзакцій у статусі booked відповідною датою є дата проведення по рахунку; для pending — дата ініціювання. Якщо bookingStatus = all — дата може бути проігнорована для транзакцій, зазначених у bookingStatus = information. У рамках базових API передається дата у форматі ISODate у межах періоду 31 календарний день від поточної дати. Якщо AISP не передасть цей параметр або передасть некоректну дату (некоректний формат, дата перевищує 31 день тощо) — ASPSP запит не відхиляє, у відповіді передає список транзакцій за 31 календарний день від поточної дати.
dateToISODateOptionalКінцева дата (включно з dateTo) списку транзакцій, за замовчуванням «сьогодні», якщо не вказано. У рамках базових API — у межах 31 календарного дня від поточної дати. Для booked відповідна дата — дата проведення; для pending — дата ініціювання. Якщо bookingStatus = all, ця дата може бути проігнорована для транзакцій, зазначених у bookingStatus = information.
withBalanceBooleanOptionalЯкщо передано — буде повернено список транзакцій, включаючи баланс, якщо він надається PSU у відповідній згоді та доступний ASPSP. ASPSP в окремому атрибуті (balanceType) може передати який саме тип балансу вказаний. Цей параметр може бути проігноровано ASPSP.
limitIntegerOptionalКількість елементів, що повертаються на сторінку.
offsetIntegerOptionalКількість елементів, пропущених перед початком вибірки результатів.

ПРИМІТКА: У випадку bookingStatus = information, параметри dateFrom, dateTo, withBalance будуть проігноровані і не вплинуть на результат.

Request Header

АтрибутТипУмоваОпис
X-Request-IDUUIDMandatoryID запиту, унікальний для виклику, який визначається стороною-ініціатором.
Consent-IDMax70TextMandatoryІдентифікатор згоди PSU (див. Специфікацію API згоди).
PSU-IP-AddressStringConditionalПоле header IP-адреси, що пересилається, складається з відповідного поля IP-адреси запиту HTTP між PSU і AISP. Він повинен міститися якщо цей запит був безпосередньо ініційований PSU.
AuthorizationStringConditionalМіститься лише у випадку, якщо автентифікація на основі OAuth2 була виконана на попередньому кроці або SCA була виконана на основі OAuth2 в рамках відповідної авторизації згоди PSU.
AcceptStringOptionalAISP може вказати бажаний формат відповіді. Формати, підтримувані цією специфікацією: JSON (обов’язковий для базових API); xml; text. Якщо формат не вказаний — за замовчуванням ASPSP поверне відповідь у форматі JSON.

Request Body

Немає.

Response Code

HTTP Response Code = 200.

Response Header

АтрибутТипУмоваОпис
Content-TypeStringMandatoryМожливі значення: application/json (обов’язковий для усіх базових API); application/xml (XML camt.05x, MT94x можлива для юридичних осіб); text/plain.
X-Request-IDUUIDMandatoryІдентифікатор запиту, унікальний для виклику, визначений стороною-ініціатором.

Response Body (JSON)

АтрибутТипУмоваОпис
accountAccount ReferenceMandatoryІдентифікатор запитуваного рахунку.
transactionsAccount ReportOptionalСписок транзакцій по рахунку у форматі JSON згідно параметрів запиту. Примітка: рекомендується надавати інформацію про операцію у цьому атрибуті (див. таблицю нижче), а не тільки в окремому endpoint для отримання деталей операції (цей endpoint зараз не входить в специфікацію). Така реалізація дозволяє уникнути занадто частого виклику endpoint для отримання деталей транзакції.
nextOffsetIntegerOptionalЗміщення для наступного набору елементів. Цей атрибут доданий до оригінальної специфікації Berlin Group і відсутній в yaml файлі.
previousOffsetIntegerOptionalЗміщення для попереднього набору елементів. Цей атрибут доданий до оригінальної специфікації Berlin Group і відсутній в yaml файлі.
sizeIntegerOptionalЗагальна кількість доступних елементів. Цей атрибут доданий до оригінальної специфікації Berlin Group і відсутній в yaml файлі.
balancesArray of BalanceOptionalПерелік балансів по цьому рахунку або тільки поточний баланс.
_linksLinksOptionalСписок гіперпосилань, які можуть бути використані AISP. Тип посилань, дозволених у цій відповіді: download — посилання на ресурс, де список транзакцій може бути завантажений у випадку, коли списки операцій мають надзвичайно великий розмір (ці вимоги визначає ASPSP). Зауваження: ця функція повинна використовуватися тільки там, де запитуються camt-дані, які мають величезний розмір.

Деталізація атрибуту transactions

Примітка: атрибути у таблиці нижче, які вказані як опціональні, є рекомендованими для повернення ASPSP у відповіді на запит AISP про список транзакцій.

АтрибутУмоваОпис
transactionAmountMandatoryСума (включаючи комісію) і валюта транзакції у валюті операції, незалежно від валюти рахунку та статусу транзакції.
transactionFeesOptionalСума комісії по транзакції (якщо вона відома ASPSP).
amountDetailsOptionalВсі атрибути цього об’єкту (повний перелік зазначений в yaml-файлі), якщо ASPSP бажає надати більше деталей стосовно транзакції.
bookingDateOptionalДата проведення ASPSP транзакції по рахунку у форматі ISO. Приклад: 2020-01-01.
valueDateOptionalДата валютування у форматі ISO. Запланована майбутня дата, коли кошти, що становлять суму платіжної транзакції стануть доступними для власника рахунку у разі кредитового переказу або перестають бути доступними у разі дебетового переказу. Приклад: 2020-01-01.
cardTransaction.transactionDateTimeOptionalДата та час здійснення PSU платіжної транзакції з використанням електронного платіжного засобу, отримані ASPSP із інформаційної системи еквайра у форматі ISO.
cardTransaction.merchantCategoryCodeOptionalКод торговця (merchantCategoryCode — MCC у форматі ISO) для платіжної транзакції з використанням електронного платіжного засобу, отриманий ASPSP із інформаційної системи еквайра.
cardTransaction.tradeNameOptionalНазва торговця (tradeName) для платіжної транзакції з використанням електронного платіжного засобу, отриманий ASPSP із інформаційної системи еквайра.
cardTransaction.cardAcceptorAddressOptionalНазва міста (townName) та країни (country) торговця для платіжної транзакції з використанням електронного платіжного засобу, отримані ASPSP із інформаційної системи еквайра. Якщо торговця визначити неможливо або інформація відсутня у ASPSP — атрибут залишається незаповненим.
creditorConditionalПередається назва (string) кінцевого отримувача. Якщо кінцевого отримувача визначити неможливо — атрибут залишається незаповненим.
creditor AccountConditionalПередається IBAN кінцевого отримувача або інший наявний ідентифікатор рахунку отримувача із списку атрибутів у creditorAccount відповідно до переліку атрибутів у yaml файлі) або атрибут залишається незаповненим.
debtor.nameOptionalПередається назва (string) платника. Якщо платника визначити неможливо — атрибут залишається незаповненим.
debtorAccountConditionalПередається IBAN кінцевого платника або інший наявний ідентифікатор рахунку платника із списку атрибутів у debtorAccount відповідно до переліку атрибутів у yaml файлі) або атрибут залишається незаповненим.
remittance Information UnstructuredOptional Max420TextПередається призначення платежу.
additionalTransactionInformationOptionalДеталі транзакції.
bankTransactionCodeProprietaryOptionalКороткий опис транзакції