XS2A interface offers embedded and decoupled SCA approaches with a selection of SCA methods as mechanisms of payments and consent authorisation.
Within the embedded approach, the communication between PSU and ASPSP is done through XS2A and TPP interfaces where
ASPSP validates PSU credentials and the 2nd factor;
XS2A provides TPP with authorisation instructions and error information;
TPP provides PSU with authorisation instructions and error information.
The step when PSU receives the 2nd factor from ASPSP is handled directly between PSU and ASPSP - outside the embedded SCA flow.
Within the decoupled approach, the communication between PSU and ASPSP is done through XS2A and TPP interfaces where
ASPSP validates PSU credentials and the 2nd factor;
XS2A provides TPP with authorisation instructions and error information;
TPP provides PSU with authorisation instructions and error information.
The steps when PSU receives the 2nd factor from ASPSP and provides it back to ASPSP for validation are handled directly between PSU and ASPSP - outside the decoupled SCA flow.
Flow diagrams
The diagrams below give a high-level overview of the embedded SCA message flow during payments and consent authorisation.
Consent creation and authorisation
If an authorisation is rejected, the status of the resource to be authorised does not change. Only the authorisation status itself is set to failed.
@startuml
'https://plantuml.com/sequence-diagram
!theme cloudscape-design
skinparam backgroundColor white
'autonumber
title
General Flow for Redirect Authorisation
end title
PSU -> TPP: Initiation of payment or consent (with PSU-ID)
TPP -> XS2A: **POST /v1/[consents|payments]**\npayload: {consent} or {payment}
XS2A -> XS2A: validate certificate\nvalidate syntax\ncreate resource\nset status="received"
XS2A --> TPP: consentId or paymentId, status, link=startAuthorisation
TPP -> XS2A: **POST /v1/[consents|payments]/{id}/authorisations**
XS2A -> XS2A: validate certificate\nvalidate syntax\ncreate resource\nset status="received"
XS2A -> ASPSP: **Inform ASPSP about authorisation and to be authorised data**\npayload: consent or payment
ASPSP -> ASPSP: validate syntax and PSU-ID
ASPSP -> ASPSP: store data
ASPSP --> XS2A: **HTTP 201 Created**\nredirectURL=<URL of the frontend for auth>
XS2A --> TPP: redirectURL\nlink=scaRedirect
TPP --> PSU: Opens redirectURL in WebView\nfor login and SCA
group Authentication on Bank WebView
PSU --> ASPSP:
note over PSU, ASPSP: The authentication and SCA validation takes place in the WebView provided by the ASPSP.\nAfter the ASPSP has received a result (approved/cancelled), it must report the status to the XS2A server.
ASPSP --> PSU:
ASPSP -> ASPSP: prepare result of authorisation and sent to given PSU-ID:\nif yes, then push "TRUE"\nif no, then push "FALSE"
ASPSP -> XS2A: **Inform XS2A about the status of the authorisation**
XS2A -> XS2A: scaStatus = "finalised"\nset consentStatus="valid" or paymentStatus= "ACTC"
ASPSP --> TPP: **GET <URL from TPP-Redirect-URI (success) or TPP-Nok-Redirect-URI (failure)** as Redirect back to the TPP
end
TPP -> XS2A: **GET /v1/[consents|payments]/{id}/status**
XS2A -> XS2A: validate certificate\nvalidate id
XS2A --> TPP: status
@enduml
It is important, that for the redirect flow, the PSU-ID is also requested from the PSU. There is no need to ask for the password! The PSU-ID is used as identifier for the data provided by the TPP and by the ASPSP to connect everything securely together.
If a Bank supports ChipTAN, a possible flicker image is provided in the fields image or imageLink. For manual data entry, the Bank can return a structure in the data field.
As a rule, the information about the manual flicker is Base64-encoded and should correspond to the following structure:
JSON
{
"startCode": "12233",
"infoMessage": "Payment 100 € and account DE12345",
"manualMessage": "Please press F and enter the start code",
"flicker": "77819192836"
}
However, this is only a recommendation to the bank. Therefore, please check the Bank's PSD2 information page to see whether further or different information has been documented there.
JavaScript errors detected
Please note, these errors can depend on your browser setup.
If this problem persists, please contact our support.