| Версія | Опис змін | Дата |
| v.1.0 | Початкова версія | 30.04.26 |
| v.1.1 |
Додана таблиця з хостами Назви нових змінних прописані в описі програми тестування |
21.05.26 |
| v.1.2 |
Оновлена таблиця з хостами Внесені зміни у опис програми відповідно до змін типу авторизації з Oauth2 на api-key |
23.07.26 |
Hosts
| Назва змінної | PREPROD SANDBOX | PREPROD LIVE | PROD SANDBOX | PROD LIVE |
| apiHost | sandbox.preprod.api.upc.ua | live.preprod.api.upc.ua | sandbox.api.upc.ua |
live.api.upc.ua |
Доступ до рахунку (Account Information Service)
1. Тестові сценарії для створення account Consent
Тест кейс # 1. Сreate Consent тип "detailed" | POST /consents/account-access
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
Користувач зареєстрований в системі
Має дійсний токен доступу (див. API-ключі)
Кроки виконання:
- Обрати провайдера, до якого створюється Consent, та зафіксувати providerId
- Обрати список accounts для створення Consent, зафіксувати IBANи
- Зробити Виклик до API:
POST https://{apiHost}/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
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
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"
}
Очікуваний результат:
- Створено Consent з типом "detailed"
- У відповіді присутній 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
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач зареєстрований в системі
- Має дійсний токен доступу (див. API-ключі)
Кроки виконання:
- Обрати провайдера до якого створюється Consent, зафіксувати providerId
- Зробити Виклик до API:
POST https://{apiHost}/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
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
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"
}
Очікуваний результат:
- Створено Consent з типом "accountList"
- У відповіді присутній 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. Сreate Consent тип "aspspManaged" | POST /consents/account-access
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Важливо:
- тип "aspspManaged" підтримується лише зі специфікації версії 2.2.0 (2.0.6)
Передумови:
- Користувач зареєстрований в системі
- Має дійсний токен доступу (див. API-ключі)
Кроки виконання:
- Обрати провайдера до якого створюється Consent, зафіксувати providerId
- Зробити Виклик до API:
POST https://{apiHost}/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
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
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"
}
Очікуваний результат:
- Створено Consent з типом "aspspManaged"
- У відповіді присутній 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. Тестові сценарії для авторизації Consent
Тест кейс # 4. Авторизація Consent | POST /consents/account-access/{consent-id}/authorisations
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
Користувач має дійсний токен доступу (див. API-ключі)
Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId
Кроки виконання:
- Зробити Виклик до API:
POST https://{apiHost}/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
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
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:
{}
- Створено авторизацію для Consent
- У відповіді присутній 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"
}
}
}
Для Client-SCA-Approach-Preference: redirect
- Прейти за посиланням scaRedirect (якщо Client-SCA-Approach-Preference: redirect) або ініціювати SCA через інший канал (якщо Client-SCA-Approach-Preference: decoupled)
- на Sandbox сторінці створено обробник, де можна прийняти або відхилити запит на авторизацію:
- Підтвердити авторизацію натиснувши "Accept"
Для Client-SCA-Approach-Preference: decoupled
Приклад відповіді:
{
"scaStatus": "finalised",
"_links": {
"scaStatus": {
"href": "/sandbox/ais/v2.0/consents/account-access/019c7b2e-6a91-7644-ae5d-c2617e6931d5/authorisations/019c7b2e-7c47-7d5b-beb5-593ac088df1e"
}
},
"authorisationId": "019c7b2e-7c47-7d5b-beb5-593ac088df1e",
"psuMessage": "Authorize payment in Bank's mobile application"
}
Для sandbox доступний емулятор, який автоматично підтверджує авторизацію через 1 секунду після створення авторизації.
Очікуваний результат:
- Відбувається перенаправлення на Google (або інший вказаний TPP-Redirect-URI, якщо середовище не sandbox)
- При виклику статусу GET по ConsentId має бути статус "valid" (див. Тест кейс #5)
3. Тестові сценарії перевірки Consent та Consent Authorisation
Тест кейс # 5. Отримання статусу Consent | GET /consents/account-access/{consent-id}/status
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}/status
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
null
Очікуваний результат:
- Тіло відповіді містить поточний статус Consent.
Приклад відповіді:
{
"consentStatus": "valid"
}
Тест кейс # 6. Отримання статусу всіх Authorisations для одного Consent | GET /consents/account-access/{consent-id}/authorisations
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}/authorisations
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
null
Очікуваний результат:
- Тіло відповіді містить список id авторизацій для Consent.
Приклад відповіді:
{
"authorisationIds": [
"019c0e6d-1ef7-7f4e-a552-d7cec5ff34d9"
]
}
Тест кейс # 7. Отримання статусу унікального Authorisation Consent | GET /consents/account-access/{consent-id}/authorisations/{authorisation-id}
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId
- Існує створена авторизація для Consent (див. Тест кейс #4), зафіксовано authorisationId (див. Тест кейс #6)
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}/authorisations/{authorisation-id}
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
null
Очікуваний результат:
- Тіло відповіді містить поточний статус авторизації Consent.
Приклад відповіді:
{
"scaStatus": "finalised",
"_links": {
"scaStatus": {
"href": "/sandbox/ais/v2.0/consents/account-access/019c0e6c-f7cf-70f7-983f-05df521de43d/authorisations/019c0e6d-1ef7-7f4e-a552-d7cec5ff34d9"
},
"scaRedirect": {
"href": "https://portal.preprod.api.upc.ua/sca-client/mock/upc/bfdb6794-bcb8-4dde-9f3b-07acf73ef202/019c0e6d-1ef7-7f4e-a552-d7cec5ff34d9/consent"
}
},
"authorisationId": "019c0e6d-1ef7-7f4e-a552-d7cec5ff34d9"
}
Тест кейс # 8. Отримання об'єкту Consent | GET /consents/account-access/{consent-id}
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
{}
Очікуваний результат:
Тіло відповіді містить деталі Consent: поточний стату, права доступу, тип, термін дії тощо.
Приклад відповіді:
{
"consentStatus": "valid",
"_links": {
"self": {
"href": "/sandbox/ais/v2.0/consents/account-access/019c0e6c-f7cf-70f7-983f-05df521de43d"
},
"status": {
"href": "/sandbox/ais/v2.0/consents/account-access/019c0e6c-f7cf-70f7-983f-05df521de43d/status"
},
"account": {
"href": "/sandbox/ais/v2.0/accounts"
}
},
"access": {
"payments": [
{
"rights": [
"accountDetails",
"balances",
"transactions"
]
}
]
},
"consentType": "accountList",
"recurringIndicator": true,
"validTo": "2026-06-28",
"frequencyPerDay": 4,
"combinedServiceIndicator": false
}
Тест кейс # 9. Відкликання Consent | DELETE /consents/account-access/{consent-id}
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений Consent (див. Тест кейс #1, #2 або #3), зафіксовано consentId
Кроки виконання:
- Зробити Виклик до API:
DELETE https://{apiHost}/providers/{providerId}/ais/v2/consents/account-access/{consent-id}
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
null
Очікуваний результат:
Отримано відповідь з кодом 204 No Content. При подальшому запиті статусу Consent (див. Тест кейс #5) має бути "terminatedByTpp" чи "revokedByPsu" залежно від того, хто ініціював відкликання.
4: Тестові сценарії використання account Consent
ВАЖЛИВО: Передумова для наступних тест кейсів
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений Consent (див. Тест кейс #1, #2 або #3) та він має статус "valid" (див. Тест кейс #4)
- Зафіксовано consentId
Тест кейс # 10. Отримання списку рахунків | GET /accounts
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Кроки виконання:
Зробити Виклик до API:
GET https://{apiHost}/providers/{providerId}/ais/v2/accounts
QUERY PARAMETERS:
withBalance: boolean // Ігнорується, якщо Consent не передбачає доступ до балансів
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
Consent-ID: "{consentId}"
PSU-IP-Address: "8.8.8.8"
PSU-Corporate-ID: "123456789" // Не обов'язковий
PSU-Corporate-ID-Type: "PHONE" // Не обов'язковий
BODY:
null
Очікуваний результат:
Список рахунків, які відповідають правам доступу, визначеним у Consent. Якщо Consent передбачає доступ до балансів, то у відповіді також будуть включені баланси для кожного рахунку.
Приклад відповіді без балансів:
{
"accounts": [
{
"iban": "UA1234567890123456789012134567",
"currency": "UAH",
"resourceId": "e555222c-6304-40aa-9933-7952e2fd9999",
"name": "Current account",
"cashAccountType": "CACC",
"_links": {
"balances": {
"href": "/sandbox/ais/v2.0/accounts/{resourceId}/balances"
},
"transactions": {
"href": "/sandbox/ais/v2.0/accounts/{resourceId}/transactions?dateFrom=2017-01-01&bookingStatus=both"
}
}
}
]
}
Приклад відповіді з балансами:
{
"accounts": [
{
"iban": "UA313220000000026007233566001",
"currency": "UAH",
"resourceId": "e555222c-6304-40aa-9933-7952e2fd9999",
"name": "Current account",
"cashAccountType": "CACC",
"balances": [
{
"balanceAmount": {
"currency": "UAH",
"amount": "500000.00"
},
"balanceType": "closingBooked"
},
{
"balanceAmount": {
"currency": "UAH",
"amount": "500000.00"
},
"balanceType": "expected"
}
],
"_links": {
"balances": {
"href": "/sandbox/ais/v2.0/accounts/{resourceId}/balances"
},
"transactions": {
"href": "/sandbox/ais/v2.0/accounts/{resourceId}/transactions?dateFrom=2017-01-01&bookingStatus=both"
}
}
}
]
}
Тест кейс # 11. Отримання деталей рахунку | GET /accounts/{account-id}
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{providerId}/ais/v2/accounts/{account-id}
QUERY PARAMETERS:
withBalance: boolean // Ігноється, якщо Consent не передбачає доступ до балансів
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
Consent-ID: "{consentId}"
PSU-IP-Address: "8.8.8.8"
PSU-Corporate-ID: "123456789" // Не обов'язковий
PSU-Corporate-ID-Type: "PHONE" // Не обов'язковий
BODY:
null
Очікуваний результат:
Надає деталі по рахунку, якщо у Consent передбачені права доступу. Якщо Consent передбачає доступ до балансів, і withBalance=true то відповіді також будуть включені баланси для кожного рахунку.
Приклад відповіді без балансів:
{
"iban": "UA1234567890123456789012134567",
"currency": "UAH",
"resourceId": "e555222c-6304-40aa-9933-7952e2fd9999",
"name": "Current account",
"cashAccountType": "CACC",
"_links": {
"balances": {
"href": "/sandbox/ais/v2.0/accounts/{resourceId}/balances"
},
"transactions": {
"href": "/sandbox/ais/v2.0/accounts/{resourceId}/transactions?dateFrom=2017-01-01&bookingStatus=both"
}
}
}
Приклад відповіді з балансами:
{
"account": {
"iban": "UA313220000000026007233566001",
"currency": "UAH",
"resourceId": "e55022cc-6304-40aa-9733-7952e2fd9597",
"name": "Current account",
"cashAccountType": "CACC",
"balances": [
{
"balanceAmount": {
"currency": "UAH",
"amount": "500000.00"
},
"balanceType": "closingBooked"
}
],
"_links": {
"balances": {
"href": "/sandbox/ais/v2.0/accounts/e55022cc-6304-40aa-9733-7952e2fd9597/balances"
},
"transactions": {
"href": "/sandbox/ais/v2.0/accounts/e55022cc-6304-40aa-9733-7952e2fd9597/transactions?dateFrom=2017-01-01&bookingStatus=both"
}
}
}
}
Тест кейс # 12. Отримання транзакцій рахунку | GET /accounts/{account-id}/transactions
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{providerId}/ais/v2/accounts/{account-id}/transactions
QUERY PARAMETERS:
withBalance: boolean // Ігноється, якщо Consent не передбачає доступ до балансів
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
Consent-ID: "{consentId}"
PSU-IP-Address: "8.8.8.8"
PSU-Corporate-ID: "123456789" // Не обов'язковий
PSU-Corporate-ID-Type: "PHONE" // Не обов'язковий
BODY:
null
Очікуваний результат:
Надає деталі по транзакціям, якщо у Consent передбачені права доступу.
Приклад відповіді:
{
"account": {
"iban": "UA313220000000026007233566001",
"currency": "UAH"
},
"transactions": {
"booked": [
{
"transactionId": 123,
"debtor": {
"name": "Debtor name"
},
"debtorAccount": {
"iban": "LV80BANK0000435195001",
"currency": "EUR"
},
"creditor": {
"name": "Creditor name"
},
"creditorAccount": {
"iban": "LV80BANK0000435195321",
"currency": "EUR"
},
"transactionAmount": {
"currency": "EUR",
"amount": 123.32
},
"bookingDate": "12.12.2012",
"valueDate": "12.12.2012",
"remittanceInformationUnstructured": "Some details"
}
],
"pending": [],
"_links": {
"account": {
"href": "/sandbox/ais/v2.0/accounts/c59ab17b-6a71-4052-aef5-72165783f4bf"
}
}
},
"size": 0,
"limit": 20
}
Тест кейс # 13. Отримання деталей транзакції | GET /accounts/{account-id}/transactions/{transactionId}
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{providerId}/ais/v2/accounts/{account-id}/transactions/{transaction-іd}
QUERY PARAMETERS:
dateFrom: date // Обов'язковий, у форматі YYYY-MM-DD
bookingStatus: string // обов'язковий. Можливі значення - booked, pending, both
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
Consent-ID: "{consentId}"
PSU-IP-Address: "8.8.8.8"
PSU-Corporate-ID: "123456789" // Не обов'язковий
PSU-Corporate-ID-Type: "PHONE" // Не обов'язковий
BODY:
null
Очікуваний результат:
Надає деталі по транзакції, якщо у Consent передбачені права доступу.
Приклад відповіді:
{
"account": {
"iban": "LV80BANK0000435195001",
"currency": "EUR"
},
"transactionsDetails": {
"transactionId": 123,
"debtor": {
"name": "Debtor name"
},
"debtorAccount": {
"iban": "LV80BANK0000435195001",
"currency": "EUR"
},
"creditor": {
"name": "Creditor name"
},
"creditorAccount": {
"iban": "LV80BANK0000435195321",
"currency": "EUR"
},
"transactionAmount": {
"currency": "EUR",
"amount": 123.32
},
"bookingDate": "12.12.2012",
"valueDate": "12.12.2012",
"remittanceInformationUnstructured": "Some details"
}
}
Ініціація платежу (Payment Initiation Service)
1. Тестові сценарії Payment Initiation Service
Тест кейс # 1. Сreate consent initiation payments | POST /payments/instant-credit-transfers | POST /payments/credit-transfers
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач зареєстрований в системі
- Має дійсний токен доступу (див. API-ключі)
Кроки виконання:
- Обрати провайдера до якого створюється платіж, зафіксувати providerId
- обрати тип {payment-product} - instant-credit-transfers або credit-transfers
- Зробити виклик до API:
POST https://{apiHost}/providers/{provider-id}/pis/v2/payments/{payment-product}
HEADERS:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 // {uuid}
PSU-IP-Address: "1.1.1.1"
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
{
"debtorAccount": {
"iban": "UA313220000000026007233566001",
"currency": "UAH"
},
"instructedAmount": {
"currency": "UAH",
"amount": "12.21"
},
"creditor": {
"name": "Coden Postal",
"creditorId": "CP122540",
"creditorIdType": "PSPT"
},
"creditorAccount": {
"iban": "UA633220000000029908753443001",
"currency": "UAH"
},
"remittanceInformationUnstructured": [
"Some details"
]
}
Очікуваний результат:
- Створено платіж з "transactionStatus": "RCVD"
- У відповіді присутній "paymentId".
Приклад відповіді:
{
"transactionStatus": "RCVD",
"paymentId": "019cfaf3-6d52-76a0-9064-969a181c03ee",
"_links": {
"self": {
"href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfaf3-6d52-76a0-9064-969a181c03ee"
},
"status": {
"href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfaf3-6d52-76a0-9064-969a181c03ee/status"
},
"startAuthorisation": {
"href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfaf3-6d52-76a0-9064-969a181c03ee/authorisations"
}
}
}
Тест кейс # 2. Старт авторизації платежу| POST /payments/{payment-product}/{payment-id}/authorisations
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений платіж (див. Тест кейс #1), зафіксовано paymentId
УВАГА: тип {payment-product} в запиті повинен відповідати типу, для якого створювався платіж у Тест кейс #1
Можливі значення {payment-product} - instant-credit-transfers або credit-transfers
Кроки виконання:
Зробити Виклик до API:
POST https://{apiHost}/providers/{provider-id}/pis/v2/payments/{payment-product}/{payment-id}/authorisations
HEADERS:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
Client-Redirect-URI: https://google.com
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
PSU-ID: "2353909119" // use this value for sandbox
PSU-ID-Type: "PHONE"
BODY:
{}
Очікуваний результат:
- Створено платіж з "transactionStatus": "RCVD"
- У відповіді присутній "paymentId".
Приклад відповіді:
{
"scaStatus": "received",
"_links": {
"scaStatus": {
"href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfb75-7982-78b5-9a50-b92813afcd7b/authorisations/019cfb75-8e7d-755d-bbc2-e1e5928a3698"
},
"scaRedirect": {
"href": "https://portal.preprod.api.upc.ua/sca-client/mock/upc/bfdb6794-bcb8-4dde-9f3b-07acf73ef202/019cfb75-8e7d-755d-bbc2-e1e5928a3698/consent"
}
},
"authorisationId": "019cfb75-8e7d-755d-bbc2-e1e5928a3698"
}
Для Client-SCA-Approach-Preference: redirect
Додатково: на sandbox доступна емуляція підтвердження платежу з боку користувача з PSU-ID: "2353909119".
- Перейти за посиланням у _links/scaRedirect (якщо Client-SCA-Approach-Preference: redirect) або ініціювати SCA через інший канал (якщо Client-SCA-Approach-Preference: decoupled)
- на Sandbox сторінці створено обробник, де можна прийняти або відхилити запит на авторизацію:
- Підтвердити авторизацію натиснувши "Confirm"
2: Тестові сценарії перевірки платежу
Тест кейс # 3. Отримання деталей платежу | GET /payments/{payment-product}/{payment-id}
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений платіж (див. Тест кейс #1, #2), зафіксовано payment-id
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{provider-id}/pis/{apiGroupVersion}/payments/{payment-product}/{payment-id}
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
null
Очікуваний результат:
Тіло відповіді містить поточний статус Consent.
Приклад, фрагмент відповіді:
{
"transactionStatus": "RCVD",
"_links": {
"self": {
"href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfbb3-d015-7a47-bd16-76f18e90d58e"
}
//...
}
}
Тест кейс # 4. Отримання статус платежу | GET /payments/{payment-product}/{payment-id}/status
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений Consent (див. Тест кейс #1, #2), зафіксовано consentId (він же payment-id)
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{provider-id}/pis/{apiGroupVersion}/payments/{payment-product}/{payment-id}/status
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
null
Очікуваний результат:
Тіло відповіді містить поточний статус Consent.
Приклад, фрагмент відповіді:
{
"transactionStatus": "RCVD"
}
Тест кейс # 5. Отримання авторизацій платежу | GET /payments/{payment-product}/{payment-id}/authorisations
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений платіж (див. Тест кейс #1, #2), зафіксовано consentId (він же payment-id)
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{provider-id}/pis/{apiGroupVersion}/payments/{payment-product}/{payment-id}/authorisations
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
null
Очікуваний результат:
- Тіло відповіді містить наявні authorisationIds
Приклад відповіді:
{
"authorisationIds": [
"019cfbb3-eee5-771a-b877-89a5a17cd505"
]
}
Тест кейс # 6. Отримання деталі авторизації платежу | GET /payments/{payment-product}/{payment-id}/authorisations/{authorisation-id}
Документація API
Вимоги до заголовків та тіла запиту описані в документації до відповідної версії
Передумови:
- Користувач має дійсний токен доступу (див. API-ключі)
- Існує створений платіж (див. Тест кейс #1, #2), зафіксовано consentId (він же payment-id)
- зафіксовано authorisation-id (див. Тест кейс #5)
Кроки виконання:
- Зробити Виклик до API:
GET https://{apiHost}/providers/{provider-id}/pis/{apiGroupVersion}/payments/{payment-product}/{payment-id}/authorisations/{authorisation-id}
HEADERS:
X-Request-ID: "72ebf0c7-31d4-43be-8786-261bd4e5d8a3" // {uuid}
Content-Type: application/json
X-API-KEY: 111109ee-b4df-427c-0000-f2d8b1c99999 // згенерований api ключ до застосунку
BODY:
null
Очікуваний результат:
Тіло відповіді містить деталі authorisationIdю
Приклад відповіді:
{
"scaStatus": "finalised",
"_links": {
"scaStatus": {
"href": "/sandbox/pis/v2.0/payments/instant-credit-transfers/019cfbb3-d015-7a47-bd16-76f18e90d58e/authorisations/019cfbb3-eee5-771a-b877-89a5a17cd505"
},
"scaRedirect": {
"href": "https://portal.preprod.api.upc.ua/sca-client/mock/upc/bfdb6794-bcb8-4dde-9f3b-07acf73ef202/019cfbb3-eee5-771a-b877-89a5a17cd505/consent"
}
},
"authorisationId": "019cfbb3-eee5-771a-b877-89a5a17cd505"
}
-(5).png&w=3840&q=75)