PSD2 APIS – MOCKED DATA
OTP BANKA SLOVENSKO, A.S.
Version: 2.0
Bratislava, 01.06.2019
PSD2 APIs – Mocked data Version 2.0
2
CONTENT 1 General information and general errors 3
1.1 Used abbreviations 3
1.2 Differences between OTP Bank (OBD) and production 3
1.3 How to read MOCKs 3
1.4 General MOCK information 4
1.5 General error structure 4
1.6 Other specific general errors 4
2 Enrollment 11
3 Authorization 15
4 Tokens 17
5 Mocked data for AISP operations 23
5.1 AISP Operation: Account information 23
5.2 AISP Operation: Account transactions 29
5.3 AISP Operation: List of accounts 46
6 Mocked data for PISP operations 49
6.1 PISP Operation: Standard payment initialization (XML) 49
6.2 PISP Operation: Standard payment submission 75
6.3 PISP Operation: Payment order status 77
6.4 PISP Operation: Standard payment initialization (JSON) 79
6.5 PISP Operation: Payment order cancellation 94
6.6 PISP Operation: SWIFT payment initialization (XML) 97
6.7 PISP Operation: Balance check 126
7 Mocked data fro PIISP Operation 126
7.1 PIISP Operation: Balance check 126
8 Swagger 134
PSD2 APIs – Mocked data Version 2.0
3
1 GENERAL INFORMATION AND GENERAL ERRORS OTP Bank Devportal's API is using a custom HTTP header MOCK-
Authorization:<client_id>:<client_secret>. This header is used for third party provider authorization to
all API mocks. All requests must contain this header. This header is not used on production
environment!!!
Third party provider must use a registration form on OTP Bank Devportal website. OTP Bank will accept
(or reject) the registration and after that, third party provider will receive an e-mail containing client_id
and client_secret.
1.1 USED ABBREVIATIONS
Term Meaning
OBD OTP Bank
Devportal
PROD production
1.2 DIFFERENCES BETWEEN OTP BANK (OBD) AND PRODUCTION URL:
● OBD: https://developerhub.otpbanka.sk
● PROD: https://api.otpbanka.sk
MOCK-Authorization
● OBD: sending
● PROD: not sending
Response Body:
● OBD: some request has response body - please check Scenario 4 - 7
● PROD: some request has no response body
1.3 HOW TO READ MOCKS 1st column - Scenario description, Production authorization (no / Basic auth / access_token), When it
happens (example) / What's wrong
PSD2 APIs – Mocked data Version 2.0
4
2nd column - full cURL request, formatted request header, formatted request body
3rd column - HTTP status code, formatted response body
1.4 GENERAL MOCK INFORMATION Authorization: Basic Basic BASE64(client_id + ":" + client_secret) - please check Scenario 4, 5, 6
Authorization: Bearer access_token - only value Bearer at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v is valid, other value is invalid - please check Scenario 7
HTTP header Host is not presented in mock samples because it is a standard HTTP/1.1 header (required
by RFC7230).
1.5 GENERAL ERROR STRUCTURE
HTTP status code: 500
Body
{
"errors": [{
"messageCode": "....",
"messageArgs": [
["....", "...."]
],
"message": "...."
}]
}
1.6 OTHER SPECIFIC GENERAL ERRORS
Test scenario Request Response
1. Negative scenario: wrong MOCK
credentials - client_id
Auth: no
What's wrong: client_id not found
curl -i -X POST
https://developerhub.otpbanka.sk/enroll -H
'Content-Type: application/json' -d '{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny portal",
HTTP status code: 401
Body
{
"error": "invalid_client",
PSD2 APIs – Mocked data Version 2.0
5
"client_name#en-US": "My payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts": ["[email protected]"],
"scopes": ["aisp", "pisp"], "client_type":
"confidential", "licence_number":
"v@Nn123456" }' -H 'MOCK-
Authorization:Alz:a'
Header
MOCK-Authorization:Alz:a
Content-Type: application/json
Body
{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny
portal",
"client_name#en-US": "My
payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts":
["[email protected]"],
"scopes": ["aisp", "pisp"],
"client_type": "confidential",
"licence_number":
"v@Nn123456"
}
"error_description": "Alz"
}
2. Negative scenario: missing MOCK
credentials
Auth: no
What's wrong: MOCK credentials not
presented
curl -i -X POST
https://developerhub.otpbanka.sk/enroll -H
'Content-Type: application/json' -d '{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny portal",
"client_name#en-US": "My payment portal",
HTTP status code: 401
Body
{
"error": "unauthorized_client"
PSD2 APIs – Mocked data Version 2.0
6
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts": ["[email protected]"],
"scopes": ["aisp", "pisp"], "client_type":
"confidential", "licence_number":
"v@Nn123456" }'
Header
Content-Type: application/json
Body
{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny
portal",
"client_name#en-US": "My
payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts":
["[email protected]"],
"scopes": ["aisp", "pisp"],
"client_type": "confidential",
"licence_number":
"v@Nn123456"
}
}
Response body can contain field
error_description.
3. Negative scenario: MOCK credentials -
wrong password
Auth: no
What's wrong: password
curl -i -X POST
https://developerhub.otpbanka.sk/enroll -H
'Content-Type: application/json' -d '{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny portal",
"client_name#en-US": "My payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
HTTP status code: 401
Body
{
"error": "access_denied"
}
Response body can contain field
PSD2 APIs – Mocked data Version 2.0
7
"contacts": ["[email protected]"],
"scopes": ["aisp", "pisp"], "client_type":
"confidential", "licence_number":
"v@Nn123456" }' -H 'MOCK-
Authorization:TPP:a'
Header
MOCK-Authorization:TPP:a
Content-Type: application/json
Body
{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny
portal",
"client_name#en-US": "My
payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts":
["[email protected]"],
"scopes": ["aisp", "pisp"],
"client_type": "confidential",
"licence_number":
"v@Nn123456"
}
error_description.
4. Negative scenario: missing Basic Auth
Header
Auth: Basic auth
What's wrong: Basic Auth header is missing
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -H "Content-Type: application/x-www-
form-urlencoded" -d
"grant_type=authorization_code&code=ac_d
YXNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP&redirect_uri=http%3A%2F%2Fwww.t
pp.sk%2Fredirect" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
HTTP status code: 400
Body
{
"errors": [{
"message": "Missing
request header 'Authorization' for method
parameter of type String"
PSD2 APIs – Mocked data Version 2.0
8
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Body
grant_type=authorization_code&code=ac_dY
XNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP&redirect_uri=http%3A%2F%2Fwww.t
pp.sk%2Fredirect
}]
}
On production environment:
HTTP status code: 401 without Body
5. Negative scenario: wrong Basic Auth
Header - client_id
Auth: no
What's wrong: client_id not found
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u Alz:b -H "Content-Type: application/x-
www-form-urlencoded" -d
"grant_type=authorization_code&code=ac_d
YXNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP&redirect_uri=http%3A%2F%2Fwww.t
pp.sk%2Fredirect" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic QWx6OmI=
Body
grant_type=authorization_code&code=ac_dY
XNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP&redirect_uri=http%3A%2F%2Fwww.t
pp.sk%2Fredirect
HTTP status code: 401
Body
{
"error": "invalid_client",
"error_description": "Alz"
}
On production environment:
HTTP status code: 401 without Body
PSD2 APIs – Mocked data Version 2.0
9
6. Negative scenario: Basic Auth Header -
wrong password
Auth: no
What's wrong: password
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u TPP:b -H "Content-Type: application/x-
www-form-urlencoded" -d
"grant_type=authorization_code&code=ac_d
YXNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP&redirect_uri=http%3A%2F%2Fwww.t
pp.sk%2Fredirect" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic VFBQOmI=
Body
grant_type=authorization_code&code=ac_dY
XNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP&redirect_uri=http%3A%2F%2Fwww.t
pp.sk%2Fredirect
HTTP status code: 401
Body
{
"error": "access_denied"
}
On production environment:
HTTP status code: 401 without Body
7. Negative scenario: Invalid Bearer
access_token
Auth: Bearer access_token
What's wrong: acess_token doesn't exist /
expired
curl -i -X GET
https://developerhub.otpbanka.sk/api/v2/ac
counts -H 'Content-Type: application/json' -H
'Request-ID: c2c48fc8-0000-0000' -H 'PSU-IP-
Address: 192.168.0.100' -H 'PSU-Device-OS:
iOS 11' -H 'PSU-User-Agent: Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36' -H "Authorization: Bearer 123"
-H 'MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
HTTP status code: 403
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
PSD2 APIs – Mocked data Version 2.0
10
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer 123
"messageCode":
"exception.forbidden",
"messageArgs": [],
"message": "Access
denied"
}]
}
On production environment:
HTTP status code: 403 without Body
8. Negative scenario: missing Request-ID
header
Auth: Bearer access_token
What's wrong: missing Request-ID header
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/information -d '{ "iban":
"SK0252009999930000000107" }' -H
"Content-Type: application/json" -H
"Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
HTTP status code 400:
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"message": "Missing
request header 'Request-ID' for method
parameter of type String"
}]
}
9. Negative scenario: OTP Bank unavailable
Auth: Bearer access_token
What's wrong: OTP bank backend is
unavailabe
It is necessary to use Request-ID below to get
proper response.
curl -i -X
GET https://developerhub.otpbanka.sk/api/v
2/accounts -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-1111' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
HTTP status code 500:
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
PSD2 APIs – Mocked data Version 2.0
11
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-1111
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"errors": [{
"messageCode":
"exception.backend.profile.OFFLINE",
"messageArgs": [
[]
],
"message":
"exception.backend.profile.OFFLINE"
}]
}
2 ENROLLMENT URL: https://developerhub.otpbanka.sk/enroll
Test scenario Request Response
1. Positive scenario
Auth: no
When it happens (example): third party
provider wants to obtain client_id and
client_secret
curl -i -X POST
https://developerhub.otpbanka.sk/enroll -H
'Content-Type: application/json' -d '{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny portal",
"client_name#en-US": "My payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts": ["[email protected]"],
HTTP status code: 200
Body
{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny
PSD2 APIs – Mocked data Version 2.0
12
"scopes": ["aisp", "pisp"], "client_type":
"confidential", "licence_number":
"v@Nn123456" }' -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Body
{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny
portal",
"client_name#en-US": "My
payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts":
["[email protected]"],
"scopes": ["aisp", "pisp"],
"client_type": "confidential",
"licence_number":
"v@Nn123456"
}
portal",
"client_type": "confidential",
"client_name#en-US": "My
payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts":
["[email protected]"],
"scopes": ["aisp", "pisp"],
"licence_number":
"v@Nn123456",
"client_id": "TPP",
"client_secret": "6389dcc9-a17c-
4bcf-8cdf-5ecf84ade813"
}
2. Negative scenario: invalid scope value
Auth: no
What's wrong: invalid scope value
curl -i -X POST
https://developerhub.otpbanka.sk/enroll -H
'Content-Type: application/json' -d '{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny portal",
"client_name#en-US": "My payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
HTTP status code: 400
Body
{
"error": "invalid_scope",
PSD2 APIs – Mocked data Version 2.0
13
"contacts": ["[email protected]"],
"scopes": ["aisp", "abc"], "client_type":
"confidential", "licence_number":
"v@Nn123456" }' -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Body
{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": "Moj platobny
portal",
"client_name#en-US": "My
payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts":
["[email protected]"],
"scopes": ["aisp", "abc"],
"client_type": "confidential",
"licence_number":
"v@Nn123456"
}
"error_description": "abc"
}
3. Negative scenario: invalid request input
Auth: no
What's wrong: missing client_name value
curl -i -X POST
https://developerhub.otpbanka.sk/enroll -H
'Content-Type: application/json' -d '{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": null, "client_name#en-US":
"My payment portal", "logo_uri":
"https://www.multipay.sk/logo.png",
HTTP status code: 400
Body
{
"error": "invalid_request",
"error_description": "clientName:
PSD2 APIs – Mocked data Version 2.0
14
"contacts": ["[email protected]"],
"scopes": ["aisp", "pisp"], "client_type":
"confidential", "licence_number":
"v@Nn123456" }' -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Body
{
"redirect_uris":
["https://www.multipay.sk/start",
"https://www.multipay.sk/start2"],
"client_name": null,
"client_name#en-US": "My
payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts":
["[email protected]"],
"scopes": ["aisp", "abc"],
"client_type": "confidential",
"licence_number":
"v@Nn123456"
}
May not be empty"
}
4. Negative scenario: invalid redirect URI
Auth: no
What's wrong: invalid redirect_uris value
curl -i -X POST
https://developerhub.otpbanka.sk/enroll -H
'Content-Type: application/json' -d '{
"redirect_uris":
["https://www.multipay.sk/start",
"abc://www.multipay.sk/start2"],
"client_name": "Moj platobny portal",
"client_name#en-US": "My payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
HTTP status code: 400
Body
{
"error": "invalid_redirect_uri",
"error_description":
"abc://www.multipay.sk/start2"
PSD2 APIs – Mocked data Version 2.0
15
"contacts": ["[email protected]"],
"scopes": ["aisp", "pisp"], "client_type":
"confidential", "licence_number":
"v@Nn123456" }' -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Body
{
"redirect_uris":
["https://www.multipay.sk/start",
"abc://www.multipay.sk/start2"],
"client_name": "Moj platobny
portal",
"client_name#en-US": "My
payment portal",
"logo_uri":
"https://www.multipay.sk/logo.png",
"contacts":
["[email protected]"],
"scopes": ["aisp", "pisp"],
"client_type": "confidential",
"licence_number":
"v@Nn123456"
}
}
3 AUTHORIZATION SBA standard difference:
● URL:
PSD2 APIs – Mocked data Version 2.0
16
o SBA: /authorize,
o OTP Banka: /auth/authorize
● Request:
o SBA: code_challenge and code_challenge_method are mandatory, Content-Type:
application/x-www-form-urlencoded
o OTP Banka: code_challenge and code_challenge_method are not used, standard GET
request (RFC6749 OAuth2 - 4.1.1. Authorization Request)
● Response:
o SBA: Content-type: application/x-www-form-urlencoded, HTTP status code 303
o OTP Banka: standard GET response, HTTP status code 302 (RFC6749 OAuth2 - 4.1.2.
Authorization Response)
URL: https://developerhub.otpbanka.sk/auth/authorize
Response_type: code
Test scenario Request Response
1. Authorize code - positive scenario AISP
Auth: no
When it happens (example): user action -
open SCA web for AISP scope
curl -i -X GET
"https://developerhub.otpbanka.sk/auth/aut
horize?response_type=code&client_id=TPP&
redirect_uri=http%3A%2F%2Fwww.tpp.sk%2
Fredirect&scope=AISP&state=c1734c7d-
bae0-4d86-9a49-90b5357642b1" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
1. automatic redirect user to SCA
2. third party provider waiting for user
authorization
3. redirect user from SCA back to third party
provider after user authorization - example:
HTTP status code: 302
Location:
http://www.tpp.sk/redirect?code=ac_a3NDN
JxbCh1ydBZQlcqZIkaTUA2QMCOth8OvDjhu&
state=c1734c7d-bae0-4d86-9a49-
90b5357642b1
2. Authorize code - negative scenario:
missing client_id
Auth: no
What's wrong: client_id not sent
curl -i -X GET
"https://developerhub.otpbanka.sk/auth/aut
horize?response_type=code&redirect_uri=ht
tp%3A%2F%2Fwww.tpp.sk%2Fredirect&scop
e=AISP&state=c1734c7d-bae0-4d86-9a49-
90b5357642b1" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
HTTP status code: 400
Body
{
"errors": [{
"messageCode":
"exception.badRequest.missingParameter",
"messageArgs":
["client_id"],
"message": "Required
PSD2 APIs – Mocked data Version 2.0
17
46ec-95fa-5917fda9a959
parameter client_id is not present"
}]
}
3. Authorize code - negative scenario: scope
missing
Auth: no
What's wrong: mandate field response_type
/ redirect_uri / scope / state not sent
curl -i -X GET
"https://developerhub.otpbanka.sk/auth/aut
horize?response_type=code&client_id=TPP&
redirect_uri=http%3A%2F%2Fwww.tpp.sk%2
Fredirect&state=c1734c7d-bae0-4d86-9a49-
90b5357642b1" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
HTTP status code: 400
Body
{
"errors": [{
"messageCode":
"exception.badRequest.missingParameter",
"messageArgs":
["scope"],
"message": "Required
parameter scope is not present"
}]
}
4. Authorize code - positive scenario PISP
Auth: no
When it happens (example): user action -
open SCA web for authorize payment
Note: PAYMENT_tr_j5I13Xv-AcZs-I-
tOH92m9tQvZ4_ZrxoShNxVI2W is orderId
from paymment initialization:
/api/v1/payments/standard/iso
/api/v2/payments/standard/sba
curl -i -X GET
"https://developerhub.otpbanka.sk/auth/aut
horize?response_type=code&client_id=TPP&
redirect_uri=http%3A%2F%2Fwww.tpp.sk%2
Fredirect&scope=PAYMENT_tr_j5I13Xv-AcZs-
I-
tOH92m9tQvZ4_ZrxoShNxVI2W&state=6ebc
9a58-307d-49b8-8c7a-f5feccedff75" -H
'MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
1. automatic redirect user to SCA
2. third party provider waiting for user
authorize payment
3. redirect user from SCA back to third party
provider after user authorization - example:
HTTP status code: 302
Location:
http://www.tpp.sk/redirect?code=ac_a3NDN
JxbCh1ydBZQlcqZIkaTUA2QMCOth8OvDjhu&
state=6ebc9a58-307d-49b8-8c7a-
f5feccedff75
4 TOKENS SBA standard difference:
PSD2 APIs – Mocked data Version 2.0
18
● URL:
o SBA: /token,
o OTP Banka: /auth/token
● Request with authorization_code:
o SBA: code_verifier field is mandatory
o OTP Banka: not used (RFC6749 OAuth2 -4.1.3. Access Token Request)
URL: https://developerhub.otpbanka.sk/auth/token
Grand types: authorization_code (AISP), refresh_token (AISP), client_credentials (PISP, PIISP)
Test scenario Request Response
1. Token authorization_code - positive
scenario
Auth: Basic auth
When it happens (example): After user SCA
before AISP web service call
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959 -H "Content-Type:
application/x-www-form-urlencoded" -d
"grant_type=authorization_code&code=ac_d
YXNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP&redirect_uri=http%3A%2F%2Fwww.t
pp.sk%2Fredirect" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic
VFBQOjUwNDdiMmRmLTBmMDUtNDZlYy05
NWZhLTU5MTdmZGE5YTk1OQ==
Body
HTTP status code: 200
Body
{
"scope": "AISP",
"access_token":
"at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v",
"token_type": "Bearer",
"expires_in": 7199,
"refresh_token":
"rt_DxCYMdboCT9G0SWuDTM-
xRwlqCZS_9xsOdsdrP30"
}
PSD2 APIs – Mocked data Version 2.0
19
grant_type=authorization_code&code=ac_dY
XNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP&redirect_uri=http%3A%2F%2Fwww.t
pp.sk%2Fredirect
2. Token authorization_code - negative
scenario: client_id
Auth: Basic auth
What's wrong: auth client_id not equals to
url client_id
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959 -H "Content-Type:
application/x-www-form-urlencoded" -d
"grant_type=authorization_code&code=ac_d
YXNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP2&redirect_uri=http%3A%2F%2Fwww.
tpp.sk%2Fredirect" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic
VFBQOjUwNDdiMmRmLTBmMDUtNDZlYy05
NWZhLTU5MTdmZGE5YTk1OQ==
Body
grant_type=authorization_code&code=ac_dY
XNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=TPP2&redirect_uri=http%3A%2F%2Fwww.
tpp.sk%2Fredirect
HTTP status code: 401
Body
{
"error": "unauthorized_client",
"error_description": "authorized
client differs from client in request"
}
3. Token authorization_code - negative
scenario: unknown code
Auth: Basic auth
What's wrong: not valid code sent
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959 -H "Content-Type:
application/x-www-form-urlencoded" -d
"grant_type=authorization_code&code=not
mycode&client_id=TPP&redirect_uri=http%3
A%2F%2Fwww.tpp.sk%2Fredirect" -H
'MOCK-Authorization:TPP:5047b2df-0f05-
HTTP status code: 400
Body
{
"error": "invalid_grant",
"error_description": "unknown
PSD2 APIs – Mocked data Version 2.0
20
46ec-95fa-5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic
VFBQOjUwNDdiMmRmLTBmMDUtNDZlYy05
NWZhLTU5MTdmZGE5YTk1OQ==
Body
grant_type=authorization_code&code=notm
ycode&client_id=TPP&redirect_uri=http%3A
%2F%2Fwww.tpp.sk%2Fredirect
code"
}
4. Token authorization_code - negative
scenario: not valid request
Auth: Basic auth
What's wrong: missing client_id
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959 -H "Content-Type:
application/x-www-form-urlencoded" -d
"grant_type=authorization_code&code=ac_d
YXNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=&redirect_uri=http%3A%2F%2Fwww.tpp.s
k%2Fredirect" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic
VFBQOjUwNDdiMmRmLTBmMDUtNDZlYy05
NWZhLTU5MTdmZGE5YTk1OQ==
HTTP status code: 400
Body
{
"errors": [{
"property": "clientId",
"messageCode":
"javax.validation.constraints.NotEmpty.mess
age",
"message": "May not
be empty",
"invalidValue": ""
}]
}
PSD2 APIs – Mocked data Version 2.0
21
Body
grant_type=authorization_code&code=ac_dY
XNRRagzMn-
qLzUdxqdXubwMC8biwLiX1Y5mJa1&client_i
d=&redirect_uri=http%3A%2F%2Fwww.tpp.s
k%2Fredirect
5. Token refresh_token - positive scenario
Auth: Basic auth
When it happens (example): get new
access_token AISP
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959 -H "Content-Type:
application/x-www-form-urlencoded" -d
"grant_type=refresh_token&refreshToken=rt
_DxCYMdboCT9G0SWuDTM-
xRwlqCZS_9xsOdsdrP30&scope=AISP" -H
'MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic
VFBQOjUwNDdiMmRmLTBmMDUtNDZlYy05
NWZhLTU5MTdmZGE5YTk1OQ==
Body
grant_type=refresh_token&refreshToken=rt_
DxCYMdboCT9G0SWuDTM-
xRwlqCZS_9xsOdsdrP30&scope=AISP
HTTP status code: 200
Body
{
"scope": "AISP",
"access_token":
"at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v",
"token_type": "Bearer",
"expires_in": 7199
}
6. Token refresh_token - negative scenario:
uknown refresh_token
Auth: Basic auth
What's wrong: not valid refresh_token sent
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959 -H "Content-Type:
application/x-www-form-urlencoded" -d
"grant_type=refresh_token&refreshToken=n
otmycode&scope=AISP" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
HTTP status code: 400
Body
{
"error": "invalid_grant",
"error_description": "unknown
refresh token"
PSD2 APIs – Mocked data Version 2.0
22
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic
VFBQOjUwNDdiMmRmLTBmMDUtNDZlYy05
NWZhLTU5MTdmZGE5YTk1OQ==
Body
grant_type=refresh_token&refreshToken=no
tmycode&scope=AISP
}
7. Token refresh_token - negative scenario:
not valid scope
Auth: Basic auth
What's wrong: AISP scope not sent
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959 -H "Content-Type:
application/x-www-form-urlencoded" -d
"grant_type=refresh_token&refreshToken=rt
_DxCYMdboCT9G0SWuDTM-
xRwlqCZS_9xsOdsdrP30&scope=PISP" -H
'MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic
VFBQOjUwNDdiMmRmLTBmMDUtNDZlYy05
NWZhLTU5MTdmZGE5YTk1OQ==
Body
grant_type=refresh_token&refreshToken=rt_
DxCYMdboCT9G0SWuDTM-
xRwlqCZS_9xsOdsdrP30&scope=PISP
HTTP status code: 400
Body
{
"error": "invalid_scope",
"error_description": "invalid
scope PISP"
}
PSD2 APIs – Mocked data Version 2.0
23
8. Token client_credentials - positive
scenario
Auth: Basic auth
When it happens (example): Before PIISP
web service call
curl -i -X POST
https://developerhub.otpbanka.sk/auth/toke
n -u TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959 -H "Content-Type:
application/x-www-form-urlencoded" -d
"grant_type=client_credentials&scope=PIISP"
-H 'MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/x-www-form-
urlencoded
Authorization: Basic
VFBQOjUwNDdiMmRmLTBmMDUtNDZlYy05
NWZhLTU5MTdmZGE5YTk1OQ==
Body
grant_type=client_credentials&scope=PIISP
HTTP status code: 200
Body
{
"scope": "PIISP",
"access_token":
"at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v",
"token_type": "Bearer",
"expires_in": 7199
}
5 MOCKED DATA FOR AISP OPERATIONS
5.1 AISP OPERATION: ACCOUNT INFORMATION URL: https://developerhub.otpbanka.sk/api/v1/accounts/information
Test scenario Request Response
1. Positive scenario
Auth: Bearer access_token
When it happens (example): AISP mandate
was assigned to user account (IBAN)
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/information -d '{ "iban":
"SK0252009999930000000107" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
PSD2 APIs – Mocked data Version 2.0
24
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban": "SK0252009999930000000107"
}
Content-Type: application/json;charset=UTF-
8
Body
{
"account": {
"name": "Ján Novák",
"productName": "Bežný účet 1",
"type": "CACC",
"baseCurrency": "EUR"
},
"balance": [
{
"typeCodeOrProprietary": "ITBD",
"amount": {
"value": 3188.14,
"currency": "EUR"
},
"creditDebitIndicator": "CRDT",
"dateTime": "2018-01-
13T13:46:18.941+01:00"
},
{
"typeCodeOrProprietary": "ITAV",
"amount": {
"value": 54.49,
"currency": "EUR"
},
"creditDebitIndicator": "CRDT",
"dateTime": "2018-01-
PSD2 APIs – Mocked data Version 2.0
25
13T13:46:18.941+01:00"
}
]
}
2. Negative scenario: a legal term of 90 days
has passed without the SCA being executed
Auth: Bearer access_token
What's wrong: calling account information
after 90 days has passed without SCA being
executed
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/information -d '{ "iban":
"SK3352009999930000000131" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban": "SK3352009999930000000131"
}
HTTP status code: 401
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.unauthorized.newEnrollment",
"messageArgs": [],
"message": "Invalid
access token - not valid, expired, not valid
scope or mandates - new enrollment is
required."
}]
}
PSD2 APIs – Mocked data Version 2.0
26
3. Negative scenario: the client has not
given a mandate for this account
Auth: Bearer access_token
What's wrong: calling account information
without user mandate for his account
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/information -d '{ "iban":
"SK8052009999930000000158" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban": "SK8052009999930000000158"
}
HTTP status code: 401
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.unauthorized.newEnrollment",
"messageArgs": [],
"message": "Invalid
access token - not valid, expired, not valid
scope or mandates - new enrollment is
required."
}]
}
4. Negative scenario: missing mandatory
parameter
Auth: Bearer access_token
In production TPP will get the same response
(Error Code 400) also for other PSD2 services
if there is a missing mandatory attribute.
curl -i -X POST
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
PSD2 APIs – Mocked data Version 2.0
27
What's wrong: IBAN is empty https://developerhub.otpbanka.sk/api/v1/ac
counts/information -d '{ "iban": "" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban": ""
}
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property": "iban",
"messageCode":
"javax.validation.constraints.NotEmpty.mess
age",
"message": "May not
be empty"
}]
}
5. Negative scenario: invalid parameter
value
Auth: Bearer access_token
What's wrong: IBAN didn't match regex
In production TPP will get the same response
(Error Code 400) also for other PSD2 services
if there is an invalid attribute value.
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/information -d '{ "iban":
"SK8000009999930000000158" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
PSD2 APIs – Mocked data Version 2.0
28
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban": "SK8000009999930000000158"
}
Body
{
"errors": [{
"property": "iban",
"messageCode":
"javax.validation.constraints.Pattern.messag
e",
"message": "Must
match \"^(SK[0-9]{2,2}5200[0-9]{16,16})$\"",
"invalidValue":
"SK8000009999930000000158"
}]
}
6. Negative scenario: 24 hours request
counter for third party provider was
exceeded
Auth: Bearer access_token
What's wrong: third party provider exceeded
the count of AISP requests (account
information and account transactions) in 24
hours without user authentication
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/information -d '{ "iban":
"SK8552009999930000000262" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
HTTP status code: 401
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
PSD2 APIs – Mocked data Version 2.0
29
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban": "SK8552009999930000000262"
}
{
"errors": [{
"messageCode":
"exception.unauthorized.newEnrollment",
"messageArgs": [],
"message": "Invalid
access token - not valid, expired, not valid
scope or mandates - new enrollment is
required."
}]
}
5.2 AISP OPERATION: ACCOUNT TRANSACTIONS URL: https://developerhub.otpbanka.sk/api/v1/accounts/transactions
Test scenario Request Response
1. Positive scenario - without filter
Auth: Bearer access_token
When it happens (example): AISP mandate
was assigned to user account (IBAN)
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK0252009999930000000107" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
PSD2 APIs – Mocked data Version 2.0
30
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban":
"SK0252009999930000000107"
}
Body
{
"pageCount": 1,
"transactions": [{
"amount": {
"value": 1,
"currency": "EUR"
},
"creditDebitIndicator": "DBIT",
"status":
"INFO",
"bookingDate": "2017-11-29",
"valueDate": "2017-11-29",
"transactionDetails": {
"remittanceInformation":
"SERVICE FEES"
}
},
{
"amount": {
"value": 7.7,
"currency": "EUR"
},
"creditDebitIndicator": "CRDT",
"status":
PSD2 APIs – Mocked data Version 2.0
31
"INFO",
"bookingDate": "2017-11-29",
"valueDate": "2017-11-29",
"transactionDetails": {
"relatedParties": {
"debtorAccount": {
"identification":
"SK0252009999930000000107"
},
"creditorAccount": {
"identification":
"SK7752009999930000000115"
}
},
"relatedAgents": {
"debtorAgent": {
"financialInstitutionIdentification"
: "OTPVSKBX"
},
"creditAgent": {
"financialInstitutionIdentification"
PSD2 APIs – Mocked data Version 2.0
32
: "OTPVSKBXXXX"
}
},
"remittanceInformation": "príkaz
na úhradu"
}
},
{
"amount": {
"value": 1,
"currency": "EUR"
},
"creditDebitIndicator": "DBIT",
"status":
"INFO",
"bookingDate": "2017-11-28",
"valueDate": "2017-11-28",
"transactionDetails": {
"remittanceInformation":
"SERVICE FEES"
}
},
{
"amount": {
PSD2 APIs – Mocked data Version 2.0
33
"value": 1,
"currency": "EUR"
},
"creditDebitIndicator": "DBIT",
"status":
"INFO",
"bookingDate": "2017-10-28",
"valueDate": "2017-10-28",
"transactionDetails": {
"remittanceInformation":
"SERVICE FEES"
}
},
{
"amount": {
"value": 1,
"currency": "EUR"
},
"creditDebitIndicator": "DBIT",
"status":
"INFO",
"bookingDate": "2017-09-28",
"valueDate": "2017-09-28",
"transactionDetails": {
PSD2 APIs – Mocked data Version 2.0
34
"remittanceInformation":
"SERVICE FEES"
}
}
]
}
2. Positive scenario - with date filter, not
empty result
Auth: Bearer access_token
When it happens (example): AISP mandate
was assigned to user account (IBAN)
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK0252009999930000000107", "dateFrom":
"2017-10-01", "dateTo": "2017-11-30",
"page": 0, "pageSize": 10, "status": "ALL" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"pageCount": 1,
"transactions": [
{
"amount": {
"value": 1,
"currency": "EUR"
},
"creditDebitIndicator": "DBIT",
"status": "INFO",
"bookingDate": "2017-11-29",
"valueDate": "2017-11-29"
"transactionDetails": {
"remittanceInformation": "SERVICE
FEES"
}
PSD2 APIs – Mocked data Version 2.0
35
{
"iban":
"SK0252009999930000000107",
"dateFrom": "2017-10-01",
"dateTo": "2017-11-30",
"page": 0,
"pageSize": 10,
"status": "ALL"
}
},
{
"amount": {
"value": 7.7,
"currency": "EUR"
},
"creditDebitIndicator": "CRDT",
"status": "INFO",
"bookingDate": "2017-11-29",
"valueDate": "2017-11-29",
"transactionDetails": {
"relatedParties": {
"debtorAccount": {
"identification":
"SK0252009999930000000107"
},
"creditorAccount": {
"identification":
"SK7752009999930000000115"
}
},
"relatedAgents": {
"debtorAgent": {
"financialInstitutionIdentification":
"OTPVSKBX"
},
"creditAgent": {
"financialInstitutionIdentification":
"OTPVSKBXXXX"
}
PSD2 APIs – Mocked data Version 2.0
36
},
"remittanceInformation": "príkaz na
úhradu"
}
},
{
"amount": {
"value": 1,
"currency": "EUR"
},
"creditDebitIndicator": "DBIT",
"status": "INFO",
"bookingDate": "2017-11-28",
"valueDate": "2017-11-28",
"transactionDetails": {
"remittanceInformation": "SERVICE
FEES"
}
}
]
}
3. Positive scenario - with date filter, empty
result
Auth: Bearer access_token
When it happens (example): AISP mandate
was assigned to user account (IBAN)
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK0252009999930000000107", "dateFrom":
"2017-08-01", "dateTo": "2017-08-30" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
PSD2 APIs – Mocked data Version 2.0
37
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban":
"SK0252009999930000000107",
"dateFrom": "2017-08-01",
"dateTo": "2017-08-30"
}
"pageCount": 1,
"transactions": []
}
4. Positive scenario - with date filter and
paging, not empty result
Auth: Bearer access_token
When it happens (example): AISP mandate
was assigned to user account (IBAN)
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK0252009999930000000107", "dateFrom":
"2017-08-01", "dateTo": "2017-11-30",
"page": 2, "pageSize": 2, "status": "ALL" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"pageCount": 3,
"transactions": [{
PSD2 APIs – Mocked data Version 2.0
38
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban":
"SK0252009999930000000107",
"dateFrom": "2017-08-01",
"dateTo": "2017-11-30",
"page": 2,
"pageSize": 2,
"status": "ALL"
}
"amount": {
"value": 1,
"currency":
"EUR"
},
"creditDebitIndicator":
"DBIT",
"status": "INFO",
"valueDate": "2017-09-
28",
"bookingDate": "2017-
09-28",
"transactionDetails": {
"remittanceInformation":
"SERVICE FEES"
}
}]
}
5. Negative scenario: a legal term of 90 days
has passed without the SCA being executed
Auth: Bearer access_token
What's wrong: calling account transactions
after 90 days has passed without SCA being
executed
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK3352009999930000000131", "dateFrom":
"2017-10-01", "dateTo": "2017-11-30",
"page": 0, "pageSize": 10, "status": "ALL" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
HTTP status code: 401
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
PSD2 APIs – Mocked data Version 2.0
39
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban":
"SK3352009999930000000131",
"dateFrom": "2017-10-01",
"dateTo": "2017-11-30",
"page": 0,
"pageSize": 10,
"status": "ALL"
}
{
"errors": [{
"messageCode":
"exception.unauthorized.newEnrollment",
"messageArgs": [],
"message": "Invalid
access token - not valid, expired, not valid
scope or mandates - new enrollment is
required."
}]
}
6. Negative scenario: the client has not
given a mandate for this account
Auth: Bearer access_token
What's wrong: calling account transactions
without user mandate for his account
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK8052009999930000000158", "dateFrom":
"2017-10-01", "dateTo": "2017-11-30",
"page": 0, "pageSize": 10, "status": "ALL" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
HTTP status code: 401
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
PSD2 APIs – Mocked data Version 2.0
40
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban":
"SK8052009999930000000158",
"dateFrom": "2017-10-01",
"dateTo": "2017-11-30",
"page": 0,
"pageSize": 10,
"status": "ALL"
}
8
Body
{
"errors": [{
"messageCode":
"exception.unauthorized.newEnrollment",
"messageArgs": [],
"message": "Invalid
access token - not valid, expired, not valid
scope or mandates - new enrollment is
required."
}]
}
7. Positive scenario - transaction history for
status "BOOK"
Auth: Bearer access_token
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK0252009999930000000107", "dateFrom":
"2017-10-01", "dateTo": "2017-11-30",
HTTP status code: 200
PSD2 APIs – Mocked data Version 2.0
41
When it happens (example): AISP mandate
was assigned to user account (IBAN)
"page": 0, "pageSize": 10, "status": "BOOK" }'
-H 'Content-Type: application/json' -H
'Request-ID: c2c48fc8-0000-0000' -H 'PSU-IP-
Address: 192.168.0.100' -H 'PSU-Device-OS:
iOS 11' -H 'PSU-User-Agent: Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36' -H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban":
"SK0252009999930000000107",
"dateFrom": "2017-10-01",
"dateTo": "2017-11-30",
"page": 0,
"pageSize": 10,
"status": "BOOK"
}
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"pageCount": 1,
"transactions": []
}
PSD2 APIs – Mocked data Version 2.0
42
8. Negative scenario: value "dateFrom" is
higher than "dateTo"
Auth: Bearer access_token
What's wrong: invalid value of dateTo
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK0252009999930000000107", "dateFrom":
"2018-10-01", "dateTo": "2017-12-31",
"page": 0, "pageSize": 10, "status": "ALL" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban":
"SK0252009999930000000107",
"dateFrom": "2018-10-01",
"dateTo": "2017-12-31",
"page": 0,
"pageSize": 10,
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property":
"transactionHistoryApiRequest",
"message": "Date
dateTo should be equals or later than
dateFrom"
}]
}
PSD2 APIs – Mocked data Version 2.0
43
"status": "ALL"
}
9. Negative scenario: dateFrom is more than
3 years ago
Auth: Bearer access_token
What's wrong: invalid value of dateFrom
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK0252009999930000000107", "dateFrom":
"2010-10-01", "dateTo": "2017-12-31",
"page": 0, "pageSize": 10, "status": "ALL" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban":
"SK0252009999930000000107",
"dateFrom": "2010-10-01",
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property":
"dateFrom",
"messageCode":
"validation.minimalFilterDateFrom.message"
,
"message": "Time
range is too long",
"invalidValue": "2010-
10-01"
}]
}
PSD2 APIs – Mocked data Version 2.0
44
"dateTo": "2017-12-31",
"page": 0,
"pageSize": 10,
"status": "ALL"
}
10. Negative scenario: dateFrom - invalid
date format
Auth: Bearer access_token
What's wrong: invalid value of dateFrom
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK0252009999930000000107", "dateFrom":
"2010-10-01", "dateTo": "2018-01-
14T14:02:32.807+01:00", "page": 0,
"pageSize": 10, "status": "ALL" }' -H 'Content-
Type: application/json' -H 'Request-ID:
c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.field.wrong.date.format",
"messageArgs":
["dateTo", "2018-01-
14T14:02:32.807+01:00"],
"message": "Field
dateTo contains invalid date: 2018-01-
14T14:02:32.807+01:00"
}]
}
PSD2 APIs – Mocked data Version 2.0
45
{
"iban":
"SK0252009999930000000107",
"dateFrom": "2010-10-01",
"dateTo": "2018-01-
14T14:02:32.807+01:00",
"page": 0,
"pageSize": 10,
"status": "ALL"
}
11. Negative scenario: 24 hours request
counter for third party provider was
exceeded
Auth: Bearer access_token
What's wrong: third party provider exceeded
the count of AISP requests (account
information and account transactions) in 24
hours without user authentication
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/transactions -d '{ "iban":
"SK8552009999930000000262", "dateFrom":
"2017-10-01", "dateTo": "2017-11-30",
"page": 0, "pageSize": 10, "status": "ALL" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
HTTP status code: 401
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.unauthorized.newEnrollment",
"messageArgs": [],
"message": "Invalid
access token - not valid, expired, not valid
scope or mandates - new enrollment is
required."
}]
}
PSD2 APIs – Mocked data Version 2.0
46
0ggCuLQu2pRacz-kyaYww4v
Body
{
"iban":
"SK8552009999930000000262",
"dateFrom": "2017-10-01",
"dateTo": "2017-11-30",
"page": 0,
"pageSize": 10,
"status": "ALL"
}
5.3 AISP OPERATION: LIST OF ACCOUNTS URL: https://developerhub.otpbanka.sk/api/v2/accounts
Test scenario Request Response
1. Positive scenario
Auth: Bearer access_token
When it happens (example): at least one AISP
mandate was assigned to user accounts
It is necessary to use Request-ID below to get
proper response.
curl -i -X GET
https://developerhub.otpbanka.sk/api/v2/ac
counts -H 'Content-Type: application/json' -H
'Request-ID: c2c48fc8-0000-0000' -H 'PSU-IP-
Address: 192.168.0.100' -H 'PSU-Device-OS:
iOS 11' -H 'PSU-User-Agent: Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36' -H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"creationDateTime": "2018-01-
13T14:40:28.903+01:00",
PSD2 APIs – Mocked data Version 2.0
47
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
"accounts": [
{
"name": "Ján Novák",
"productName": "OTP Konto",
"type": "CACC",
"baseCurrency": "EUR",
"identification": {
"iban":
"SK0252009999930000000107"
},
"servicer": {
"financialInstitutionIdentification":
"OTPVSKBXXXX"
},
"scope": [
"AISP"
]
},
{
"name": "Účet 2",
"productName": "BÚ",
"type": "CACC",
"baseCurrency": "EUR",
"identification": {
"iban":
"SK5552009999930000000123"
},
"servicer": {
"financialInstitutionIdentification":
"OTPVSKBXXXX"
},
PSD2 APIs – Mocked data Version 2.0
48
"scope": [
"AISP"
]
}
]
}
2. Positive scenario
Auth: Bearer access_token
When it happens (example): no AISP
mandate was assigned to user accounts
It is necessary to use Request-ID below to get
proper response.
curl -i -X GET
https://developerhub.otpbanka.sk/api/v2/ac
counts -H 'Content-Type: application/json' -H
'Request-ID: c2c48fc8-0000-0001' -H 'PSU-IP-
Address: 192.168.0.100' -H 'PSU-Device-OS:
iOS 11' -H 'PSU-User-Agent: Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36' -H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0001
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"creationDateTime": "2018-01-
13T15:24:27.553+01:00",
"accounts": []
}
PSD2 APIs – Mocked data Version 2.0
49
6 MOCKED DATA FOR PISP OPERATIONS
6.1 PISP OPERATION: STANDARD PAYMENT INITIALIZATION (XML) URL: https://developerhub.otpbanka.sk/api/v1/payments/standard/iso
Note: ReqdExctnDt - always NOW() or near future
Cut of time: 21:00 (requests sent between 21:00 and 0:00 end up with error code 400).
Test scenario Request Response
1. Positive scenario
Auth: access_token
When it happens (example): after
access_token generation
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/standard/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"
standalone="yes"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId><CreDtTm>2018-01-
14T12:12:12</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty/></GrpHdr><PmtInf><PmtInfId
>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><ReqdExctnDt>NOW()</ReqdExctnDt
><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5552000000000001773099</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId/></DbtrAgt>
<CdtTrfTxInf><PmtId><EndToEndId>0a514ac
f-cdc7-4292-abc5-
165e642142b</EndToEndId></PmtId><Amt>
<InstdAmt
Ccy="EUR">5.50</InstdAmt></Amt><Cdtr><
Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK8
952009999930000000190</IBAN></Id></Cdt
rAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrf
Initn></Document>' -H 'Content-Type:
application/xml' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/xml;charset=UTF-
8
Body
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
02.001.03">
<CstmrPmtStsRpt>
<GrpHdr>
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>8b4265e6-45a5-4755-
b8ce-a3d374067cd</OrgnlMsgId>
<OrgnlMsgNmId />
PSD2 APIs – Mocked data Version 2.0
50
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="utf-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
</OrgnlGrpInfAndSts>
<OrgnlPmtInfAndSts>
<TxInfAndSts>
<TxSts>ACTC</TxSts>
<StsRsnInf>
<Rsn />
</StsRsnInf>
<AcctSvcrRef>PAYMENT_tr_uSmwffUaB-
gLCB3z-mC6iBcP0BOwj76d7UlfB-
mr</AcctSvcrRef>
</TxInfAndSts>
</OrgnlPmtInfAndSts>
</CstmrPmtStsRpt>
</Document>
PSD2 APIs – Mocked data Version 2.0
51
<ReqdExctnDt>NOW()</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0a514acf-cdc7-4292-
abc5-165e642142b</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">5.50</InstdAmt>
</Amt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK8952009999930000000190</IBAN
>
</Id>
PSD2 APIs – Mocked data Version 2.0
52
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
2. Negative scenario: the source account is
not an OTP Bank account
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
debtor IBAN is not OTP Bank account
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/standard/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="utf-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId><CreDtTm>2018-01-
14T12:12:12</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><ReqdExctnDt>2018-01-
14</ReqdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K2952009999930000000203</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>0a514acf-cdc7-4292-abc5-
165e642142b</EndToEndId></PmtId><Amt>
<InstdAmt
Ccy="EUR">5.50</InstdAmt></Amt><Cdtr><
Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK8
952009999930000000190</IBAN></Id></Cdt
rAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrf
Initn></Document>' -H 'Content-Type:
application/xml' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
Only today timestamp before COT or near
future timestamp is valid.
Unable to get BIC code from IBAN.
PSD2 APIs – Mocked data Version 2.0
53
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="utf-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<ReqdExctnDt>2018-01-
14</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
PSD2 APIs – Mocked data Version 2.0
54
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK2952009999930000000203</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0a514acf-cdc7-4292-
abc5-165e642142b</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">5.50</InstdAmt>
</Amt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK8952009999930000000190</IBAN
>
</Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
PSD2 APIs – Mocked data Version 2.0
55
</CstmrCdtTrfInitn>
</Document>
3. Negative scenario: the source account is
not an OTP Bank account (bank code: 5200)
Auth: access_token
What's wrong:
debtor IBAN is not OTP Bank account
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/standard/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="utf-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId><CreDtTm>2018-01-
14T12:12:12</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><ReqdExctnDt>2018-01-
14</ReqdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K2911119999930000000203</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>0a514acf-cdc7-4292-abc5-
165e642142b</EndToEndId></PmtId><Amt>
<InstdAmt
Ccy="EUR">5.50</InstdAmt></Amt><Cdtr><
Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK8
952009999930000000190</IBAN></Id></Cdt
rAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrf
Initn></Document>' -H 'Content-Type:
application/xml' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
Must match "^(SK[0-9]{2,2}5200[0-
9]{16,16})$"
Only today timestamp before COT or near
future timestamp is valid.
Unable to get BIC code from IBAN.
PSD2 APIs – Mocked data Version 2.0
56
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="utf-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<ReqdExctnDt>2018-01-
14</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
PSD2 APIs – Mocked data Version 2.0
57
<Id>
<IBAN>SK2911119999930000000203</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0a514acf-cdc7-4292-
abc5-165e642142b</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">5.50</InstdAmt>
</Amt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK8952009999930000000190</IBAN
>
</Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
PSD2 APIs – Mocked data Version 2.0
58
4. Negative scenario: target account is not in
SEPA format
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
debtor IBAN is not in SEPA format
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/standard/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="utf-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId><CreDtTm>2018-01-
14T12:12:12</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><ReqdExctnDt>2018-01-
14</ReqdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>0a514acf-cdc7-4292-abc5-
165e642142b</EndToEndId></PmtId><Amt>
<InstdAmt
Ccy="EUR">5.50</InstdAmt></Amt><Cdtr><
Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK5
452009999930000000238</IBAN></Id></Cdt
rAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrf
Initn></Document>' -H 'Content-Type:
application/xml' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
Only today timestamp before COT or near
future timestamp is valid.
Unable to get BIC code from IBAN.
PSD2 APIs – Mocked data Version 2.0
59
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="utf-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<ReqdExctnDt>2018-01-
14</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
PSD2 APIs – Mocked data Version 2.0
60
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0a514acf-cdc7-4292-
abc5-165e642142b</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">5.50</InstdAmt>
</Amt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK5452009999930000000238</IBAN
>
</Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
5. Negative scenario: unavailable banking
system
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/standard/iso -H "Content-Type:
HTTP status code: 400
PSD2 APIs – Mocked data Version 2.0
61
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
banking system offline
application/xml" -d '<?xml version="1.0"
encoding="utf-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId><CreDtTm>2018-01-
14T12:12:12</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><ReqdExctnDt>2018-01-
14</ReqdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K1052009999930000000254</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>0a514acf-cdc7-4292-abc5-
165e642142b</EndToEndId></PmtId><Amt>
<InstdAmt
Ccy="EUR">5.50</InstdAmt></Amt><Cdtr><
Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK0
752009999930000000211</IBAN></Id></Cdt
rAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrf
Initn></Document>' -H 'Content-Type:
application/xml' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
Unable to get BIC code from IBAN.
Only today timestamp before COT or near
future timestamp is valid.
PSD2 APIs – Mocked data Version 2.0
62
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="utf-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<ReqdExctnDt>2018-01-
14</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK1052009999930000000254</IBAN
>
</Id>
PSD2 APIs – Mocked data Version 2.0
63
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0a514acf-cdc7-4292-
abc5-165e642142b</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">5.50</InstdAmt>
</Amt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK0752009999930000000211</IBAN
>
</Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
6. Negative scenario: the currency is
different from the EUR
Auth: access_token
What's wrong:
requestedExecutionDate is not today
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/standard/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="utf-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>8b4265e6-45a5-4755-b8ce-
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
PSD2 APIs – Mocked data Version 2.0
64
timestamp before COT or near future
timestamp
banking system offline
currency is not EUR
a3d374067cd</MsgId><CreDtTm>2018-01-
14T12:12:12</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><ReqdExctnDt>2018-01-
14</ReqdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>0a514acf-cdc7-4292-abc5-
165e642142b</EndToEndId></PmtId><Amt>
<InstdAmt
Ccy="CZK">5.50</InstdAmt></Amt><Cdtr><
Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK0
752009999930000000211</IBAN></Id></Cdt
rAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrf
Initn></Document>' -H 'Content-Type:
application/xml' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Content-Type: text/plain;charset=UTF-8
Body
Only EUR currency value is allowed.
Unable to get BIC code from IBAN.
Only today timestamp before COT or near
future timestamp is valid.
PSD2 APIs – Mocked data Version 2.0
65
Body
<?xml version="1.0" encoding="utf-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<ReqdExctnDt>2018-01-
14</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
PSD2 APIs – Mocked data Version 2.0
66
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0a514acf-cdc7-4292-
abc5-165e642142b</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="CZK">5.50</InstdAmt>
</Amt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK0752009999930000000211</IBAN
>
</Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
7. Negative scenario: debtor IBAN is equals
to creditor IBAN
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
creditor IBAN
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/standard/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="utf-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId><CreDtTm>2018-01-
14T12:12:12</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
IBAN of the debtor and creditor are the
PSD2 APIs – Mocked data Version 2.0
67
mtMtd><ReqdExctnDt>2018-01-
14</ReqdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>0a514acf-cdc7-4292-abc5-
165e642142b</EndToEndId></PmtId><Amt>
<InstdAmt
Ccy="EUR">5.50</InstdAmt></Amt><Cdtr><
Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK5
852009999930000000166</IBAN></Id></Cdt
rAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrf
Initn></Document>' -H 'Content-Type:
application/xml' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="utf-8"?>
<Document
same.
Only today timestamp before COT or near
future timestamp is valid.
PSD2 APIs – Mocked data Version 2.0
68
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<ReqdExctnDt>2018-01-
14</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0a514acf-cdc7-4292-
PSD2 APIs – Mocked data Version 2.0
69
abc5-165e642142b</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">5.50</InstdAmt>
</Amt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
8. Negative scenario: requested execution
date is in distant future
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/standard/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"
standalone="yes"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId><CreDtTm>2018-01-
14T12:12:12</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty/></GrpHdr><PmtInf><PmtInfId
>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><ReqdExctnDt>9999-02-
12</ReqdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5552000000000001773099</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId/></DbtrAgt>
<CdtTrfTxInf><PmtId><EndToEndId>0a514ac
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
Only today timestamp before COT or near
future timestamp is valid.
PSD2 APIs – Mocked data Version 2.0
70
f-cdc7-4292-abc5-
165e642142b</EndToEndId></PmtId><Amt>
<InstdAmt
Ccy="EUR">5.50</InstdAmt></Amt><Cdtr><
Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK8
952009999930000000190</IBAN></Id></Cdt
rAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrf
Initn></Document>' -H 'Content-Type:
application/xml' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="utf-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
PSD2 APIs – Mocked data Version 2.0
71
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<ReqdExctnDt>9999-02-
12</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0a514acf-cdc7-4292-
abc5-165e642142b</EndToEndId>
</PmtId>
<Amt>
PSD2 APIs – Mocked data Version 2.0
72
<InstdAmt Ccy="EUR">5.50</InstdAmt>
</Amt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK8952009999930000000190</IBAN
>
</Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
9. Negative scenario: blacklist IBAN
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
creditor IBAN is forbidden
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/standard/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"
standalone="yes"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId><CreDtTm>2018-01-
14T12:12:12</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty/></GrpHdr><PmtInf><PmtInfId
>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><ReqdExctnDt>9999-02-
12</ReqdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5552000000000001773099</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId/></DbtrAgt>
<CdtTrfTxInf><PmtId><EndToEndId>0a514ac
f-cdc7-4292-abc5-
165e642142b</EndToEndId></PmtId><Amt>
<InstdAmt
Ccy="EUR">5.50</InstdAmt></Amt><Cdtr><
Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK6
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
IBAN of creditor is forbidden.
Only today timestamp before COT or near
future timestamp is valid.
PSD2 APIs – Mocked data Version 2.0
73
352009999930000000270</IBAN></Id></Cdt
rAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrf
Initn></Document>' -H 'Content-Type:
application/xml' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="utf-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</MsgId>
<CreDtTm>2018-01-
14T12:12:12</CreDtTm>
PSD2 APIs – Mocked data Version 2.0
74
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<ReqdExctnDt>9999-02-
12</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0a514acf-cdc7-4292-
abc5-165e642142b</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">5.50</InstdAmt>
</Amt>
<Cdtr>
PSD2 APIs – Mocked data Version 2.0
75
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK6352009999930000000270</IBAN
>
</Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
6.2 PISP OPERATION: STANDARD PAYMENT SUBMISSION URL: https://developerhub.otpbanka.sk/api/v1/payments/submission
Note: Request-ID is not a part of response's orderId. It's just a mock!
Test scenario Request Response
1. Positive scenario - payment completed
ACSC
Auth: Bearer access_token
When it happens (example): submit payment
call after user authorize payment
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/submission -H 'Content-Type:
application/json' -H 'Request-ID: ffdc2f2d-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"orderId":
"PAYMENT_tr_ffdc2f2d-0000-0000",
"status": "ACSC",
"statusDateTime": "2018-01-
PSD2 APIs – Mocked data Version 2.0
76
Content-Type: application/json
Request-ID: ffdc2f2d-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
14T09:38:04.586+01:00"
}
2. Negative scenario - payment rejected
RJCT
Auth: Bearer access_token
What's wrong: submitted payment failed
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/submission -H 'Content-Type:
application/json' -H 'Request-ID: ffdc2f2d-
0000-0001' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: ffdc2f2d-0000-0001
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"orderId":
"PAYMENT_tr_ffdc2f2d-0000-0001",
"status": "RJCT",
"reasonCode": "AM04",
"statusDateTime": "2018-01-
14T14:32:36.693+01:00"
}
PSD2 APIs – Mocked data Version 2.0
77
6.3 PISP OPERATION: PAYMENT ORDER STATUS URL: https://developerhub.otpbanka.sk/api/v1/payments/{orderId}/status
Test scenario Request Response
1. Positive scenario: ACSC - settlement
completed
Auth: Bearer access_token
When it happens (example): after payment
processed correctly
curl -i -X GET
https://developerhub.otpbanka.sk/api/v1/pa
yments/PAYMENT_tr_ffdc2f2d-1288-0000-
0000/status -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"orderId":"PAYMENT_tr_ffdc2f2d-1288-
0000-0000",
"status": "ACSC",
"statusDateTime": "2018-01-
14T14:02:32.807+01:00"
}
2. Negative scenario: RJCT - rejected
payment
Auth: Bearer access_token
When it happens (example): after payment
processed not correctly
curl -i -X GET
https://developerhub.otpbanka.sk/api/v1/pa
yments/PAYMENT_tr_ffdc2f2d-1288-0000-
0001/status -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
PSD2 APIs – Mocked data Version 2.0
78
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"orderId":"PAYMENT_tr_ffdc2f2d-1288-
0000-0001",
"status": "RJCT",
"reasonCode": "AM04",
"statusDateTime": "2018-01-
14T14:02:32.807+01:00"
}
3. Negative scenario: non-existent orderId
Auth: Bearer access_token
What's wrong: invalid orderId value
curl -i -X GET
https://developerhub.otpbanka.sk/api/v1/pa
yments/PAYMENT_tr_ffdc2f2d-1288-0000-
0002/status -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.order.id.notFound",
"messageArgs":
["PAYMENT_tr_ffdc2f2d-1288-0000-0002"],
PSD2 APIs – Mocked data Version 2.0
79
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
"message": "Unknown
orderId ffdc2f2d-1288-0000-0002."
}]
}
6.4 PISP OPERATION: STANDARD PAYMENT INITIALIZATION (JSON) URL: https://developerhub.otpbanka.sk/api/v2/payments/standard/sba
Note: requestedExecutionDate - always NOW() or near future
Cut of time: 21:00 (requests sent between 21:00 and 0:00 end up with error code 400).
Test scenario Request Response
1. Positive scenario
Auth: access_token
When it happens (example): after
access_token generation
curl -i -X POST
https://developerhub.otpbanka.sk/api/v2/pa
yments/standard/sba -H "Content-Type:
application/json" -d '{ "creditor":{ "iban":
"SK8952009999930000000190", "name":
"Ivana Prva" }, "debtor":{ "iban":
"SK5852009999930000000166", "name":
"Jan Novak" }, "instructedAmount":{
"currency": "EUR", "value": "5.50" },
"endToEndIdentification": "pisp",
"instructionIdentification": "payment 1",
"remittanceInformation": "string",
"requestedExecutionDate": "NOW()" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"orderId": "PAYMENT_tr_ffdc2f2d-1288-
4212-be38-a011838ee051",
"status": "ACTC",
"statusDateTime": "2018-01-
13T17:15:27.350+01:00"
}
PSD2 APIs – Mocked data Version 2.0
80
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"creditor":{
"iban":
"SK8952009999930000000190",
"name":
"Ivana Prva"
},
"debtor":{
"iban":
"SK5852009999930000000166",
"name":
"Jan Novak"
},
"instructedAmount":{
"currency":
"EUR",
"value":
"5.50"
},
PSD2 APIs – Mocked data Version 2.0
81
"endToEndIdentification": "pisp",
"instructionIdentification":
"payment 1",
"remittanceInformation":
"string",
"requestedExecutionDate":
"NOW()"
}
2. Negative scenario: the source account is
not an OTP Bank account
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
debtor IBAN is not OTP Bank account
curl -i -X POST
https://developerhub.otpbanka.sk/api/v2/pa
yments/standard/sba -H "Content-Type:
application/json" -d '{ "creditor":{ "iban":
"SK8952009999930000000190", "name":
"Ivana Prva" }, "debtor":{ "iban":
"SK2952009999930000000203", "name":
"Jan Novak" }, "instructedAmount":{
"currency": "EUR", "value": "5.50" },
"endToEndIdentification": "pisp",
"instructionIdentification": "payment 1",
"remittanceInformation": "string",
"requestedExecutionDate": "2018-01-
13T17:14:44.850+01:00" }' -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property":
"debtor.iban",
"messageCode":
"validation.bankCodeValidator.message",
"message": "Unable to
get BIC code from IBAN.",
"invalidValue":
"SK2952009999930000000203"
}, {
"property":
"requestedExecutionDate",
"messageCode":
"validation.sepaRequestedExecutionDate.me
ssage",
"message": "Only
today timestamp before COT or near future
PSD2 APIs – Mocked data Version 2.0
82
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"creditor":{
"iban":
"SK8952009999930000000190",
"name":
"Ivana Prva"
},
"debtor":{
"iban":
"SK2952009999930000000203",
"name":
"Jan Novak"
},
"instructedAmount":{
"currency":
"EUR",
"value":
"5.50"
},
"endToEndIdentification": "pisp",
"instructionIdentification":
"payment 1",
"remittanceInformation":
"string",
"requestedExecutionDate":
"2018-01-13T17:14:44.850+01:00"
}
timestamp is valid.",
"invalidValue": "2018-
01-13T17:14:44.85+01:00"
}]
}
3. Negative scenario: the source account is
not an OTP Bank account (bank code: 5200)
curl -i -X POST
https://developerhub.otpbanka.sk/api/v2/pa
yments/standard/sba -H "Content-Type:
HTTP status code: 400
PSD2 APIs – Mocked data Version 2.0
83
Auth: access_token
What's wrong:
debtor IBAN is not OTP Bank account
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
application/json" -d '{ "creditor":{ "iban":
"SK8952009999930000000190", "name":
"Ivana Prva" }, "debtor":{ "iban":
"SK2911119999930000000203", "name":
"Jan Novak" }, "instructedAmount":{
"currency": "EUR", "value": "5.50" },
"endToEndIdentification": "pisp",
"instructionIdentification": "payment 1",
"remittanceInformation": "string",
"requestedExecutionDate": "2018-01-
13T17:14:44.850+01:00" }' -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"creditor":{
"iban":
"SK8952009999930000000190",
"name":
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property":
"debtor.iban",
"messageCode":
"javax.validation.constraints.Pattern.messag
e",
"message": "Must
match \"^(SK[0-9]{2,2}5200[0-9]{16,16})$\"",
"invalidValue":
"SK2911119999930000000203"
}, {
"property":
"debtor.iban",
"messageCode":
"validation.bankCodeValidator.message",
"message": "Unable to
get BIC code from IBAN.",
"invalidValue":
"SK2911119999930000000203"
}, {
"property":
"requestedExecutionDate",
"messageCode":
"validation.sepaRequestedExecutionDate.me
ssage",
"message": "Only
today timestamp before COT or near future
timestamp is valid.",
"invalidValue": "2018-
PSD2 APIs – Mocked data Version 2.0
84
"Ivana Prva"
},
"debtor":{
"iban":
"SK2911119999930000000203",
"name":
"Jan Novak"
},
"instructedAmount":{
"currency":
"EUR",
"value":
"5.50"
},
"endToEndIdentification": "pisp",
"instructionIdentification":
"payment 1",
"remittanceInformation":
"string",
"requestedExecutionDate":
"2018-01-13T17:14:44.850+01:00"
}
01-13T17:14:44.85+01:00"
}]
}
4. Negative scenario: target account is not in
SEPA format
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
debtor IBAN is not in SEPA format
curl -i -X POST
https://developerhub.otpbanka.sk/api/v2/pa
yments/standard/sba -H "Content-Type:
application/json" -d '{ "creditor":{ "iban":
"SK5452009999930000000238", "name":
"Ivana Prva" }, "debtor":{ "iban":
"SK5852009999930000000166", "name":
"Jan Novak" }, "instructedAmount":{
"currency": "EUR", "value": "5.50" },
"endToEndIdentification": "pisp",
"instructionIdentification": "payment 1",
"remittanceInformation": "string",
"requestedExecutionDate": "2018-01-
13T17:14:44.850+01:00" }' -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property":
PSD2 APIs – Mocked data Version 2.0
85
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"creditor":{
"iban":
"SK5452009999930000000238",
"name":
"Ivana Prva"
},
"debtor":{
"iban":
"SK5852009999930000000166",
"name":
"Jan Novak"
},
"instructedAmount":{
"creditor.iban",
"messageCode":
"validation.bankCodeValidator.message",
"message": "Unable to
get BIC code from IBAN.",
"invalidValue":
"SK5452009999930000000238"
}, {
"property":
"requestedExecutionDate",
"messageCode":
"validation.sepaRequestedExecutionDate.me
ssage",
"message": "Only
today timestamp before COT or near future
timestamp is valid.",
"invalidValue": "2018-
01-13T17:14:44.85+01:00"
}]
}
PSD2 APIs – Mocked data Version 2.0
86
"currency":
"EUR",
"value":
"5.50"
},
"endToEndIdentification": "pisp",
"instructionIdentification":
"payment 1",
"remittanceInformation":
"string",
"requestedExecutionDate":
"2018-01-13T17:14:44.850+01:00"
}
5. Negative scenario: unavailable banking
system
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
banking system offline
curl -i -X POST
https://developerhub.otpbanka.sk/api/v2/pa
yments/standard/sba -H "Content-Type:
application/json" -d '{ "creditor":{ "iban":
"SK0752009999930000000211", "name":
"Ivana Prva" }, "debtor":{ "iban":
"SK1052009999930000000254", "name":
"Jan Novak" }, "instructedAmount":{
"currency": "EUR", "value": "5.50" },
"endToEndIdentification": "pisp",
"instructionIdentification": "payment 1",
"remittanceInformation": "string",
"requestedExecutionDate": "2018-01-
13T17:14:44.850+01:00" }' -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property":
"requestedExecutionDate",
"messageCode":
"validation.sepaRequestedExecutionDate.me
ssage",
"message": "Only
today timestamp before COT or near future
timestamp is valid.",
"invalidValue": "2018-
01-13T17:14:44.85+01:00"
}, {
"property":
PSD2 APIs – Mocked data Version 2.0
87
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"creditor":{
"iban":
"SK0752009999930000000211",
"name":
"Ivana Prva"
},
"debtor":{
"iban":
"SK1052009999930000000254",
"name":
"Jan Novak"
},
"instructedAmount":{
"currency":
"EUR",
"value":
"5.50"
},
"endToEndIdentification": "pisp",
"instructionIdentification":
"payment 1",
"remittanceInformation":
"string",
"requestedExecutionDate":
"creditor.iban",
"messageCode":
"validation.bankCodeValidator.message",
"message": "Unable to
get BIC code from IBAN.",
"invalidValue":
"SK0752009999930000000211"
}]
}
PSD2 APIs – Mocked data Version 2.0
88
"2018-01-13T17:14:44.850+01:00"
}
6. Negative scenario: the currency is
different from the EUR
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
banking system offline
currency is not EUR
curl -i -X POST
https://developerhub.otpbanka.sk/api/v2/pa
yments/standard/sba -H "Content-Type:
application/json" -d '{ "creditor":{ "iban":
"SK0752009999930000000211", "name":
"Ivana Prva" }, "debtor": { "iban":
"SK5852009999930000000166", "name":
"Jan Novak" }, "instructedAmount": {
"currency": "CZK", "value": "5.50" },
"endToEndIdentification": "pisp",
"instructionIdentification": "payment 1",
"remittanceInformation": "string",
"requestedExecutionDate": "2018-01-
13T17:14:44.850+01:00" }' -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property":
"creditor.iban",
"messageCode":
"validation.bankCodeValidator.message",
"message": "Unable to
get BIC code from IBAN.",
"invalidValue":
"SK0752009999930000000211"
}, {
"property":
"instructedAmount",
"messageCode":
"validation.currencyValue.message",
"message": "Only EUR
currency value is allowed.",
"invalidValue": {
"value":
5.50,
"currency":
"CZK"
}
}, {
PSD2 APIs – Mocked data Version 2.0
89
{
"creditor":{
"iban":
"SK0752009999930000000211",
"name":
"Ivana Prva"
},
"debtor":{
"iban":
"SK5852009999930000000166",
"name":
"Jan Novak"
},
"instructedAmount":{
"currency":
"CZK",
"value":
"5.50"
},
"endToEndIdentification": "pisp",
"instructionIdentification":
"payment 1",
"remittanceInformation":
"string",
"requestedExecutionDate":
"2018-01-13T17:14:44.850+01:00"
}
"property":
"requestedExecutionDate",
"messageCode":
"validation.sepaRequestedExecutionDate.me
ssage",
"message": "Only
today timestamp before COT or near future
timestamp is valid.",
"invalidValue": "2018-
01-13T17:14:44.85+01:00"
}]
}
7. Negative scenario: debtor IBAN is equals
to creditor IBAN
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
curl -i -X POST
https://developerhub.otpbanka.sk/api/v2/pa
yments/standard/sba -H "Content-Type:
application/json" -d '{ "creditor":{ "iban":
"SK5852009999930000000166", "name":
"Ivana Prva" }, "debtor":{ "iban":
"SK5852009999930000000166", "name":
"Jan Novak" }, "instructedAmount":{
"currency": "EUR", "value": "5.50" },
"endToEndIdentification": "pisp",
"instructionIdentification": "payment 1",
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
PSD2 APIs – Mocked data Version 2.0
90
creditor IBAN "remittanceInformation": "string",
"requestedExecutionDate": "2018-01-
13T17:14:44.850+01:00" }' -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"creditor":{
"iban":
"SK5852009999930000000166",
"name":
"Ivana Prva"
},
"debtor":{
"iban":
Body
{
"errors": [{
"property":
"requestedExecutionDate",
"messageCode":
"validation.sepaRequestedExecutionDate.me
ssage",
"message": "Only
today timestamp before COT or near future
timestamp is valid.",
"invalidValue": "2018-
01-13T17:14:44.85+01:00"
}, {
"property":
"standardSbaPaymentApiRequest",
"message": "IBAN of
the debtor and creditor are the same."
}]
}
PSD2 APIs – Mocked data Version 2.0
91
"SK5852009999930000000166",
"name":
"Jan Novak"
},
"instructedAmount":{
"currency":
"EUR",
"value":
"5.50"
},
"endToEndIdentification": "pisp",
"instructionIdentification":
"payment 1",
"remittanceInformation":
"string",
"requestedExecutionDate":
"2018-01-13T17:14:44.850+01:00"
}
8. Negative scenario: requested execution
date is in distant future
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
curl -i -X POST
https://developerhub.otpbanka.sk/api/v2/pa
yments/standard/sba -H "Content-Type:
application/json" -d '{ "creditor":{ "iban":
"SK8952009999930000000190", "name":
"Ivana Prva" }, "debtor":{ "iban":
"SK5852009999930000000166", "name":
"Jan Novak" }, "instructedAmount":{
"currency": "EUR", "value": "5.50" },
"endToEndIdentification": "pisp",
"instructionIdentification": "payment 1",
"remittanceInformation": "string",
"requestedExecutionDate": "9999-02-
12T00:00:00.000+01:00" }' -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property":
"requestedExecutionDate",
"messageCode":
"validation.sepaRequestedExecutionDate.me
ssage",
"message": "Only
today timestamp before COT or near future
PSD2 APIs – Mocked data Version 2.0
92
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"creditor":{
"iban":
"SK8952009999930000000190",
"name":
"Ivana Prva"
},
"debtor":{
"iban":
"SK5852009999930000000166",
"name":
"Jan Novak"
},
"instructedAmount":{
"currency":
"EUR",
"value":
"5.50"
},
timestamp is valid.",
"invalidValue": "9999-
02-12T00:00:00.000+01:00"
}]
}
PSD2 APIs – Mocked data Version 2.0
93
"endToEndIdentification": "pisp",
"instructionIdentification":
"payment 1",
"remittanceInformation":
"string",
"requestedExecutionDate":
"9999-02-12T00:00:00.000+01:00"
}
9. Negative scenario: blacklist IBAN
Auth: access_token
What's wrong:
requestedExecutionDate is not today
timestamp before COT or near future
timestamp
creditor IBAN is forbidden
curl -i -X POST
https://developerhub.otpbanka.sk/api/v2/pa
yments/standard/sba -H "Content-Type:
application/json" -d '{ "creditor":{ "iban":
"SK6352009999930000000270", "name":
"Ivana Prva" }, "debtor":{ "iban":
"SK5852009999930000000166", "name":
"Jan Novak" }, "instructedAmount":{
"currency": "EUR", "value": "5.50" },
"endToEndIdentification": "pisp",
"instructionIdentification": "payment 1",
"remittanceInformation": "string",
"requestedExecutionDate": "9999-02-
12T00:00:00.000+01:00" }' -H 'Content-Type:
application/json' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"property": "requestedExecutionDate",
"messageCode":
"validation.sepaRequestedExecutionDate.me
ssage",
"message": "Only today timestamp
before COT or near future timestamp is
valid.",
"invalidValue": "9999-02-
12T00:00:00+01:00"
}, {
"property": "creditor.iban",
"messageCode":
"validation.blacklistValue.message",
"message": "IBAN of creditor is
forbidden.",
"invalidValue":
"SK6352009999930000000270"
PSD2 APIs – Mocked data Version 2.0
94
}]
}
6.5 PISP OPERATION: PAYMENT ORDER CANCELLATION URL: https://developerhub.otpbanka.sk/api/v1/payments/{orderId}/rcp
Test scenario Request Response
1. Positive scenario: successfully
cancellation of payment
Auth: Bearer access_token
When it happens (example): after SEPA
payment in near future processed correctly,
third party provider can cancel it
curl -i -X DELETE
https://developerhub.otpbanka.sk/api/v1/pa
yments/PAYMENT_tr_ffdc2f2d-1288-0000-
0000/rcp -H 'Content-Type: application/json'
-H 'Request-ID: c2c48fc8-0000-0000' -H 'PSU-
IP-Address: 192.168.0.100' -H 'PSU-Device-
OS: iOS 11' -H 'PSU-User-Agent: Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36' -H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
v
Body
{
"orderId":
"PAYMENT_tr_ffdc2f2d-1288-0000-0000"
}
2. Negative scenario: non-existent orderId
Auth: Bearer access_token
curl -i -X DELETE
https://developerhub.otpbanka.sk/api/v1/pa
yments/PAYMENT_tr_ffdc2f2d-1288-0000-
0001/rcp -H 'Content-Type: application/json'
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
PSD2 APIs – Mocked data Version 2.0
95
What's wrong: invalid orderId value
-H 'Request-ID: c2c48fc8-0000-0000' -H 'PSU-
IP-Address: 192.168.0.100' -H 'PSU-Device-
OS: iOS 11' -H 'PSU-User-Agent: Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36' -H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.order.id.notFound",
"messageArgs":
["PAYMENT_tr_ffdc2f2d-1288-0000-0001"],
"message": "Unknown orderId
PAYMENT_tr_ffdc2f2d-1288-0000-0001."
}]
}
3. Negative scenario: payment was already
canceled
Auth: Bearer access_token
What's wrong: canceled orderId value
curl -i -X DELETE
https://developerhub.otpbanka.sk/api/v1/pa
yments/PAYMENT_tr_ffdc2f2d-1288-0000-
0002/rcp -H 'Content-Type: application/json'
-H 'Request-ID: c2c48fc8-0000-0000' -H 'PSU-
IP-Address: 192.168.0.100' -H 'PSU-Device-
OS: iOS 11' -H 'PSU-User-Agent: Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36' -H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.order.id.alreadyCanceled",
"messageArgs":
PSD2 APIs – Mocked data Version 2.0
96
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
["PAYMENT_tr_ffdc2f2d-1288-0000-0002"],
"message": "Payment with orderId
PAYMENT_tr_ffdc2f2d-1288-0000-0002 was
already canceled."
}]
}
4. Negative scenario: SWIFT payment
cancellation
Auth: Bearer access_token
What's wrong: only SEPA payment can be
canceled
curl -i -X DELETE
https://developerhub.otpbanka.sk/api/v1/pa
yments/PAYMENT_tr_ffdc2f2d-1288-0000-
0003/rcp -H 'Content-Type: application/json'
-H 'Request-ID: c2c48fc8-0000-0000' -H 'PSU-
IP-Address: 192.168.0.100' -H 'PSU-Device-
OS: iOS 11' -H 'PSU-User-Agent: Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36' -H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.order.id.notSepa",
"messageArgs":
["PAYMENT_tr_ffdc2f2d-1288-0000-0003"],
"message": "Only SEPA payment can be
canceled."
}]
}
PSD2 APIs – Mocked data Version 2.0
97
5. Negative scenario: not near future SEPA
payment
Auth: Bearer access_token
What's wrong: only SEPA payment with near
future timestamp (requestedExecutionDate)
can be canceled
curl -i -X DELETE
https://developerhub.otpbanka.sk/api/v1/pa
yments/PAYMENT_tr_ffdc2f2d-1288-0000-
0004/rcp -H 'Content-Type: application/json'
-H 'Request-ID: c2c48fc8-0000-0000' -H 'PSU-
IP-Address: 192.168.0.100' -H 'PSU-Device-
OS: iOS 11' -H 'PSU-User-Agent: Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36' -H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.order.id.unableToCancel",
"messageArgs":
["PAYMENT_tr_ffdc2f2d-1288-0000-0004"],
"message": "This SEPA payment can't be
canceled."
}]
}
6.6 PISP OPERATION: SWIFT PAYMENT INITIALIZATION (XML) URL: https://developerhub.otpbanka.sk/api/v1/payments/swift/iso
Note: requestedExecutionDate - always NOW() or near future
Swift processing time: 00:00 - 15:00 (requests sent between 15:00 and 23:59 end up with error code
400).
This section is not duplicated the negative scenarios from the section 'Standard payment initialization
(XML)'. Only new negative scenarios are included.
Test scenario Request Response
PSD2 APIs – Mocked data Version 2.0
98
1. Positive scenario: creditor IBAN
Auth: access_token
When it happens (example): after
access_token generation
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/swift/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>payment 1</MsgId><CreDtTm>2018-01-
13T14:24:39</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><PmtTpInf><InstrPrty>NORM</Instr
Prty></PmtTpInf><ReqdExctnDt>NOW()</Re
qdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>pisp</EndToEndId></PmtId><Amt><Inst
dAmt
Ccy="EUR">100</InstdAmt></Amt><ChrgBr>
SHAR</ChrgBr><Cdtr><Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK6
807200002891987426353</IBAN></Id></Cdt
rAcct><RmtInf><Ustrd>string</Ustrd><Strd>
<AddtlRmtInf>string2</AddtlRmtInf></Strd>
</RmtInf></CdtTrfTxInf></PmtInf></CstmrCd
tTrfInitn></Document>' -H 'Request-ID:
c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/xml;charset=UTF-
8
Body
<?xml version="1.0" encoding="UTF-8"?>
<ns2:Document
xmlns:ns2="urn:iso:std:iso:20022:tech:xsd:pa
in.002.001.03">
<CstmrPmtStsRpt>
<ns2:GrpHdr>
<ns2:MsgId>payment 1</ns2:MsgId>
<ns2:CreDtTm>2018-01-
13T14:24:39</ns2:CreDtTm>
</ns2:GrpHdr>
<ns2:OrgnlGrpInfAndSts>
<ns2:OrgnlMsgId>payment
1</ns2:OrgnlMsgId>
<ns2:OrgnlMsgNmId />
</ns2:OrgnlGrpInfAndSts>
<ns2:OrgnlPmtInfAndSts>
<ns2:TxInfAndSts>
<ns2:TxSts>ACTC</ns2:TxSts>
<ns2:StsRsnInf>
<ns2:Rsn />
</ns2:StsRsnInf>
<ns2:AcctSvcrRef>PAYMENT_tr_ffdc2f2d-
1288-4212-be38-
a011838ee051</ns2:AcctSvcrRef>
PSD2 APIs – Mocked data Version 2.0
99
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>payment 1</MsgId>
<CreDtTm>2018-01-
13T14:24:39</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
</PmtTpInf>
<ReqdExctnDt>NOW()</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
</ns2:TxInfAndSts>
</ns2:OrgnlPmtInfAndSts>
</CstmrPmtStsRpt>
</ns2:Document>
PSD2 APIs – Mocked data Version 2.0
100
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>pisp</EndToEndId>
</PmtId>
<Amt>
<InstdAmt
Ccy="EUR">100</InstdAmt>
</Amt>
<ChrgBr>SHAR</ChrgBr>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK6807200002891987426353</IBAN
>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>string</Ustrd>
<Strd>
<AddtlRmtInf>string2</AddtlRmtInf>
PSD2 APIs – Mocked data Version 2.0
101
</Strd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
2. Positive scenario: creditor BBAN and
creditor bank BIC code
Auth: access_token
When it happens (example): after
access_token generation
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/swift/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>payment 1</MsgId><CreDtTm>2018-01-
13T14:24:39</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><PmtTpInf><InstrPrty>NORM</Instr
Prty></PmtTpInf><ReqdExctnDt>NOW()</Re
qdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>pisp</EndToEndId></PmtId><Amt><Inst
dAmt
Ccy="EUR">100</InstdAmt></Amt><ChrgBr>
SHAR</ChrgBr><CdtrAgt><FinInstnId><BIC>S
UBASKBX</BIC></FinInstnId></CdtrAgt><Cdt
r><Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><Othr><Id
>10010659</Id></Othr></Id></CdtrAcct><R
mtInf><Ustrd>string</Ustrd><Strd><AddtlR
mtInf>string2</AddtlRmtInf></Strd></RmtIn
f></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn
></Document>' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/xml;charset=UTF-
8
Body
<?xml version="1.0" encoding="UTF-8"?>
<ns2:Document
xmlns:ns2="urn:iso:std:iso:20022:tech:xsd:pa
in.002.001.03">
<CstmrPmtStsRpt>
<ns2:GrpHdr>
<ns2:MsgId>payment 1</ns2:MsgId>
<ns2:CreDtTm>2018-01-
13T14:24:39</ns2:CreDtTm>
</ns2:GrpHdr>
<ns2:OrgnlGrpInfAndSts>
<ns2:OrgnlMsgId>payment
1</ns2:OrgnlMsgId>
<ns2:OrgnlMsgNmId />
</ns2:OrgnlGrpInfAndSts>
PSD2 APIs – Mocked data Version 2.0
102
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>payment 1</MsgId>
<CreDtTm>2018-01-
13T14:24:39</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<PmtTpInf>
<ns2:OrgnlPmtInfAndSts>
<ns2:TxInfAndSts>
<ns2:TxSts>ACTC</ns2:TxSts>
<ns2:StsRsnInf>
<ns2:Rsn />
</ns2:StsRsnInf>
<ns2:AcctSvcrRef>PAYMENT_tr_ffdc2f2d-
1288-4212-be38-
a011838ee051</ns2:AcctSvcrRef>
</ns2:TxInfAndSts>
</ns2:OrgnlPmtInfAndSts>
</CstmrPmtStsRpt>
</ns2:Document>
PSD2 APIs – Mocked data Version 2.0
103
<InstrPrty>NORM</InstrPrty>
</PmtTpInf>
<ReqdExctnDt>NOW()</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>pisp</EndToEndId>
</PmtId>
<Amt>
<InstdAmt
Ccy="EUR">100</InstdAmt>
</Amt>
<ChrgBr>SHAR</ChrgBr>
<CdtrAgt>
<FinInstnId>
<BIC>SUBASKBX</BIC>
</FinInstnId>
</CdtrAgt>
PSD2 APIs – Mocked data Version 2.0
104
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<Othr>
<Id>10010659</Id>
</Othr>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>string</Ustrd>
<Strd>
<AddtlRmtInf>string2</AddtlRmtInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
3. Positive scenario: creditor BBAN and
creditor bank information
Auth: access_token
When it happens (example): after
access_token generation
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/swift/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>payment 1</MsgId><CreDtTm>2018-01-
13T14:24:39</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><PmtTpInf><InstrPrty>NORM</Instr
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/xml;charset=UTF-
8
Body
PSD2 APIs – Mocked data Version 2.0
105
Prty></PmtTpInf><ReqdExctnDt>NOW()</Re
qdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>pisp</EndToEndId></PmtId><Amt><Inst
dAmt
Ccy="EUR">100</InstdAmt></Amt><ChrgBr>
SHAR</ChrgBr><CdtrAgt><FinInstnId><Nm>
Moja
Banka</Nm><PstlAdr><StrtNm>Nova</StrtN
m><BldgNb>15/A</BldgNb><PstCd>82101</
PstCd><TwnNm>Bratislava</TwnNm><Ctry>
SK</Ctry></PstlAdr></FinInstnId></CdtrAgt>
<Cdtr><Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><Othr><Id
>10010659</Id></Othr></Id></CdtrAcct><R
mtInf><Ustrd>string</Ustrd><Strd><AddtlR
mtInf>string2</AddtlRmtInf></Strd></RmtIn
f></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn
></Document>' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
<?xml version="1.0" encoding="UTF-8"?>
<ns2:Document
xmlns:ns2="urn:iso:std:iso:20022:tech:xsd:pa
in.002.001.03">
<CstmrPmtStsRpt>
<ns2:GrpHdr>
<ns2:MsgId>payment 1</ns2:MsgId>
<ns2:CreDtTm>2018-01-
13T14:24:39</ns2:CreDtTm>
</ns2:GrpHdr>
<ns2:OrgnlGrpInfAndSts>
<ns2:OrgnlMsgId>payment
1</ns2:OrgnlMsgId>
<ns2:OrgnlMsgNmId />
</ns2:OrgnlGrpInfAndSts>
<ns2:OrgnlPmtInfAndSts>
<ns2:TxInfAndSts>
<ns2:TxSts>ACTC</ns2:TxSts>
<ns2:StsRsnInf>
<ns2:Rsn />
</ns2:StsRsnInf>
<ns2:AcctSvcrRef>PAYMENT_tr_ffdc2f2d-
1288-4212-be38-
a011838ee051</ns2:AcctSvcrRef>
</ns2:TxInfAndSts>
</ns2:OrgnlPmtInfAndSts>
</CstmrPmtStsRpt>
</ns2:Document>
PSD2 APIs – Mocked data Version 2.0
106
Body
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>payment 1</MsgId>
<CreDtTm>2018-01-
13T14:24:39</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
</PmtTpInf>
<ReqdExctnDt>NOW()</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
PSD2 APIs – Mocked data Version 2.0
107
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>pisp</EndToEndId>
</PmtId>
<Amt>
<InstdAmt
Ccy="EUR">100</InstdAmt>
</Amt>
<ChrgBr>SHAR</ChrgBr>
<CdtrAgt>
<FinInstnId>
<Nm>Moja Banka</Nm>
<PstlAdr>
<StrtNm>Nova</StrtNm>
<BldgNb>15/A</BldgNb>
<PstCd>82101</PstCd>
<TwnNm>Bratislava</TwnNm>
<Ctry>SK</Ctry>
</PstlAdr>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
PSD2 APIs – Mocked data Version 2.0
108
<Othr>
<Id>10010659</Id>
</Othr>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>string</Ustrd>
<Strd>
<AddtlRmtInf>string2</AddtlRmtInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
4. Negative scenario: missing creditor
information
Auth: access_token
What's wrong:
missing countryCode in creditorBank object
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/swift/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>payment 1</MsgId><CreDtTm>2018-01-
13T14:24:39</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><PmtTpInf><InstrPrty>NORM</Instr
Prty></PmtTpInf><ReqdExctnDt>NOW()</Re
qdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>pisp</EndToEndId></PmtId><Amt><Inst
dAmt
Ccy="EUR">100</InstdAmt></Amt><ChrgBr>
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
Creditor bank identification is missing. Please
fill BIC code or name plus address of creditor
bank.
PSD2 APIs – Mocked data Version 2.0
109
SHAR</ChrgBr><CdtrAgt><FinInstnId><Nm>
Moja
Banka</Nm><PstlAdr><StrtNm>Nova</StrtN
m><BldgNb>15/A</BldgNb><PstCd>82101</
PstCd><TwnNm>Bratislava</TwnNm></PstlA
dr></FinInstnId></CdtrAgt><Cdtr><Nm>Ivan
a
Prva</Nm></Cdtr><CdtrAcct><Id><Othr><Id
>10010659</Id></Othr></Id></CdtrAcct><R
mtInf><Ustrd>string</Ustrd><Strd><AddtlR
mtInf>string2</AddtlRmtInf></Strd></RmtIn
f></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn
></Document>' -H 'Request-ID: c2c48fc8-
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
PSD2 APIs – Mocked data Version 2.0
110
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>payment 1</MsgId>
<CreDtTm>2018-01-
13T14:24:39</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
</PmtTpInf>
<ReqdExctnDt>NOW()</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
PSD2 APIs – Mocked data Version 2.0
111
<EndToEndId>pisp</EndToEndId>
</PmtId>
<Amt>
<InstdAmt
Ccy="EUR">100</InstdAmt>
</Amt>
<ChrgBr>SHAR</ChrgBr>
<CdtrAgt>
<FinInstnId>
<Nm>Moja Banka</Nm>
<PstlAdr>
<StrtNm>Nova</StrtNm>
<BldgNb>15/A</BldgNb>
<PstCd>82101</PstCd>
<TwnNm>Bratislava</TwnNm>
<Ctry>SK</Ctry>
</PstlAdr>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<Othr>
<Id>10010659</Id>
</Othr>
</Id>
</CdtrAcct>
PSD2 APIs – Mocked data Version 2.0
112
<RmtInf>
<Ustrd>string</Ustrd>
<Strd>
<AddtlRmtInf>string2</AddtlRmtInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
5. Negative scenario: wrong creditor
information
Auth: access_token
What's wrong:
payload contains creditor IBAN and also
creditor BBAN
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/swift/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>payment 1</MsgId><CreDtTm>2018-01-
13T14:24:39</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><PmtTpInf><InstrPrty>NORM</Instr
Prty></PmtTpInf><ReqdExctnDt>NOW()</Re
qdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>pisp</EndToEndId></PmtId><Amt><Inst
dAmt
Ccy="EUR">100</InstdAmt></Amt><ChrgBr>
SHAR</ChrgBr><CdtrAgt><FinInstnId><BIC>S
UBASKBX</BIC></FinInstnId></CdtrAgt><Cdt
r><Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK6
807200002891987426353</IBAN><Othr><Id
>10010659</Id></Othr></Id></CdtrAcct><R
mtInf><Ustrd>string</Ustrd><Strd><AddtlR
mtInf>string2</AddtlRmtInf></Strd></RmtIn
f></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn
></Document>' -H 'Request-ID: c2c48fc8-
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
invalid_request cvc-complex-type.2.4.d:
Invalid content was found starting with
element 'Othr'. No child element is expected
at this point.
PSD2 APIs – Mocked data Version 2.0
113
0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>payment 1</MsgId>
<CreDtTm>2018-01-
13T14:24:39</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
PSD2 APIs – Mocked data Version 2.0
114
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
</PmtTpInf>
<ReqdExctnDt>NOW()</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>pisp</EndToEndId>
</PmtId>
<Amt>
<InstdAmt
Ccy="EUR">100</InstdAmt>
</Amt>
<ChrgBr>SHAR</ChrgBr>
PSD2 APIs – Mocked data Version 2.0
115
<CdtrAgt>
<FinInstnId>
<BIC>SUBASKBX</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK6807200002891987426353</IBAN
>
<Othr>
<Id>10010659</Id>
</Othr>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>string</Ustrd>
<Strd>
<AddtlRmtInf>string2</AddtlRmtInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
PSD2 APIs – Mocked data Version 2.0
116
6. Negative scenario: creditor from OTP
Bank
Auth: access_token
What's wrong:
creditor IBAN or BIC code is from OTP Bank
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/swift/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>payment 1</MsgId><CreDtTm>2018-01-
13T14:24:39</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><PmtTpInf><InstrPrty>NORM</Instr
Prty></PmtTpInf><ReqdExctnDt>NOW()</Re
qdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>pisp</EndToEndId></PmtId><Amt><Inst
dAmt
Ccy="EUR">100</InstdAmt></Amt><ChrgBr>
SHAR</ChrgBr><Cdtr><Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK8
952009999930000000190</IBAN></Id></Cdt
rAcct><RmtInf><Ustrd>string</Ustrd><Strd>
<AddtlRmtInf>string2</AddtlRmtInf></Strd>
</RmtInf></CdtTrfTxInf></PmtInf></CstmrCd
tTrfInitn></Document>' -H 'Request-ID:
c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
Creditor IBAN can't be from OTP Bank.
PSD2 APIs – Mocked data Version 2.0
117
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>payment 1</MsgId>
<CreDtTm>2018-01-
13T14:24:39</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
</PmtTpInf>
<ReqdExctnDt>NOW()</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
PSD2 APIs – Mocked data Version 2.0
118
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>pisp</EndToEndId>
</PmtId>
<Amt>
<InstdAmt
Ccy="EUR">100</InstdAmt>
</Amt>
<ChrgBr>SHAR</ChrgBr>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK8952009999930000000190</IBAN
>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>string</Ustrd>
<Strd>
<AddtlRmtInf>string2</AddtlRmtInf>
PSD2 APIs – Mocked data Version 2.0
119
</Strd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
7. Negative scenario: Amount value with
currency HUF or JPY can't have decimal
places.
Auth: access_token
What's wrong:
amount value with decimal places and
currency HUF
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/swift/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>payment 1</MsgId><CreDtTm>2018-01-
13T14:24:39</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><PmtTpInf><InstrPrty>NORM</Instr
Prty></PmtTpInf><ReqdExctnDt>NOW()</Re
qdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>pisp</EndToEndId></PmtId><Amt><Inst
dAmt
Ccy="HUF">100.12</InstdAmt></Amt><Chrg
Br>SHAR</ChrgBr><Cdtr><Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK6
807200002891987426353</IBAN></Id></Cdt
rAcct><RmtInf><Ustrd>string</Ustrd><Strd>
<AddtlRmtInf>string2</AddtlRmtInf></Strd>
</RmtInf></CdtTrfTxInf></PmtInf></CstmrCd
tTrfInitn></Document>' -H 'Request-ID:
c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
Amount value with currency HUF or JPY can't
have decimal places.
PSD2 APIs – Mocked data Version 2.0
120
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>payment 1</MsgId>
<CreDtTm>2018-01-
13T14:24:39</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
PSD2 APIs – Mocked data Version 2.0
121
</PmtTpInf>
<ReqdExctnDt>NOW()</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>pisp</EndToEndId>
</PmtId>
<Amt>
<InstdAmt
Ccy="HUF">100.12</InstdAmt>
</Amt>
<ChrgBr>SHAR</ChrgBr>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK6807200002891987426353</IBAN
PSD2 APIs – Mocked data Version 2.0
122
>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>string</Ustrd>
<Strd>
<AddtlRmtInf>string2</AddtlRmtInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
8. Negative scenario: requested execution
date is in distant future
Auth: access_token
What's wrong:
requestedExecutionDate is not near future
timestamp
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/pa
yments/swift/iso -H "Content-Type:
application/xml" -d '<?xml version="1.0"
encoding="UTF-8"?><Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03"><CstmrCdtTrfInitn><GrpHdr><Ms
gId>payment 1</MsgId><CreDtTm>2018-01-
13T14:24:39</CreDtTm><NbOfTxs>1</NbOf
Txs><InitgPty
/></GrpHdr><PmtInf><PmtInfId>8b4265e6-
45a5-4755-b8ce-
a3d374067cd</PmtInfId><PmtMtd>CHK</P
mtMtd><PmtTpInf><InstrPrty>NORM</Instr
Prty></PmtTpInf><ReqdExctnDt>9999-12-
31</ReqdExctnDt><Dbtr><Nm>Jan
Novak</Nm></Dbtr><DbtrAcct><Id><IBAN>S
K5852009999930000000166</IBAN></Id></
DbtrAcct><DbtrAgt><FinInstnId
/></DbtrAgt><CdtTrfTxInf><PmtId><EndToEn
dId>pisp</EndToEndId></PmtId><Amt><Inst
dAmt
Ccy="EUR">100</InstdAmt></Amt><ChrgBr>
SHAR</ChrgBr><Cdtr><Nm>Ivana
Prva</Nm></Cdtr><CdtrAcct><Id><IBAN>SK6
807200002891987426353</IBAN></Id></Cdt
rAcct><RmtInf><Ustrd>string</Ustrd><Strd>
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: text/plain;charset=UTF-8
Body
Only today timestamp before 3pm is valid.
Maximum timestamp is today + {days} days,
except weekends and public holidays.
PSD2 APIs – Mocked data Version 2.0
123
<AddtlRmtInf>string2</AddtlRmtInf></Strd>
</RmtInf></CdtTrfTxInf></PmtInf></CstmrCd
tTrfInitn></Document>' -H 'Request-ID:
c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/xml
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.0
01.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>payment 1</MsgId>
<CreDtTm>2018-01-
13T14:24:39</CreDtTm>
<NbOfTxs>1</NbOfTxs>
PSD2 APIs – Mocked data Version 2.0
124
<InitgPty />
</GrpHdr>
<PmtInf>
<PmtInfId>8b4265e6-45a5-4755-b8ce-
a3d374067cd</PmtInfId>
<PmtMtd>CHK</PmtMtd>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
</PmtTpInf>
<ReqdExctnDt>9999-12-
31</ReqdExctnDt>
<Dbtr>
<Nm>Jan Novak</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SK5852009999930000000166</IBAN
>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId />
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>pisp</EndToEndId>
</PmtId>
<Amt>
<InstdAmt
Ccy="EUR">100</InstdAmt>
PSD2 APIs – Mocked data Version 2.0
125
</Amt>
<ChrgBr>SHAR</ChrgBr>
<Cdtr>
<Nm>Ivana Prva</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>SK6807200002891987426353</IBAN
>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>string</Ustrd>
<Strd>
<AddtlRmtInf>string2</AddtlRmtInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
PSD2 APIs – Mocked data Version 2.0
126
6.7 PISP OPERATION: BALANCE CHECK URL: https://developerhub.otpbanka.sk/api/v1/accounts/balanceCheck
Note: Please see chapter 7.1 for futher information.
7 MOCKED DATA FOR PIISP OPERATION
7.1 PIISP OPERATION: BALANCE CHECK URL: https://developerhub.otpbanka.sk/api/v1/accounts/balanceCheck
Test Scenario Request Response
1. Positive scenario: APPR - sufficient
financial resources in the account
Auth: Bearer access_token
When it happens (example): enough money
in the account
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/balanceCheck -d '{ "amount": {
"currency": "EUR", "value": 100 },
"creationDate": "2018-01-
13T14:24:39.534+01:00", "iban":
"SK0252009999930000000107",
"instructionIdentification": "piisp" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"result": "APPR",
"creationDateTime": "2018-01-
13T14:24:56.408+01:00"
}
PSD2 APIs – Mocked data Version 2.0
127
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"amount": {
"currency": "EUR",
"value": 100
},
"creationDate": "2018-01-
13T14:24:39.534+01:00",
"iban": "SK0252009999930000000107",
"instructionIdentification": "piisp"
}
2. Positive scenario: DECL - insufficient
financial resources in the account
Auth: Bearer access_token
When it happens (example): not enough
money in the account
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/balanceCheck -d '{ "amount": {
"currency": "EUR", "value": 1000 },
"creationDate": "2018-01-
13T14:54:44.480+01:00", "iban":
"SK0252009999930000000107",
"instructionIdentification": "piisp" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
HTTP status code: 200
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"result": "DECL",
"creationDateTime": "2018-01-
13T14:55:06.314+01:00"
}
PSD2 APIs – Mocked data Version 2.0
128
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"amount": {
"currency": "EUR",
"value": 10000
},
"creationDate": "2018-01-
13T14:54:44.480+01:00",
"iban": "SK0252009999930000000107",
"instructionIdentification": "piisp"
}
3. Negative scenario: The currency in the
request is different from the account
currency
Auth: Bearer access_token
What's wrong: wrong currency
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/balanceCheck -d '{ "amount": {
"currency": "CZK", "value": 10000 },
"creationDate": "2018-01-
13T14:54:44.480+01:00", "iban":
"SK0252009999930000000107",
"instructionIdentification": "piisp" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
PSD2 APIs – Mocked data Version 2.0
129
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"amount": {
"currency": "CZK",
"value": 10000
},
"creationDate": "2018-01-
13T14:54:44.480+01:00",
"iban": "SK0252009999930000000107",
"instructionIdentification": "piisp"
}
"exception.account.wrong.currency",
"messageArgs":
["CZK"],
"message": "Payer's
account currency is incorrect - wrong
currency CZK."
}]
}
4. Negative scenario: The account is not OTP
Bank account (request validation)
Auth: Bearer access_token
What's wrong: wrong IBAN
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/balanceCheck -d '{ "amount": {
"currency": "EUR", "value": 0 },
"creationDate": "2018-01-
13T08:51:15.778+01:00", "iban":
"SK3611119999930000000174",
"instructionIdentification": "piisp" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
HTTP status code: 400
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
PSD2 APIs – Mocked data Version 2.0
130
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"amount": {
"currency": "EUR",
"value": 0
},
"creationDate": "2018-01-
13T08:51:15.778+01:00",
"iban": "SK3611119999930000000174",
"instructionIdentification": "piisp"
}
Body
{
"errors": [{
"property": "iban",
"messageCode":
"javax.validation.constraints.Pattern.messag
e",
"message": "Must
match \"^(SK[0-9]{2,2}5200[0-9]{16,16})$\"",
"invalidValue":
"SK14511119999930000000182"
}]
}
5. Negative scenario: The account is not OTP curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
HTTP status code: 401
PSD2 APIs – Mocked data Version 2.0
131
Bank account (service validation)
Auth: Bearer access_token
What's wrong: wrong IBAN
counts/balanceCheck -d '{ "amount": {
"currency": "EUR", "value": 0 },
"creationDate": "2018-01-
13T08:51:15.778+01:00", "iban":
"SK3652009999930000000174",
"instructionIdentification": "piisp" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"amount": {
"currency": "EUR",
"value": 0
},
"creationDate": "2018-01-
13T08:51:15.778+01:00",
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.unauthorized.newEnrollment",
"messageArgs": [],
"message": "Invalid
access token - not valid, expired, not valid
scope or mandates - new enrollment is
required."
}]
}
PSD2 APIs – Mocked data Version 2.0
132
"iban": "SK3652009999930000000174",
"instructionIdentification": "piisp"
}
6. Negative scenario: The client has not
given a mandate for this account
Auth: Bearer access_token
What's wrong: missing PIISP mandate for
given IBAN (client) and third party provider
curl -i -X POST
https://developerhub.otpbanka.sk/api/v1/ac
counts/balanceCheck -d '{ "amount": {
"currency": "EUR", "value": 100 },
"creationDate": "2018-01-
13T14:24:39.534+01:00", "iban":
"SK1452009999930000000182",
"instructionIdentification": "piisp" }' -H
'Content-Type: application/json' -H 'Request-
ID: c2c48fc8-0000-0000' -H 'PSU-IP-Address:
192.168.0.100' -H 'PSU-Device-OS: iOS 11' -H
'PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36' -
H "Authorization: Bearer
at_a5VmY38s1sLXzskf-0ggCuLQu2pRacz-
kyaYww4v" -H 'MOCK-
Authorization:TPP:5047b2df-0f05-46ec-95fa-
5917fda9a959'
Header
MOCK-Authorization:TPP:5047b2df-0f05-
46ec-95fa-5917fda9a959
Content-Type: application/json
Request-ID: c2c48fc8-0000-0000
PSU-IP-Address: 192.168.0.100
PSU-Device-OS: iOS 11
PSU-User-Agent: Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/41.0.2228.0 Safari/537.36
Authorization: Bearer at_a5VmY38s1sLXzskf-
0ggCuLQu2pRacz-kyaYww4v
Body
{
"amount": {
HTTP status code: 401
Header
Response-ID: 71ac4012-e21d-421b-b776-
988564f1fbb4
Content-Type: application/json;charset=UTF-
8
Body
{
"errors": [{
"messageCode":
"exception.unauthorized.newEnrollment",
"messageArgs": [],
"message": "Invalid
access token - not valid, expired, not valid
scope or mandates - new enrollment is
required."
}]
}
PSD2 APIs – Mocked data Version 2.0
133
"currency": "EUR",
"value": 1
},
"creationDate": "2018-01-
13T14:09:43.759+01:00",
"iban": "SK1452009999930000000182",
"instructionIdentification": "piisp"
}
PSD2 APIs – Mocked data Version 2.0
134
8 SWAGGER URL: https://developerhub.otpbanka.sk/swagger-ui.html
Third party provider can call PSD2 mock web services via curl command and also via swagger. Swagger
web site is protected by basic authentication where user name is client_id and password is client_secret.
This information was delivered via registration confirmation email.
Third party provider will also need their client_id and client_secret for every PSD2 web service call (see
1.). POST Rest web services also contain the model of request payload (see 2.) and the example of
request payload (see 3.). For the model and the example of XML request payload please see referenced
XSD schema (see 4.).
PSD2 APIs – Mocked data Version 2.0
135
Swagger website overview: