Download OpenAPI specification:Download
Nikulipe provides access to E-Money bank accounts of its Clients over the Open Banking API. This API is offered as part of PSD2 regulation.
This API document is based on the NextGenPSD2 Framework Version 1.3.6 (with errata) created by The Berlin Group and was modified to match Nikulipe's API implementation.
The NextGenPSD2 Framework Version 1.3.6 (with errata) offers a modern, open, harmonised and interoperable set of Application Programming Interfaces (APIs) as the safest and most efficient way to provide data securely. The NextGenPSD2 Framework reduces XS2A complexity and costs, addresses the problem of multiple competing standards in Europe and, aligned with the goals of the Euro Retail Payments Board, enables European banking customers to benefit from innovative products and services ('Banking as a Service') by granting TPPs safe and secure (authenticated and authorised) access to their bank accounts and financial data.
The possible Approaches supported by Nikulipe UAB are:
Redirect SCA Approach
Not every message defined in this API definition is necessary for all approaches. Furthermore this API definition does not differ between methods which are mandatory, conditional, or optional. Therefore for a particular implementation of a Berlin Group PSD2 compliant API it is only necessary to support a certain subset of the methods defined in this API definition.
Please have a look at the implementation guidelines if you are not sure which message has to be used for the approach you are going to use.*
This API definition is based on the Implementation Guidelines of the Berlin Group PSD2 API. It is not a replacement in any sense. The main specification is (at the moment) always the Implementation Guidelines of the Berlin Group PSD2 API.
This API definition contains the REST-API for requests from the PISP to the ASPSP.
This API definition contains the messages for all different approaches defined in the Implementation Guidelines.
According to the OpenAPI-Specification https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md
"If in is "header" and the name field is "Accept", "Content-Type" or "Authorization", the parameter definition SHALL be ignored."
The element "Accept" will not be defined in this file at any place.
The elements "Content-Type" and "Authorization" are implicitly defined by the OpenApi tags "content" and "security".
There are several predefined types which might occur in payment initiation messages, but are not used in the standard JSON messages in the Implementation Guidelines. Therefore they are not used in the corresponding messages in this file either. We added them for the convenience of the user. If there is a payment product, which needs these fields, one can easily use the predefined types. But the ASPSP need not to accept them in general.
We omit the definition of all standard HTTP header elements (mandatory/optional/conditional) except they are mentioned in the Implementation Guidelines. Therefore the implementer might add these in his own realisation of a PSD2 comlient API in addition to the elements defined in this file.
The Berlin Group definition of UTF-8 strings in context of the PSD2 API has to support at least the following characters
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9
/ - ? : ( ) . , ' +
Space
The component for Payment Initiation Service (PIS) offers the following services:
This method is used to initiate a payment at the ASPSP.
This method to initiate a payment initiation at the ASPSP can be sent with a JSON body.
There are the following payment products:
Nikulipe only offers single level SCA Processes
payment-product required | string Value: "sepa-credit-transfers" The addressed payment product endpoint, e.g. for SEPA Credit Transfers (SCT). The ASPSP will publish which of the payment products/endpoints will be supported. The following payment products are supported:
|
X-Request-ID required | string <uuid> Example: 99391c7e-ad88-49ec-a2ad-99ddcb1f7721 ID of the request, unique to the call, as determined by the initiating party. |
Digest | string Example: SHA-256=hl1/Eps8BEQW58FJhDApwJXjGY4nr1ArGDHIT25vq6A= Is contained if and only if the "Signature" element is contained in the header of the request. |
Signature | string Example: keyId="SN=9FA1,CA=CN=D-TRUST CA 2-1 2015,O=D-Trust GmbH,C=DE",algorithm="rsa-sha256", headers="Digest X-Request-ID PSU-ID TPP-Redirect-URI Date", signature="Base64(RSA-SHA256(signing string))"
A signature of the request by the TPP on application level. This might be mandated by ASPSP. |
TPP-Signature-Certificate | string <byte> The certificate used for signing the request, in base64 encoding. Must be contained if a signature is contained. |
PSU-ID | string Example: PSU-1234 Client ID of the PSU in the ASPSP client interface. Might be mandated in the ASPSP's documentation. |
PSU-ID-Type | string Type of the PSU-ID, needed in scenarios where PSUs have several PSU-IDs as access possibility. In this case, the mean and use are then defined in the ASPSP’s documentation. |
PSU-Corporate-ID | string Might be mandated in the ASPSP's documentation. Only used in a corporate context. |
PSU-Corporate-ID-Type | string Might be mandated in the ASPSP's documentation. Only used in a corporate context. |
Consent-ID | string (consentId) This data element may be contained, if the payment initiation transaction is part of a session, i.e. combined AIS/PIS service. This then contains the consentId of the related AIS consent, which was performed prior to this payment initiation. |
PSU-IP-Address required | string <ipv4> Example: 192.168.8.78 The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP. If not available, the TPP shall use the IP Address used by the TPP when submitting this request. |
TPP-Redirect-URI required | string <uri> URI of the TPP, where the transaction flow shall be redirected to after a Redirect. Mandated for the Redirect SCA Approach. |
TPP-Nok-Redirect-URI | string <uri> If this URI is contained, the TPP is asking to redirect the transaction flow to this address instead of the TPP-Redirect-URI in case of a negative result of the redirect SCA method. This might be ignored by the ASPSP. |
TPP-Rejection-NoFunds-Preferred | boolean If it equals "true" then the TPP prefers a rejection of the payment initiation in case the ASPSP is providing an integrated confirmation of funds request an the result of this is that not sufficient funds are available. If it equals "false" then the TPP prefers that the ASPSP is dealing with the payment initiation like in the ASPSPs online channel, potentially waiting for a certain time period for funds to arrive to initiate the payment. This parameter might be ignored by the ASPSP. |
TPP-Brand-Logging-Information | string This header might be used by TPPs to inform the ASPSP about the brand used by the TPP towards the PSU. This information is meant for logging entries to enhance communication between ASPSP and PSU or ASPSP and TPP. This header might be ignored by the ASPSP. |
TPP-Notification-URI | string URI for the Endpoint of the TPP-API to which the status of the payment initiation should be sent. This header field may by ignored by the ASPSP. For security reasons, it shall be ensured that the TPP-Notification-URI as introduced above is secured by the TPP eIDAS QWAC used for identification of the TPP. The following applies: URIs which are provided by TPPs in TPP-Notification-URI shall comply with the domain secured by the eIDAS QWAC certificate of the TPP in the field CN or SubjectAltName of the certificate. Please note that in case of example-TPP.com as certificate entry TPP- Notification-URI like www.example-TPP.com/xs2a-client/v1/ASPSPidentifcation/mytransaction- id/notifications or notifications.example-TPP.com/xs2a-client/v1/ASPSPidentifcation/mytransaction- id/notifications would be compliant. Wildcard definitions shall be taken into account for compliance checks by the ASPSP. ASPSPs may respond with ASPSP-Notification-Support set to false, if the provided URIs do not comply. |
TPP-Notification-Content-Preferred | string The string has the form status=X1, ..., Xn where Xi is one of the constants SCA, PROCESS, LAST and where constants are not repeated. The usage of the constants supports the of following semantics: SCA: A notification on every change of the scaStatus attribute for all related authorisation processes is preferred by the TPP. PROCESS: A notification on all changes of consentStatus or transactionStatus attributes is preferred by the TPP. LAST: Only a notification on the last consentStatus or transactionStatus as available in the XS2A interface is preferred by the TPP. This header field may be ignored, if the ASPSP does not support resource notification services for the related TPP. |
PSU-IP-Port | string Example: 1234 The forwarded IP Port header field consists of the corresponding HTTP request IP Port field between PSU and TPP, if available. |
PSU-Accept | string The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available. |
PSU-Accept-Charset | string The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available. |
PSU-Accept-Encoding | string The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available. |
PSU-Accept-Language | string The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available. |
PSU-User-Agent | string The forwarded Agent header field of the HTTP request between PSU and TPP, if available. |
PSU-Http-Method | string Enum: "GET" "POST" "PUT" "PATCH" "DELETE" HTTP method used at the PSU ? TPP interface, if available. Valid values are:
|
PSU-Device-ID | string <uuid> Example: 99435c7e-ad88-49ec-a2ad-99ddcb1f5555 UUID (Universally Unique Identifier) for a device, which is used by the PSU, if available. UUID identifies either a device or a device dependant application installation. In case of an installation identification this ID needs to be unaltered until removal from device. |
PSU-Geo-Location | string GEO:-?[0-9]{1,2}\.[0-9]{6};-?[0-9]{1,3}\.[0-9]{6} Example: GEO:52.506931;13.144558 The forwarded Geo Location of the corresponding http request between PSU and TPP if available. |
JSON request body for a payment inition request message.
There are the following payment-products supported:
All optional, conditional and predefined but not yet used fields are defined.
endToEndIdentification | string <= 35 characters |
debtorAccount required | object (accountReference) Reference to an account by either
|
instructedAmount required | object (amount) |
creditorAccount required | object (accountReference) Reference to an account by either
|
creditorAgent | string (bicfi) [A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1} BICFI |
creditorAgentName | string (creditorAgentName) <= 70 characters Creditor agent name. |
creditorName required | string (creditorName) <= 70 characters Creditor name. |
creditorAddress | object (address) |
remittanceInformationUnstructured | string (remittanceInformationUnstructured) <= 140 characters Unstructured remittance information. |
CREATED
Bad Request
Unauthorized
Forbidden
Not found
Method Not Allowed
Not Acceptable
Request Timeout
Conflict
Unsupported Media Type
Too Many Requests
Internal Server Error
Service Unavailable
Nikulipe PSD2 live server
Nikulipe PSD2 test server
{- "instructedAmount": {
- "currency": "EUR",
- "amount": "123.50"
}, - "debtorAccount": {
- "iban": "DE40100100103307118608"
}, - "creditorName": "Merchant123",
- "creditorAccount": {
- "iban": "DE02100100109307118603"
}, - "remittanceInformationUnstructured": "Ref Number Merchant"
}
Response in case of a redirect with an implicitly created authorisation sub-resource
{- "transactionStatus": "RCVD",
- "paymentId": "1234-wertiq-983",
- "_links": {
- "self": {
- "href": "/v1/payments/sepa-credit-transfers/1234-wertiq-983"
}, - "status": {
- "href": "/v1/payments/1234-wertiq-983/status"
}, - "scaStatus": {
- "href": "/v1/payments/1234-wertiq-983/authorisations/123auth456"
}
}
}
Returns the content of a payment object
payment-product required | string Value: "sepa-credit-transfers" The addressed payment product endpoint, e.g. for SEPA Credit Transfers (SCT). The ASPSP will publish which of the payment products/endpoints will be supported. The following payment products are supported:
|
paymentId required | string (paymentId) Example: 1234-wertiq-983 Resource identification of the generated payment initiation resource. |
X-Request-ID required | string <uuid> Example: 99391c7e-ad88-49ec-a2ad-99ddcb1f7721 ID of the request, unique to the call, as determined by the initiating party. |
Digest | string Example: SHA-256=hl1/Eps8BEQW58FJhDApwJXjGY4nr1ArGDHIT25vq6A= Is contained if and only if the "Signature" element is contained in the header of the request. |
Signature | string Example: keyId="SN=9FA1,CA=CN=D-TRUST CA 2-1 2015,O=D-Trust GmbH,C=DE",algorithm="rsa-sha256", headers="Digest X-Request-ID PSU-ID TPP-Redirect-URI Date", signature="Base64(RSA-SHA256(signing string))"
A signature of the request by the TPP on application level. This might be mandated by ASPSP. |
TPP-Signature-Certificate | string <byte> The certificate used for signing the request, in base64 encoding. Must be contained if a signature is contained. |
PSU-IP-Address | string <ipv4> Example: 192.168.8.78 The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP. |
PSU-IP-Port | string Example: 1234 The forwarded IP Port header field consists of the corresponding HTTP request IP Port field between PSU and TPP, if available. |
PSU-Accept | string The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available. |
PSU-Accept-Charset | string The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available. |
PSU-Accept-Encoding | string The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available. |
PSU-Accept-Language | string The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available. |
PSU-User-Agent | string The forwarded Agent header field of the HTTP request between PSU and TPP, if available. |
PSU-Http-Method | string Enum: "GET" "POST" "PUT" "PATCH" "DELETE" HTTP method used at the PSU ? TPP interface, if available. Valid values are:
|
PSU-Device-ID | string <uuid> Example: 99435c7e-ad88-49ec-a2ad-99ddcb1f5555 UUID (Universally Unique Identifier) for a device, which is used by the PSU, if available. UUID identifies either a device or a device dependant application installation. In case of an installation identification this ID needs to be unaltered until removal from device. |
PSU-Geo-Location | string GEO:-?[0-9]{1,2}\.[0-9]{6};-?[0-9]{1,3}\.[0-9]{6} Example: GEO:52.506931;13.144558 The forwarded Geo Location of the corresponding http request between PSU and TPP if available. |
OK
Bad Request
Unauthorized
Forbidden
Not found
Method Not Allowed
Not Acceptable
Request Timeout
Conflict
Unsupported Media Type
Too Many Requests
Internal Server Error
Service Unavailable
Nikulipe PSD2 live server
Nikulipe PSD2 test server
{- "endToEndIdentification": "string",
- "debtorAccount": {
- "iban": "FR7612345987650123456789014",
- "bban": "BARC12345612345678",
- "msisdn": "+49 170 1234567",
- "currency": "EUR"
}, - "instructedAmount": {
- "currency": "EUR",
- "amount": "123"
}, - "creditorAccount": {
- "iban": "FR7612345987650123456789014",
- "bban": "BARC12345612345678",
- "msisdn": "+49 170 1234567",
- "currency": "EUR"
}, - "creditorAgent": "AAAADEBBXXX",
- "creditorName": "Creditor Name",
- "creditorAddress": {
- "street": "rue blue",
- "buildingnNumber": "89",
- "city": "Paris",
- "postalCode": "75000",
- "country": "FR"
}, - "remittanceInformationUnstructured": "Ref Number Merchant",
- "transactionStatus": "ACCP"
}
Check the transaction status of a payment initiation.
payment-product required | string Value: "sepa-credit-transfers" The addressed payment product endpoint, e.g. for SEPA Credit Transfers (SCT). The ASPSP will publish which of the payment products/endpoints will be supported. The following payment products are supported:
|
paymentId required | string (paymentId) Example: 1234-wertiq-983 Resource identification of the generated payment initiation resource. |
X-Request-ID required | string <uuid> Example: 99391c7e-ad88-49ec-a2ad-99ddcb1f7721 ID of the request, unique to the call, as determined by the initiat |