×

Payment Initiation Service

Payment Initiation Service (PIS)

Послуга ініціювання платежів дозволяє стороннім надавачам платіжних послуг (Third Party Provider, TPP) ініціювати платіжні операції з рахунку користувача платіжних послуг (Payment Service User, PSU) на підставі його згоди. Сервіс забезпечує безпечну передачу платіжних інструкцій через API та дозволяє TPP інтегрувати функціональність онлайн-платежів у власні продукти.

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. Процедура взаємодії (PIS Flow)

  1. TPP ініціює платіж (POST /payments/{payment-product}) → отримує paymentId.
  2. TPP запускає авторизацію (POST /payments/{payment-product}/{payment-id}/authorisations) → отримує authorisationId та або psuMessage (Decoupled) або scaRedirect URL (Redirect).
  3. PSU авторизує платіж (через застосунок банку або банківську веб-сторінку залежно від режиму SCA).
  4. TPP перевіряє статус платежу (GET /payments/{payment-product}/{payment-id}/status) → отримує transactionStatus.
  5. TPP інформує PSU про результат виконання платежу.

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

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

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

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

Середовища

2. Опис функціоналу спеціалізованих інтерфейсів PIS:

TPP надсилає запит на ініціювання платежу за допомогою методу POST. У запиті передаються дані про рахунок платника (IBAN), суму та валюту переказу, дані отримувача (ім'я, ідентифікатор, IBAN рахунку) та реквізити призначення платежу. Платформа повертає унікальний ідентифікатор транзакції (paymentId) та початковий статус платежу (RCVD — отримано).

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

Відповідь (JSON): paymentId (UUID), transactionStatus ("RCVD"), _links.startAuthorisation.href.

2.2. Запуск авторизації (SCA)

Після ініціювання платежу TPP викликає метод POST /pis/v2/payments/{payment-product}/{payment-id}/authorisations для явного запуску процедури авторизації. Підтримуються два режими SCA:

Метод та шлях: POST /pis/v2/payments/{payment-product}/{payment-id}/authorisations

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

Заголовки: Client-Redirect-URI, Client-Redirect-Nok-URI (обов'язкові для Redirect SCA).

Відповідь для Decoupled SCA (JSON): scaStatus ("received"), authorisationId (UUID), psuMessage (текст повідомлення для PSU).

Відповідь для Redirect SCA (JSON): scaStatus ("received"), authorisationId (UUID), _links.scaRedirect.href (URL для перенаправлення PSU на SCA-сторінку банку).

2.3. Перевірка статусу платежу

TPP може перевірити поточний статус платежу за допомогою методу GET /pis/v2/payments/{payment-product}/{payment-id}/status. Платформа повертає актуальний статус транзакції ($.transactionStatus), наприклад, ACCC (успішно завершено). Підтримувані продукти платежу: instant-credit-transfers.

Метод та шлях: GET /pis/v2/payments/{payment-product}/{payment-id}/status

Параметри шляху: payment-product, payment-id.

Відповідь (JSON): transactionStatus — статус транзакції (наприклад, "ACCC" — успішно завершено).

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

Передумови:

Тест кейс Сreate consent initiation payments (POST /payments/instant-credit-transfers | POST /payments/credit-transfers)

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

  1. обрати провайдера до якого створюється платіж, зафіксувати providerId
  2. обрати тип {payment-product} - instant-credit-transfers або credit-transfers
  3. Зробити виклик до API:

POST /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

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

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"

  ]

}

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

  1. Створено платіж з "transactionStatus": "RCVD"
  2. У відповіді присутній "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)

Передумови:

УВАГА: тип {payment-product} в запиті повинен відповідати типу, для якого створювався платіж у Тест кейс № 1

Можливі значення {payment-product} - instant-credit-transfers або credit-transfers

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

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

POST /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

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

PSU-ID: "2353909119" // use this value for sandbox

PSU-ID-Type: "PHONE"

BODY:

{}

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

  1. Створено платіж з "transactionStatus": "RCVD"
  2. У відповіді присутній "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".

  1. Перейти за посиланням у _links/scaRedirect (якщо Client-SCA-Approach-Preference: redirect) або ініціювати SCA через інший канал (якщо Client-SCA-Approach-Preference: decoupled)
  2. на Sandbox сторінці створено обробник, де можна прийняти або відхилити запит на авторизацію:
  3. Підтвердити авторизацію натиснувши "Confirm"

Тест кейс № Отримання деталей платежу  (GET /payments/{payment-product}/{payment-id})

Передумови:

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

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

GET /providers/{provider-id}/pis/{apiGroupVersion}/payments/{payment-product}/{payment-id}

HEADERS:

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

Content-Type: application/json

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

BODY:

Null

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

  1. Тіло відповіді містить поточний статус 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)

Передумови:

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

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

GET /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

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

BODY:

null

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

  1. Тіло відповіді містить поточний статус Consent

Приклад, фрагмент відповіді

{

  "transactionStatus": "RCVD"

}

Тест кейс №Отримання авторизацій платежу (GET /payments/{payment-product}/{payment-id}/authorisations)

Передумови:

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

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

GET /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

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

BODY:

null

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

  1. Тіло відповіді містить наявні authorisationIds

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

{

  "authorisationIds": [

    "019cfbb3-eee5-771a-b877-89a5a17cd505"

  ]

}

Тест кейс № Отримання деталей авторизації платежу (GET /payments/{payment-product}/{payment-id}/authorisations/{authorisation-id})

Передумови:

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

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

GET /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

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

BODY:

null

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

  1. Тіло відповіді містить деталі 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"

}

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

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

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

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

Pravex bank alt