This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.
Payment Initiation API for UK
The Payment Initiation API consists of the flows and payloads required for initiating a general payment-order.
The API endpoints described here allow a PISP to:
- Register a payment-order consent.
- Optionally confirm available funds for a payment-order (domestic and international immediate payments only).
- Subsequently, submit the payment-order for processing.
- Optionally retrieve the status of a payment-order consent or payment-order resource.
This page contains the following
Basic flow
The diagram below shows the basic payment flow (using the Payment APIs) for all payment-order types:
payment-order
consent and payment-order
resource is generalised for the different payment-order types. e.g. for a domestic payment, the payment-order consent resource is domestic-payment-consents
, and the payment-order resource is domestic-payments
. See the topics below for details on the available payment-order types:
- Initiate payment order
- This flow begins with a PSU consenting to a payment being made. The consent is between the PSU and the PISP.
- The debtor account details can optionally be specified at this stage.
- Create payment order consent
- The PISP connects to the ASPSP that services the PSU's payment account and creates a new payment-order consent resource. This informs the ASPSP that one of its PSUs intends to make a payment-order. The ASPSP responds with an identifier for the payment-order consent resource (the ConsentId, which is the consent identifier).
- This step is carried out by making a POST request to the payment-order consent resource.
- Authorise consent
- The PISP requests the PSU to authorise the consent. The ASPSP may carry this out by using a redirection flow or a decoupled flow.
- In a redirection flow, the PISP redirects the PSU to the ASPSP.
- The redirect includes the ConsentId generated in the previous step.
- This allows the ASPSP to correlate the payment order consent that was setup.
- The ASPSP authenticates the PSU.
- The PSU selects the debtor account at this stage (if it has not been previously specified in Step 1).
- The ASPSP updates the state of the payment order consent resource internally to indicate that the consent has been authorised.
- Once the consent has been authorised, the PSU is redirected back to the PISP.
- In a decoupled flow, the ASPSP requests the PSU to authorise consent on an authentication device that is separate from the consumption device on which the PSU is interacting with the PISP.
- The decoupled flow is initiated by the PISP calling a back-channel authorisation request.
- The request contains a 'hint' that identifies the PSU paired with the consent to be authorised.
- The ASPSP authenticates the PSU
- The PSU selects the debtor account at this stage (if it has not been previously specified in Step 1)
- The ASPSP updates the state of the payment order consent resource internally to indicate that the consent has been authorised.
- Once the consent has been authorised, the ASPSP can make a callback to the PISP to provide an access token.
- In a redirection flow, the PISP redirects the PSU to the ASPSP.
- The PISP requests the PSU to authorise the consent. The ASPSP may carry this out by using a redirection flow or a decoupled flow.
- Confirm funds (domestic and international single immediate payments only)
- Once the PSU is authenticated and authorised the payment-order-consent, the PISP can check whether funds are available to make the payment.
- This is carried out by making a GET request, calling the funds-confirmation operator on the payment-order-consent resource.
- Create payment order
- The PISP creates a payment-order resource to indicate that the payment created in the steps above should be submitted for processing.
- This is carried out by making a POST request to the appropriate payment-order resource.
- The ASPSP returns the identifier for the payment-order resource to the PISP.
- Get payment order/consent status
- The PISP can check the status of the payment-order consent (with the ConsentId) or payment-order resource (with the payment-order resource identifier).
- This is carried out by making a GET request to the payment-order consent or payment-order resource.
Sequence diagram
Endpoints
In order to complete the payment flow, you can use the following available API endpoints:
Endpoint Name | Supported Version | Resource | Endpoint URL | Mandatory/Optional |
---|---|---|---|---|
Domestic Payments | v3.0, v3.1, v3.1.1 | domestic-payment-consents domestic-payment-consents domestic-payment-consents domestic-payments domestic-payments | POST /domestic-payment-consents GET /domestic-payment-consents/{ConsentId} GET /domestic-payment-consents/{ConsentId}/funds-confirmation POST /domestic-payments GET /domestic-payments/{DomesticPaymentId} | Mandatory Mandatory Mandatory Mandatory Mandatory |
Domestic Scheduled Payment | v3.0, v3.1, v3.1.1 | domestic-scheduled-payment-consents domestic-scheduled-payment-consents domestic-scheduled-payments domestic-scheduled-payments | POST /domestic-scheduled-payment-consents GET /domestic-scheduled-payment-consents/{ConsentId} POST /domestic-scheduled-payments GET /domestic-scheduled-payments/{DomesticScheduledPaymentId} | Conditional Mandatory (if resource POST implemented) Conditional Mandatory (if resource POST implemented) |
Domestic Standing Orders | v3.0, v3.1, v3.1.1 | domestic-standing-order-consents domestic-standing-order-consents domestic-standing-orders domestic-standing-orders | POST /domestic-standing-order-consents GET /domestic-standing-order-consents/{ConsentId} POST /domestic-standing-orders GET /domestic-standing-orders/{DomesticStandingOrderId} | Conditional Mandatory (if resource POST implemented) Conditional Mandatory (if resource POST implemented) |
International Payments | v3.0, v3.1, v3.1.1 | international-payment-consents international-payment-consents international-payment-consents international-payments international-payments | POST /international-payment-consents GET /international-payment-consents/{ConsentId} GET /international-payment-consents/{ConsentId}/funds-confirmation POST /international-payments GET /international-payments/{InternationalPaymentId} | Conditional Mandatory (if resource POST implemented) Mandatory (if resource POST implemented) Conditional Mandatory (if resource POST implemented) |
International Scheduled Payments | v3.0, v3.1, v3.1.1 | international-scheduled-payment-consents international-scheduled-payment-consents international-scheduled-payment-consents international-scheduled-payments international-scheduled-payments | POST /international-scheduled-payment-consents GET /international-scheduled-payment-consents/{ConsentId} GET /international-scheduled-payment-consents/{ConsentId}/funds-confirmation POST /international-scheduled-payments GET /international-scheduled-payments/{InternationalScheduledPaymentId} | Conditional Mandatory (if resource POST implemented) Mandatory (if immediate debit supported) Conditional Mandatory (if resource POST implemented) |
International Standing Orders | v3.0, v3.1, v3.1.1 | international-standing-order-consents international-standing-order-consents international-standing-orders international-standing-orders | POST /international-standing-order-consents GET /international-standing-order-consents/{ConsentId} POST /international-standing-orders GET /international-standing-orders/{InternationalStandingOrderPaymentId} | Conditional Mandatory (if resource POST implemented) Conditional Mandatory (if resource POST implemented) |
File Payments | v3.0, v3.1, v3.1.1 | file-payment-consents file-payment-consents file-payment-consents file-payment-consents file-payments file-payments file-payments | POST /file-payment-consents GET /file-payment-consents/{ConsentId} POST /file-payment-consents/{ConsentId}/file GET /file-payment-consents/{ConsentId}/file POST /file-payments GET /file-payments/{FilePaymentId} GET /file-payments/{FilePaymentId}/report-file | Conditional Conditional Mandatory (if resource POST implemented) Conditional Conditional Mandatory (if resource POST implemented) Conditional |