5. Запит на отримання інформації по рахунку (Read Data)
Цей розділ описує запити AIS API для отримання інформації по рахунках PSU: список доступних рахунків (ідентифікатори), баланси та транзакції, за умови що відповідна згода PSU вже надана та збережена в ASPSP.
5.1. Отримання ідентифікаторів рахунків
Виклик
GET /v2/accounts {query-parameters}
Дозволяє отримати ідентифікатори рахунків з додатковою інформацією, яка описана у цьому розділі нижче. Передбачається, що згода PSU для цього доступу вже надана та збережена в системі ASPSP, вона визначає список рахунків, по яких можуть бути отримані ідентифікатори.
Query Parameters
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| withBalance | Boolean | Optional | Список доступних рахунків, включаючи баланс, якщо такий тип доступу вказано PSU у відповідній згоді. Цей параметр може бути проігнорований ASPSP. |
Request Header
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| X-Request-ID | UUID | Mandatory | ID запиту, унікальний для виклику, який визначається стороною-ініціатором. |
| Consent-ID | Max70Text | Mandatory | Ідентифікатор згоди PSU на отримання інформації по рахунку (див. Специфікацію API згоди). |
| PSU-IP-Address | String | Conditional | Поле заголовка IP-адреси, що пересилається, складається з відповідного поля IP-адреси запиту HTTP між PSU і AISP. Він повинен міститися тоді, коли цей запит був активно ініційований PSU. |
| Authorization | String | Conditional | Міститься лише у випадку, якщо автентифікація на основі OAuth2 була виконана на попередньому кроці або SCA була виконана на основі OAuth2 в рамках відповідної авторизації згоди PSU. |
Request Body
Немає.
Response Code
HTTP Response Code = 200
Response Header
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| X-Request-ID | UUID | Mandatory | ID запиту, унікальний для виклику, який визначається стороною-ініціатором. |
Response Body
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| accounts | Array of Account Details | Mandatory | Список деталей по рахунку, обов’язковим для повернення є атрибут 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-id | Max70Text | Це ідентифікатор рахунку, по якому потрібно отримати баланс. Атрибут account-id отримується за допомогою виклику GET /v2/accounts {query-parameters} (див. розділ 5.1) у атрибуті resourceId. Його значення є постійним, принаймні протягом усього життєвого циклу даної згоди. |
Query Parameters
Відсутні.
Response Code
HTTP Response Code = 200.
Request Header
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| X-Request-ID | UUID | Mandatory | ID запиту, унікальний для виклику, який визначається стороною-ініціатором. |
| Consent-ID | Max70Text | Mandatory | Ідентифікатор згоди PSU на отримання інформації по рахунку (див. Специфікацію API згоди). |
| PSU-IP-Address | String | Conditional | Поле header IP-адреси, що пересилається, складається з відповідного поля IP-адреси запиту HTTP між PSU і AISP. Він повинен міститися якщо цей запит був безпосередньо ініційований PSU. |
| Authorization | String | Conditional | Міститься лише у випадку, якщо автентифікація на основі OAuth2 була виконана на попередньому кроці або SCA була виконана на основі OAuth2 в рамках відповідної авторизації згоди PSU. |
Request Body
Немає.
Response Header
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| X-Request-ID | UUID | Mandatory | ID запиту, унікальний для виклику, який визначається стороною-ініціатором. |
Response Body
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| account | Account Reference (більше деталей у yaml файлі) | Mandatory | Ідентифікатор рахунку по якому ініційовано запит. Примітка: це атрибут для ідентифікації рахунку є обов’язковим, IBAN та інші — опціональними. |
| balances | Array of Balance (більше деталей у yaml файлі) | Mandatory | Баланс по запитуваному рахунку. Набір атрибутів див. нижче у таблиці «Деталізація атрибуту balances». |
Деталізація атрибуту balances
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| balanceAmount | Amount | Mandatory | Сума балансу по рахунку |
| balanceType | Balance Type | Mandatory | Тип балансу. Можливі значення: closingBooked; expected; openingBooked; interimAvailable. Примітка: рекомендовано підтримувати статус interimAvailable, незалежно від того підтримуються чи ні усі інші статуси із списку. Також: interimBooked; forwardAvailable; nonInvoiced. Примітка: визначення типів балансу відповідає визначенням у ISO20022. Примітка: ASPSP на порталі має зазначити: 1) які типи із зазначеного переліку балансу підтримує; 2) який із підтримуваних типів балансів використовує для відображення PSU балансу по рахунку у своєму платіжному застосунку; 3) який із підтримуваних типів балансів повертає «доступний баланс по рахунку». |
| creditLimitIncluded | Boolean | Optional | Вказує чи включений кредитний ліміт до балансу відповідного рахунку чи ні. |
| lastChangeDateTime | ISODateTime | Optional | Цей елемент даних може бути використаний, щоб вказати дату та час останньої платіжної операції і показати інший тип балансу, якщо ASPSP підтримує повернення інших типів балансів, крім рекомендованого interimAvailable. |
| referenceDate | ISODate | Optional | Вказує дату балансу. |
Більше опціональних атрибутів можна знайти у 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-id | Max70Text | Цей ідентифікатор рахунку, по якому потрібно отримати список транзакцій. Атрибут account-id отримується за допомогою виклику GET /v2/accounts {query-parameters}, це значення, отримане в атрибуті resourceId (див. розділ 5.1). Його значення є постійним, принаймні протягом усього життєвого циклу даної згоди PSU. |
Query Parameters
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| bookingStatus | Max35Text | Mandatory | Можливі значення: 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. |
| dateFrom | ISODate | Conditional | Початкова дата (включно з dateFrom) списку транзакцій. Можна ігнорувати якщо bookingStatus дорівнює information. Для транзакцій у статусі booked відповідною датою є дата проведення по рахунку; для pending — дата ініціювання. Якщо bookingStatus = all — дата може бути проігнорована для транзакцій, зазначених у bookingStatus = information. У рамках базових API передається дата у форматі ISODate у межах періоду 31 календарний день від поточної дати. Якщо AISP не передасть цей параметр або передасть некоректну дату (некоректний формат, дата перевищує 31 день тощо) — ASPSP запит не відхиляє, у відповіді передає список транзакцій за 31 календарний день від поточної дати. |
| dateTo | ISODate | Optional | Кінцева дата (включно з dateTo) списку транзакцій, за замовчуванням «сьогодні», якщо не вказано. У рамках базових API — у межах 31 календарного дня від поточної дати. Для booked відповідна дата — дата проведення; для pending — дата ініціювання. Якщо bookingStatus = all, ця дата може бути проігнорована для транзакцій, зазначених у bookingStatus = information. |
| withBalance | Boolean | Optional | Якщо передано — буде повернено список транзакцій, включаючи баланс, якщо він надається PSU у відповідній згоді та доступний ASPSP. ASPSP в окремому атрибуті (balanceType) може передати який саме тип балансу вказаний. Цей параметр може бути проігноровано ASPSP. |
| limit | Integer | Optional | Кількість елементів, що повертаються на сторінку. |
| offset | Integer | Optional | Кількість елементів, пропущених перед початком вибірки результатів. |
ПРИМІТКА: У випадку bookingStatus = information, параметри dateFrom, dateTo, withBalance будуть проігноровані і не вплинуть на результат.
Request Header
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| X-Request-ID | UUID | Mandatory | ID запиту, унікальний для виклику, який визначається стороною-ініціатором. |
| Consent-ID | Max70Text | Mandatory | Ідентифікатор згоди PSU (див. Специфікацію API згоди). |
| PSU-IP-Address | String | Conditional | Поле header IP-адреси, що пересилається, складається з відповідного поля IP-адреси запиту HTTP між PSU і AISP. Він повинен міститися якщо цей запит був безпосередньо ініційований PSU. |
| Authorization | String | Conditional | Міститься лише у випадку, якщо автентифікація на основі OAuth2 була виконана на попередньому кроці або SCA була виконана на основі OAuth2 в рамках відповідної авторизації згоди PSU. |
| Accept | String | Optional | AISP може вказати бажаний формат відповіді. Формати, підтримувані цією специфікацією: JSON (обов’язковий для базових API); xml; text. Якщо формат не вказаний — за замовчуванням ASPSP поверне відповідь у форматі JSON. |
Request Body
Немає.
Response Code
HTTP Response Code = 200.
Response Header
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| Content-Type | String | Mandatory | Можливі значення: application/json (обов’язковий для усіх базових API); application/xml (XML camt.05x, MT94x можлива для юридичних осіб); text/plain. |
| X-Request-ID | UUID | Mandatory | Ідентифікатор запиту, унікальний для виклику, визначений стороною-ініціатором. |
Response Body (JSON)
| Атрибут | Тип | Умова | Опис |
|---|---|---|---|
| account | Account Reference | Mandatory | Ідентифікатор запитуваного рахунку. |
| transactions | Account Report | Optional | Список транзакцій по рахунку у форматі JSON згідно параметрів запиту. Примітка: рекомендується надавати інформацію про операцію у цьому атрибуті (див. таблицю нижче), а не тільки в окремому endpoint для отримання деталей операції (цей endpoint зараз не входить в специфікацію). Така реалізація дозволяє уникнути занадто частого виклику endpoint для отримання деталей транзакції. |
| nextOffset | Integer | Optional | Зміщення для наступного набору елементів. Цей атрибут доданий до оригінальної специфікації Berlin Group і відсутній в yaml файлі. |
| previousOffset | Integer | Optional | Зміщення для попереднього набору елементів. Цей атрибут доданий до оригінальної специфікації Berlin Group і відсутній в yaml файлі. |
| size | Integer | Optional | Загальна кількість доступних елементів. Цей атрибут доданий до оригінальної специфікації Berlin Group і відсутній в yaml файлі. |
| balances | Array of Balance | Optional | Перелік балансів по цьому рахунку або тільки поточний баланс. |
| _links | Links | Optional | Список гіперпосилань, які можуть бути використані AISP. Тип посилань, дозволених у цій відповіді: download — посилання на ресурс, де список транзакцій може бути завантажений у випадку, коли списки операцій мають надзвичайно великий розмір (ці вимоги визначає ASPSP). Зауваження: ця функція повинна використовуватися тільки там, де запитуються camt-дані, які мають величезний розмір. |
Деталізація атрибуту transactions
Примітка: атрибути у таблиці нижче, які вказані як опціональні, є рекомендованими для повернення ASPSP у відповіді на запит AISP про список транзакцій.
| Атрибут | Умова | Опис |
|---|---|---|
| transactionAmount | Mandatory | Сума (включаючи комісію) і валюта транзакції у валюті операції, незалежно від валюти рахунку та статусу транзакції. |
| transactionFees | Optional | Сума комісії по транзакції (якщо вона відома ASPSP). |
| amountDetails | Optional | Всі атрибути цього об’єкту (повний перелік зазначений в yaml-файлі), якщо ASPSP бажає надати більше деталей стосовно транзакції. |
| bookingDate | Optional | Дата проведення ASPSP транзакції по рахунку у форматі ISO. Приклад: 2020-01-01. |
| valueDate | Optional | Дата валютування у форматі ISO. Запланована майбутня дата, коли кошти, що становлять суму платіжної транзакції стануть доступними для власника рахунку у разі кредитового переказу або перестають бути доступними у разі дебетового переказу. Приклад: 2020-01-01. |
| cardTransaction.transactionDateTime | Optional | Дата та час здійснення PSU платіжної транзакції з використанням електронного платіжного засобу, отримані ASPSP із інформаційної системи еквайра у форматі ISO. |
| cardTransaction.merchantCategoryCode | Optional | Код торговця (merchantCategoryCode — MCC у форматі ISO) для платіжної транзакції з використанням електронного платіжного засобу, отриманий ASPSP із інформаційної системи еквайра. |
| cardTransaction.tradeName | Optional | Назва торговця (tradeName) для платіжної транзакції з використанням електронного платіжного засобу, отриманий ASPSP із інформаційної системи еквайра. |
| cardTransaction.cardAcceptorAddress | Optional | Назва міста (townName) та країни (country) торговця для платіжної транзакції з використанням електронного платіжного засобу, отримані ASPSP із інформаційної системи еквайра. Якщо торговця визначити неможливо або інформація відсутня у ASPSP — атрибут залишається незаповненим. |
| creditor | Conditional | Передається назва (string) кінцевого отримувача. Якщо кінцевого отримувача визначити неможливо — атрибут залишається незаповненим. |
| creditor Account | Conditional | Передається IBAN кінцевого отримувача або інший наявний ідентифікатор рахунку отримувача із списку атрибутів у creditorAccount відповідно до переліку атрибутів у yaml файлі) або атрибут залишається незаповненим. |
| debtor.name | Optional | Передається назва (string) платника. Якщо платника визначити неможливо — атрибут залишається незаповненим. |
| debtorAccount | Conditional | Передається IBAN кінцевого платника або інший наявний ідентифікатор рахунку платника із списку атрибутів у debtorAccount відповідно до переліку атрибутів у yaml файлі) або атрибут залишається незаповненим. |
| remittance Information Unstructured | Optional Max420Text | Передається призначення платежу. |
| additionalTransactionInformation | Optional | Деталі транзакції. |
| bankTransactionCodeProprietary | Optional | Короткий опис транзакції |