{"swagger":"2.0","info":{"title":"Open Bank Project API","description":"An Open Source API for Banks. (c) TESOBE GmbH. 2011 - 2024. Licensed under the AGPL and commercial licences.","contact":{"name":"TESOBE GmbH. / Open Bank Project","url":"https://openbankproject.com","email":"contact@tesobe.com"},"version":"v5.1.0"},"host":"obp-api-sandbox.nmbbank.co.tz","basePath":"/","schemes":["http","https"],"securityDefinitions":{"directLogin":{"type":"apiKey","description":"https://github.com/OpenBankProject/OBP-API/wiki/Direct-Login","in":"header","name":"Authorization"},"gatewayLogin":{"type":"apiKey","description":"https://github.com/OpenBankProject/OBP-API/wiki/Gateway-Login","in":"header","name":"Authorization"}},"security":[{"directLogin":[],"gatewayLogin":[]}],"paths":{"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types":{"get":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Get Transaction Request Types for Account","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"
Returns the Transaction Request Types that the account specified by ACCOUNT_ID and view specified by VIEW_ID has access to.
These are the ways this API Server can create a Transaction via a Transaction Request
(as opposed to Transaction Types which include external types too e.g. for Transactions created by core banking etc.)
A Transaction Request Type internally determines:
For instance in a 'SANDBOX_TAN' Transaction Request, for amounts over 1000 currency units, the user must supply a positive integer to complete the Transaction Request and create a Transaction.
This approach aims to provide only one endpoint for initiating transactions, and one that handles challenges, whilst still allowing flexibility with the payload and internal logic.
Authentication is Mandatory
","operationId":"getTransactionRequestTypes","parameters":[{"in":"body","name":"body","description":"EmptyClassJson object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/EmptyClassJson"}},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestTypesJsonV140"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types/ACCOUNT/transaction-requests":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Create Transaction Request (ACCOUNT)","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"When using ACCOUNT, the payee is set in the request body.
Money goes into the BANK_ID and ACCOUNT_ID specified in the request body.
Initiate a Payment via creating a Transaction Request.
In OBP, a transaction request
may or may not result in a transaction
. However, a transaction
only has one possible state: completed.
A Transaction Request
can have one of several states: INITIATED, NEXT_CHALLENGE_PENDING etc.
Transactions
are modeled on items in a bank statement that represent the movement of money.
Transaction Requests
are requests to move money which may or may not succeed and thus result in a Transaction
.
A Transaction Request
might create a security challenge that needs to be answered before the Transaction Request
proceeds.
In case 1 person needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => COMPLETED
In case n persons needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => NEXT_CHALLENGE_PENDING => ... => NEXT_CHALLENGE_PENDING => COMPLETED
The security challenge is bound to a user i.e. in case of right answer and the user is different than expected one the challenge will fail.
Rule for calculating number of security challenges:
If product Account attribute REQUIRED_CHALLENGE_ANSWERS=N then create N challenges
(one for every user that has a View where permission "can_add_transaction_request_to_any_account"=true)
In case REQUIRED_CHALLENGE_ANSWERS is not defined as an account attribute default value is 1.
Transaction Requests contain charge information giving the client the opportunity to proceed or not (as long as the challenge level is appropriate).
Transaction Requests can have one of several Transaction Request Types which expect different bodies. The escaped body is returned in the details key of the GET response.
This provides some commonality and one URL for many different payment or transfer types with enough flexibility to validate them differently.
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL.
In sandbox mode, TRANSACTION_REQUEST_TYPE is commonly set to ACCOUNT. See getTransactionRequestTypesSupportedByBank for all supported types.
In sandbox mode, if the amount is less than 1000 EUR (any currency, unless it is set differently on this server), the transaction request will create a transaction without a challenge, else the Transaction Request will be set to INITIALISED and a challenge will need to be answered.
If a challenge is created you must answer it using Answer Transaction Request Challenge before the Transaction is created.
You can transfer between different currency accounts. (new in 2.0.0). The currency in body must match the sending account.
The following static FX rates are available in sandbox mode:
Transaction Requests satisfy PSD2 requirements thus:
1) A transaction can be initiated by a third party application.
2) The customer is informed of the charge that will incurred.
3) The call supports delegated authentication (OAuth)
See this python code for a complete example of this flow.
There is further documentation here
Authentication is Mandatory
","operationId":"createTransactionRequestAccount","parameters":[{"in":"body","name":"body","description":"TransactionRequestBodyJsonV200 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestBodyJsonV200"}},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types/ACCOUNT_OTP/transaction-requests":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Create Transaction Request (ACCOUNT_OTP)","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"When using ACCOUNT, the payee is set in the request body.
Money goes into the BANK_ID and ACCOUNT_ID specified in the request body.
Initiate a Payment via creating a Transaction Request.
In OBP, a transaction request
may or may not result in a transaction
. However, a transaction
only has one possible state: completed.
A Transaction Request
can have one of several states: INITIATED, NEXT_CHALLENGE_PENDING etc.
Transactions
are modeled on items in a bank statement that represent the movement of money.
Transaction Requests
are requests to move money which may or may not succeed and thus result in a Transaction
.
A Transaction Request
might create a security challenge that needs to be answered before the Transaction Request
proceeds.
In case 1 person needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => COMPLETED
In case n persons needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => NEXT_CHALLENGE_PENDING => ... => NEXT_CHALLENGE_PENDING => COMPLETED
The security challenge is bound to a user i.e. in case of right answer and the user is different than expected one the challenge will fail.
Rule for calculating number of security challenges:
If product Account attribute REQUIRED_CHALLENGE_ANSWERS=N then create N challenges
(one for every user that has a View where permission "can_add_transaction_request_to_any_account"=true)
In case REQUIRED_CHALLENGE_ANSWERS is not defined as an account attribute default value is 1.
Transaction Requests contain charge information giving the client the opportunity to proceed or not (as long as the challenge level is appropriate).
Transaction Requests can have one of several Transaction Request Types which expect different bodies. The escaped body is returned in the details key of the GET response.
This provides some commonality and one URL for many different payment or transfer types with enough flexibility to validate them differently.
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL.
In sandbox mode, TRANSACTION_REQUEST_TYPE is commonly set to ACCOUNT. See getTransactionRequestTypesSupportedByBank for all supported types.
In sandbox mode, if the amount is less than 1000 EUR (any currency, unless it is set differently on this server), the transaction request will create a transaction without a challenge, else the Transaction Request will be set to INITIALISED and a challenge will need to be answered.
If a challenge is created you must answer it using Answer Transaction Request Challenge before the Transaction is created.
You can transfer between different currency accounts. (new in 2.0.0). The currency in body must match the sending account.
The following static FX rates are available in sandbox mode:
Transaction Requests satisfy PSD2 requirements thus:
1) A transaction can be initiated by a third party application.
2) The customer is informed of the charge that will incurred.
3) The call supports delegated authentication (OAuth)
See this python code for a complete example of this flow.
There is further documentation here
Authentication is Mandatory
","operationId":"createTransactionRequestAccountOtp","parameters":[{"in":"body","name":"body","description":"TransactionRequestBodyJsonV200 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestBodyJsonV200"}},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types/COUNTERPARTY/transaction-requests":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Create Transaction Request (COUNTERPARTY)","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Special instructions for COUNTERPARTY:
When using a COUNTERPARTY to create a Transaction Request, specificy the counterparty_id in the body of the request.
The routing details of the counterparty will be forwarded for the transfer.
Initiate a Payment via creating a Transaction Request.
In OBP, a transaction request
may or may not result in a transaction
. However, a transaction
only has one possible state: completed.
A Transaction Request
can have one of several states: INITIATED, NEXT_CHALLENGE_PENDING etc.
Transactions
are modeled on items in a bank statement that represent the movement of money.
Transaction Requests
are requests to move money which may or may not succeed and thus result in a Transaction
.
A Transaction Request
might create a security challenge that needs to be answered before the Transaction Request
proceeds.
In case 1 person needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => COMPLETED
In case n persons needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => NEXT_CHALLENGE_PENDING => ... => NEXT_CHALLENGE_PENDING => COMPLETED
The security challenge is bound to a user i.e. in case of right answer and the user is different than expected one the challenge will fail.
Rule for calculating number of security challenges:
If product Account attribute REQUIRED_CHALLENGE_ANSWERS=N then create N challenges
(one for every user that has a View where permission "can_add_transaction_request_to_any_account"=true)
In case REQUIRED_CHALLENGE_ANSWERS is not defined as an account attribute default value is 1.
Transaction Requests contain charge information giving the client the opportunity to proceed or not (as long as the challenge level is appropriate).
Transaction Requests can have one of several Transaction Request Types which expect different bodies. The escaped body is returned in the details key of the GET response.
This provides some commonality and one URL for many different payment or transfer types with enough flexibility to validate them differently.
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL.
In sandbox mode, TRANSACTION_REQUEST_TYPE is commonly set to ACCOUNT. See getTransactionRequestTypesSupportedByBank for all supported types.
In sandbox mode, if the amount is less than 1000 EUR (any currency, unless it is set differently on this server), the transaction request will create a transaction without a challenge, else the Transaction Request will be set to INITIALISED and a challenge will need to be answered.
If a challenge is created you must answer it using Answer Transaction Request Challenge before the Transaction is created.
You can transfer between different currency accounts. (new in 2.0.0). The currency in body must match the sending account.
The following static FX rates are available in sandbox mode:
Transaction Requests satisfy PSD2 requirements thus:
1) A transaction can be initiated by a third party application.
2) The customer is informed of the charge that will incurred.
3) The call supports delegated authentication (OAuth)
See this python code for a complete example of this flow.
There is further documentation here
Authentication is Mandatory
","operationId":"createTransactionRequestCounterparty","parameters":[{"in":"body","name":"body","description":"TransactionRequestBodyCounterpartyJSON object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestBodyCounterpartyJSON"}},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types/FREE_FORM/transaction-requests":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)"],"summary":"Create Transaction Request (FREE_FORM)","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Initiate a Payment via creating a Transaction Request.
In OBP, a transaction request
may or may not result in a transaction
. However, a transaction
only has one possible state: completed.
A Transaction Request
can have one of several states: INITIATED, NEXT_CHALLENGE_PENDING etc.
Transactions
are modeled on items in a bank statement that represent the movement of money.
Transaction Requests
are requests to move money which may or may not succeed and thus result in a Transaction
.
A Transaction Request
might create a security challenge that needs to be answered before the Transaction Request
proceeds.
In case 1 person needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => COMPLETED
In case n persons needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => NEXT_CHALLENGE_PENDING => ... => NEXT_CHALLENGE_PENDING => COMPLETED
The security challenge is bound to a user i.e. in case of right answer and the user is different than expected one the challenge will fail.
Rule for calculating number of security challenges:
If product Account attribute REQUIRED_CHALLENGE_ANSWERS=N then create N challenges
(one for every user that has a View where permission "can_add_transaction_request_to_any_account"=true)
In case REQUIRED_CHALLENGE_ANSWERS is not defined as an account attribute default value is 1.
Transaction Requests contain charge information giving the client the opportunity to proceed or not (as long as the challenge level is appropriate).
Transaction Requests can have one of several Transaction Request Types which expect different bodies. The escaped body is returned in the details key of the GET response.
This provides some commonality and one URL for many different payment or transfer types with enough flexibility to validate them differently.
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL.
In sandbox mode, TRANSACTION_REQUEST_TYPE is commonly set to ACCOUNT. See getTransactionRequestTypesSupportedByBank for all supported types.
In sandbox mode, if the amount is less than 1000 EUR (any currency, unless it is set differently on this server), the transaction request will create a transaction without a challenge, else the Transaction Request will be set to INITIALISED and a challenge will need to be answered.
If a challenge is created you must answer it using Answer Transaction Request Challenge before the Transaction is created.
You can transfer between different currency accounts. (new in 2.0.0). The currency in body must match the sending account.
The following static FX rates are available in sandbox mode:
Transaction Requests satisfy PSD2 requirements thus:
1) A transaction can be initiated by a third party application.
2) The customer is informed of the charge that will incurred.
3) The call supports delegated authentication (OAuth)
See this python code for a complete example of this flow.
There is further documentation here
Authentication is Mandatory
","operationId":"createTransactionRequestFreeForm","parameters":[{"in":"body","name":"body","description":"TransactionRequestBodyFreeFormJSON object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestBodyFreeFormJSON"}},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types/REFUND/transaction-requests":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Create Transaction Request (REFUND)","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Either the from
or the to
field must be filled. Those fields refers to the information about the party that will be refunded.
In case the from
object is used, it means that the refund comes from the part that sent you a transaction.
In the from
object, you have two choices :
- Use bank_id
and account_id
fields if the other account is registered on the OBP-API
- Use the counterparty_id
field in case the counterparty account is out of the OBP-API
In case the to
object is used, it means you send a request to a counterparty to ask for a refund on a previous transaction you sent.
(This case is not managed by the OBP-API and require an external adapter)
Initiate a Payment via creating a Transaction Request.
In OBP, a transaction request
may or may not result in a transaction
. However, a transaction
only has one possible state: completed.
A Transaction Request
can have one of several states: INITIATED, NEXT_CHALLENGE_PENDING etc.
Transactions
are modeled on items in a bank statement that represent the movement of money.
Transaction Requests
are requests to move money which may or may not succeed and thus result in a Transaction
.
A Transaction Request
might create a security challenge that needs to be answered before the Transaction Request
proceeds.
In case 1 person needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => COMPLETED
In case n persons needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => NEXT_CHALLENGE_PENDING => ... => NEXT_CHALLENGE_PENDING => COMPLETED
The security challenge is bound to a user i.e. in case of right answer and the user is different than expected one the challenge will fail.
Rule for calculating number of security challenges:
If product Account attribute REQUIRED_CHALLENGE_ANSWERS=N then create N challenges
(one for every user that has a View where permission "can_add_transaction_request_to_any_account"=true)
In case REQUIRED_CHALLENGE_ANSWERS is not defined as an account attribute default value is 1.
Transaction Requests contain charge information giving the client the opportunity to proceed or not (as long as the challenge level is appropriate).
Transaction Requests can have one of several Transaction Request Types which expect different bodies. The escaped body is returned in the details key of the GET response.
This provides some commonality and one URL for many different payment or transfer types with enough flexibility to validate them differently.
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL.
In sandbox mode, TRANSACTION_REQUEST_TYPE is commonly set to ACCOUNT. See getTransactionRequestTypesSupportedByBank for all supported types.
In sandbox mode, if the amount is less than 1000 EUR (any currency, unless it is set differently on this server), the transaction request will create a transaction without a challenge, else the Transaction Request will be set to INITIALISED and a challenge will need to be answered.
If a challenge is created you must answer it using Answer Transaction Request Challenge before the Transaction is created.
You can transfer between different currency accounts. (new in 2.0.0). The currency in body must match the sending account.
The following static FX rates are available in sandbox mode:
Transaction Requests satisfy PSD2 requirements thus:
1) A transaction can be initiated by a third party application.
2) The customer is informed of the charge that will incurred.
3) The call supports delegated authentication (OAuth)
See this python code for a complete example of this flow.
There is further documentation here
Authentication is Mandatory
","operationId":"createTransactionRequestRefund","parameters":[{"in":"body","name":"body","description":"TransactionRequestBodyRefundJsonV400 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestBodyRefundJsonV400"}},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types/SANDBOX_TAN/transaction-requests":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Create Transaction Request (SANDBOX_TAN)","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"When using SANDBOX_TAN, the payee is set in the request body.
Money goes into the BANK_ID and ACCOUNT_ID specified in the request body.
Initiate a Payment via creating a Transaction Request.
In OBP, a transaction request
may or may not result in a transaction
. However, a transaction
only has one possible state: completed.
A Transaction Request
can have one of several states.
Transactions
are modeled on items in a bank statement that represent the movement of money.
Transaction Requests
are requests to move money which may or may not succeeed and thus result in a Transaction
.
A Transaction Request
might create a security challenge that needs to be answered before the Transaction Request
proceeds.
Transaction Requests contain charge information giving the client the opportunity to proceed or not (as long as the challenge level is appropriate).
Transaction Requests can have one of several Transaction Request Types which expect different bodies. The escaped body is returned in the details key of the GET response.
This provides some commonality and one URL for many different payment or transfer types with enough flexibility to validate them differently.
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL.
In sandbox mode, TRANSACTION_REQUEST_TYPE is commonly set to SANDBOX_TAN. See getTransactionRequestTypesSupportedByBank for all supported types.
In sandbox mode, if the amount is less than 1000 EUR (any currency, unless it is set differently on this server), the transaction request will create a transaction without a challenge, else the Transaction Request will be set to INITIALISED and a challenge will need to be answered.
If a challenge is created you must answer it using Answer Transaction Request Challenge before the Transaction is created.
You can transfer between different currency accounts. (new in 2.0.0). The currency in body must match the sending account.
The following static FX rates are available in sandbox mode:
{
"XAF":{
"XAF":1.0,
"HKD":0.0135503,
"AUD":0.00228226,
"KRW":1.87975,
"JOD":0.00127784,
"GBP":0.00131092,
"MXN":0.0396,
"AED":0.00601555,
"INR":0.110241,
"XBT":2.9074795E-8,
"JPY":0.185328,
"USD":0.00163773,
"ILS":0.00641333,
"EUR":0.00152449
},
"HKD":{
"XAF":73.8049,
"HKD":1.0,
"AUD":0.178137,
"KRW":143.424,
"JOD":0.0903452,
"GBP":0.0985443,
"MXN":2.8067,
"AED":0.467977,
"INR":9.09325,
"XBT":2.164242461E-6,
"JPY":14.0867,
"USD":0.127427,
"ILS":0.460862,
"EUR":0.112495
},
"AUD":{
"XAF":438.162,
"HKD":5.61346,
"AUD":1.0,
"KRW":895.304,
"JOD":0.556152,
"GBP":0.609788,
"MXN":16.0826,
"AED":2.88368,
"INR":50.4238,
"XBT":1.2284055924E-5,
"JPY":87.0936,
"USD":0.785256,
"ILS":2.83558,
"EUR":0.667969
},
"KRW":{
"XAF":0.531986,
"HKD":0.00697233,
"AUD":0.00111694,
"KRW":1.0,
"JOD":6.30634E-4,
"GBP":6.97389E-4,
"MXN":0.0183,
"AED":0.00320019,
"INR":0.0586469,
"XBT":1.4234725E-8,
"JPY":0.0985917,
"USD":8.7125E-4,
"ILS":0.00316552,
"EUR":8.11008E-4
},
"JOD":{
"XAF":782.572,
"HKD":11.0687,
"AUD":1.63992,
"KRW":1585.68,
"JOD":1.0,
"GBP":1.06757,
"MXN":30.8336,
"AED":5.18231,
"INR":90.1236,
"XBT":2.3803244006E-5,
"JPY":156.304,
"USD":1.41112,
"ILS":5.02018,
"EUR":0.237707
},
"GBP":{
"XAF":762.826,
"HKD":10.1468,
"AUD":1.63992,
"KRW":1433.92,
"JOD":0.936707,
"GBP":1.0,
"MXN":29.242,
"AED":4.58882,
"INR":84.095,
"XBT":2.2756409956E-5,
"JPY":141.373,
"USD":1.2493,
"ILS":4.7002,
"EUR":1.16278
},
"MXN":{
"XAF":25.189,
"HKD":0.3562,
"AUD":0.0621,
"KRW":54.4512,
"JOD":0.0324,
"GBP":0.0341,
"MXN":1.0,
"AED":0.1688,
"INR":3.3513,
"XBT":8.1112586E-7,
"JPY":4.8687,
"USD":0.0459,
"ILS":0.1541,
"EUR":0.0384
},
"AED":{
"XAF":166.236,
"HKD":2.13685,
"AUD":0.346779,
"KRW":312.482,
"JOD":0.1930565,
"GBP":0.217921,
"MXN":5.9217,
"AED":1.0,
"INR":18.3255,
"XBT":4.603349217E-6,
"JPY":30.8081,
"USD":0.27225,
"ILS":0.968033,
"EUR":0.253425
},
"INR":{
"XAF":9.07101,
"HKD":0.109972,
"AUD":0.0198319,
"KRW":17.0512,
"JOD":0.0110959,
"GBP":0.0118913,
"MXN":0.2983,
"AED":0.0545671,
"INR":1.0,
"XBT":2.2689396E-7,
"JPY":1.68111,
"USD":0.0148559,
"ILS":0.0556764,
"EUR":0.0138287
},
"XBT":{
"XAF":3.4353824E7,
"HKD":460448.9,
"AUD":81168.603,
"KRW":7.0131575E7,
"JOD":41960.111,
"GBP":44188.118,
"MXN":1230503.3,
"AED":217414.47,
"INR":4407607.74,
"XBT":1.0,
"JPY":6805170.8,
"USD":59245.918,
"ILS":182981.21,
"EUR":52436.431
},
"JPY":{
"XAF":5.39585,
"HKD":0.0709891,
"AUD":0.0114819,
"KRW":10.1428,
"JOD":0.00639777,
"GBP":0.0070735,
"MXN":0.2053,
"AED":0.032459,
"INR":0.594846,
"XBT":1.47171931E-7,
"JPY":1.0,
"USD":0.00883695,
"ILS":0.0320926,
"EUR":0.00822592
},
"USD":{
"XAF":610.601,
"HKD":7.84766,
"AUD":1.27347,
"KRW":1147.78,
"JOD":0.708659,
"GBP":0.800446,
"MXN":21.748,
"AED":3.6731,
"INR":67.3135,
"XBT":1.69154E-5,
"JPY":113.161,
"USD":1.0,
"ILS":3.55495,
"EUR":0.930886
},
"ILS":{
"XAF":155.925,
"HKD":2.16985,
"AUD":0.352661,
"KRW":315.903,
"JOD":0.199196,
"GBP":0.212763,
"MXN":6.4871,
"AED":1.03302,
"INR":17.9609,
"XBT":5.452272147E-6,
"JPY":31.1599,
"USD":0.281298,
"ILS":1.0,
"EUR":1.19318
},
"EUR":{
"XAF":655.957,
"HKD":8.88926,
"AUD":1.49707,
"KRW":1233.03,
"JOD":0.838098,
"GBP":0.860011,
"MXN":26.0359,
"AED":3.94594,
"INR":72.3136,
"XBT":1.9087905636E-5,
"JPY":121.567,
"USD":1.07428,
"ILS":4.20494,
"EUR":1.0
}
}
Transaction Requests satisfy PSD2 requirements thus:
1) A transaction can be initiated by a third party application.
2) The customer is informed of the charge that will incurred.
3) The call supports delegated authentication (OAuth)
See this python code for a complete example of this flow.
There is further documentation here
Authentication is Mandatory
","operationId":"createTransactionRequestSandboxTan","parameters":[{"in":"body","name":"body","description":"TransactionRequestBodyJsonV200 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestBodyJsonV200"}},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON210"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types/SEPA/transaction-requests":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Create Transaction Request (SEPA)","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Special instructions for SEPA:
When using a SEPA Transaction Request, you specify the IBAN of a Counterparty in the body of the request.
The routing details (IBAN) of the counterparty will be forwarded to the core banking system for the transfer.
Initiate a Payment via creating a Transaction Request.
In OBP, a transaction request
may or may not result in a transaction
. However, a transaction
only has one possible state: completed.
A Transaction Request
can have one of several states: INITIATED, NEXT_CHALLENGE_PENDING etc.
Transactions
are modeled on items in a bank statement that represent the movement of money.
Transaction Requests
are requests to move money which may or may not succeed and thus result in a Transaction
.
A Transaction Request
might create a security challenge that needs to be answered before the Transaction Request
proceeds.
In case 1 person needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => COMPLETED
In case n persons needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => NEXT_CHALLENGE_PENDING => ... => NEXT_CHALLENGE_PENDING => COMPLETED
The security challenge is bound to a user i.e. in case of right answer and the user is different than expected one the challenge will fail.
Rule for calculating number of security challenges:
If product Account attribute REQUIRED_CHALLENGE_ANSWERS=N then create N challenges
(one for every user that has a View where permission "can_add_transaction_request_to_any_account"=true)
In case REQUIRED_CHALLENGE_ANSWERS is not defined as an account attribute default value is 1.
Transaction Requests contain charge information giving the client the opportunity to proceed or not (as long as the challenge level is appropriate).
Transaction Requests can have one of several Transaction Request Types which expect different bodies. The escaped body is returned in the details key of the GET response.
This provides some commonality and one URL for many different payment or transfer types with enough flexibility to validate them differently.
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL.
In sandbox mode, TRANSACTION_REQUEST_TYPE is commonly set to ACCOUNT. See getTransactionRequestTypesSupportedByBank for all supported types.
In sandbox mode, if the amount is less than 1000 EUR (any currency, unless it is set differently on this server), the transaction request will create a transaction without a challenge, else the Transaction Request will be set to INITIALISED and a challenge will need to be answered.
If a challenge is created you must answer it using Answer Transaction Request Challenge before the Transaction is created.
You can transfer between different currency accounts. (new in 2.0.0). The currency in body must match the sending account.
The following static FX rates are available in sandbox mode:
Transaction Requests satisfy PSD2 requirements thus:
1) A transaction can be initiated by a third party application.
2) The customer is informed of the charge that will incurred.
3) The call supports delegated authentication (OAuth)
See this python code for a complete example of this flow.
There is further documentation here
Authentication is Mandatory
","operationId":"createTransactionRequestSepa","parameters":[{"in":"body","name":"body","description":"TransactionRequestBodySEPAJsonV400 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestBodySEPAJsonV400"}},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types/SIMPLE/transaction-requests":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Create Transaction Request (SIMPLE)","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Special instructions for SIMPLE:
You can transfer money to the Bank Account Number or IBAN directly.
Initiate a Payment via creating a Transaction Request.
In OBP, a transaction request
may or may not result in a transaction
. However, a transaction
only has one possible state: completed.
A Transaction Request
can have one of several states: INITIATED, NEXT_CHALLENGE_PENDING etc.
Transactions
are modeled on items in a bank statement that represent the movement of money.
Transaction Requests
are requests to move money which may or may not succeed and thus result in a Transaction
.
A Transaction Request
might create a security challenge that needs to be answered before the Transaction Request
proceeds.
In case 1 person needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => COMPLETED
In case n persons needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => NEXT_CHALLENGE_PENDING => ... => NEXT_CHALLENGE_PENDING => COMPLETED
The security challenge is bound to a user i.e. in case of right answer and the user is different than expected one the challenge will fail.
Rule for calculating number of security challenges:
If product Account attribute REQUIRED_CHALLENGE_ANSWERS=N then create N challenges
(one for every user that has a View where permission "can_add_transaction_request_to_any_account"=true)
In case REQUIRED_CHALLENGE_ANSWERS is not defined as an account attribute default value is 1.
Transaction Requests contain charge information giving the client the opportunity to proceed or not (as long as the challenge level is appropriate).
Transaction Requests can have one of several Transaction Request Types which expect different bodies. The escaped body is returned in the details key of the GET response.
This provides some commonality and one URL for many different payment or transfer types with enough flexibility to validate them differently.
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL.
In sandbox mode, TRANSACTION_REQUEST_TYPE is commonly set to ACCOUNT. See getTransactionRequestTypesSupportedByBank for all supported types.
In sandbox mode, if the amount is less than 1000 EUR (any currency, unless it is set differently on this server), the transaction request will create a transaction without a challenge, else the Transaction Request will be set to INITIALISED and a challenge will need to be answered.
If a challenge is created you must answer it using Answer Transaction Request Challenge before the Transaction is created.
You can transfer between different currency accounts. (new in 2.0.0). The currency in body must match the sending account.
The following static FX rates are available in sandbox mode:
Transaction Requests satisfy PSD2 requirements thus:
1) A transaction can be initiated by a third party application.
2) The customer is informed of the charge that will incurred.
3) The call supports delegated authentication (OAuth)
See this python code for a complete example of this flow.
There is further documentation here
Authentication is Mandatory
","operationId":"createTransactionRequestSimple","parameters":[{"in":"body","name":"body","description":"TransactionRequestBodySimpleJsonV400 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestBodySimpleJsonV400"}},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-request-types/{TRANSACTION_REQUEST_TYPE}/transaction-requests/{TRANSACTION_REQUEST_ID}/challenge":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Answer Transaction Request Challenge","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"In Sandbox mode, any string that can be converted to a positive integer will be accepted as an answer.
This endpoint totally depends on createTransactionRequest, it need get the following data from createTransactionRequest response body.
1)TRANSACTION_REQUEST_TYPE
: is the same as createTransactionRequest request URL .
2)TRANSACTION_REQUEST_ID
: is the id
field in createTransactionRequest response body.
3) id
: is challenge.id
field in createTransactionRequest response body.
4) answer
: must be 123
in case that Strong Customer Authentication method for OTP challenge is dummy.
For instance: SANDBOX_TAN_OTP_INSTRUCTION_TRANSPORT=dummy
Possible values are dummy,email and sms
In kafka mode, the answer can be got by phone message or other SCA methods.
Note that each Transaction Request Type can have its own OTP_INSTRUCTION_TRANSPORT method.
OTP_INSTRUCTION_TRANSPORT methods are set in Props. See sample.props.template for instructions.
Single or Multiple authorisations
OBP allows single or multi party authorisations.
Single party authorisation:
In the case that only one person needs to authorise i.e. answer a security challenge we have the following change of state of a transaction request
:
INITIATED => COMPLETED
Multiparty authorisation:
In the case that multiple parties (n persons) need to authorise a transaction request i.e. answer security challenges, we have the followings state flow for a transaction request
:
INITIATED => NEXT_CHALLENGE_PENDING => ... => NEXT_CHALLENGE_PENDING => COMPLETED
The security challenge is bound to a user i.e. in the case of a correct answer but the user is different than expected the challenge will fail.
Rule for calculating number of security challenges:
If Product Account attribute REQUIRED_CHALLENGE_ANSWERS=N then create N challenges
(one for every user that has a View where permission "can_add_transaction_request_to_any_account"=true)
In the case REQUIRED_CHALLENGE_ANSWERS is not defined as an account attribute, the default number of security challenges created is one.
Authentication is Mandatory
","operationId":"answerTransactionRequestChallenge","parameters":[{"in":"body","name":"body","description":"ChallengeAnswerJson400 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/ChallengeAnswerJson400"}},{"in":"path","name":"TRANSACTION_REQUEST_ID","description":"The transaction request id","required":true,"type":"string"},{"in":"path","name":"TRANSACTION_REQUEST_TYPE","description":"The transaction request type","required":true,"type":"string"},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON210"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-requests":{"get":{"tags":["Transaction-Request","Payment Initiation Service (PIS)"],"summary":"Get Transaction Requests.","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Returns transaction requests for account specified by ACCOUNT_ID at bank specified by BANK_ID.
The VIEW_ID specified must be 'owner' and the user must have access to this view.
Version 2.0.0 now returns charge information.
Transaction Requests serve to initiate transactions that may or may not proceed. They contain information including:
PSD2 Context: PSD2 requires transparency of charges to the customer.
This endpoint provides the charge that would be applied if the Transaction Request proceeds - and a record of that charge there after.
The customer can proceed with the Transaction by answering the security challenge.
Authentication is Mandatory
","operationId":"getTransactionRequests","parameters":[{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSONs210"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/{VIEW_ID}/transaction-requests/{TRANSACTION_REQUEST_ID}":{"get":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Get Transaction Request.","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Returns transaction request for transaction specified by TRANSACTION_REQUEST_ID and for account specified by ACCOUNT_ID at bank specified by BANK_ID.
The VIEW_ID specified must be 'owner' and the user must have access to this view.
Version 2.0.0 now returns charge information.
Transaction Requests serve to initiate transactions that may or may not proceed. They contain information including:
PSD2 Context: PSD2 requires transparency of charges to the customer.
This endpoint provides the charge that would be applied if the Transaction Request proceeds - and a record of that charge there after.
The customer can proceed with the Transaction by answering the security challenge.
Authentication is Mandatory
","operationId":"getTransactionRequest","parameters":[{"in":"path","name":"TRANSACTION_REQUEST_ID","description":"The transaction request id","required":true,"type":"string"},{"in":"path","name":"VIEW_ID","description":"The view id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON210"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/transaction-requests/{TRANSACTION_REQUEST_ID}/attribute":{"post":{"tags":["Transaction-Request"],"summary":"Create Transaction Request Attribute","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Create Transaction Request Attribute
The type field must be one of "STRING", "INTEGER", "DOUBLE" or DATE_WITH_DAY"
Authentication is Mandatory
","operationId":"createTransactionRequestAttribute","parameters":[{"in":"body","name":"body","description":"TransactionRequestAttributeJsonV400 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestAttributeJsonV400"}},{"in":"path","name":"TRANSACTION_REQUEST_ID","description":"The transaction request id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestAttributeResponseJson"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/transaction-requests/{TRANSACTION_REQUEST_ID}/attributes":{"get":{"tags":["Transaction-Request"],"summary":"Get Transaction Request Attributes","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Get Transaction Request Attributes
Authentication is Mandatory
","operationId":"getTransactionRequestAttributes","parameters":[{"in":"path","name":"TRANSACTION_REQUEST_ID","description":"The transaction request id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestAttributesResponseJson"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/accounts/{ACCOUNT_ID}/transaction-requests/{TRANSACTION_REQUEST_ID}/attributes/ATTRIBUTE_ID":{"get":{"tags":["Transaction-Request"],"summary":"Get Transaction Request Attribute By Id","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Get Transaction Request Attribute By Id
Authentication is Mandatory
","operationId":"getTransactionRequestAttributeById","parameters":[{"in":"path","name":"TRANSACTION_REQUEST_ID","description":"The transaction request id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestAttributeResponseJson"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}},"put":{"tags":["Transaction-Request"],"summary":"Update Transaction Request Attribute","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Update Transaction Request Attribute
Authentication is Mandatory
","operationId":"updateTransactionRequestAttribute","parameters":[{"in":"body","name":"body","description":"TransactionRequestAttributeJsonV400 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestAttributeJsonV400"}},{"in":"path","name":"TRANSACTION_REQUEST_ID","description":"The transaction request id","required":true,"type":"string"},{"in":"path","name":"ACCOUNT_ID","description":"The account id","required":true,"type":"string"},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestAttributeResponseJson"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/attribute-definitions/ATTRIBUTE_DEFINITION_ID/transaction-request":{"delete":{"tags":["Transaction-Request"],"summary":"Delete Transaction Request Attribute Definition","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Delete Transaction Request Attribute Definition by ATTRIBUTE_DEFINITION_ID
Authentication is Mandatory
","operationId":"deleteTransactionRequestAttributeDefinition","parameters":[{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"204":{"description":"Success","schema":{"$ref":"#/definitions/Full"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/attribute-definitions/transaction-request":{"get":{"tags":["Transaction-Request"],"summary":"Get Transaction Request Attribute Definition","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Get Transaction Request Attribute Definition
Authentication is Mandatory
","operationId":"getTransactionRequestAttributeDefinition","parameters":[{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/AttributeDefinitionsResponseJsonV400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}},"put":{"tags":["Transaction-Request"],"summary":"Create or Update Transaction Request Attribute Definition","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Create or Update Transaction Request Attribute Definition
The category field must be TransactionRequest
The type field must be one of: DOUBLE, STRING, INTEGER and DATE_WITH_DAY
Authentication is Mandatory
","operationId":"createOrUpdateTransactionRequestAttributeDefinition","parameters":[{"in":"body","name":"body","description":"AttributeDefinitionJsonV400 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/AttributeDefinitionJsonV400"}},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/AttributeDefinitionResponseJsonV400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/management/historical/transactions":{"post":{"tags":["Transaction-Request"],"summary":"Create Historical Transactions ","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Create historical transactions at one Bank
Use this endpoint to create transactions between any two accounts at the same bank.
From account and to account must be at the same bank.
Example:
{
"from_account_id": "1ca8a7e4-6d02-48e3-a029-0b2bf89de9f0",
"to_account_id": "2ca8a7e4-6d02-48e3-a029-0b2bf89de9f0",
"value": {
"currency": "GBP",
"amount": "10"
},
"description": "this is for work",
"posted": "2017-09-19T02:31:05Z",
"completed": "2017-09-19T02:31:05Z",
"type": "SANDBOX_TAN",
"charge_policy": "SHARED"
}
This call is experimental.
Authentication is Mandatory
","operationId":"createHistoricalTransactionAtBank","parameters":[{"in":"body","name":"body","description":"PostHistoricalTransactionAtBankJson object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/PostHistoricalTransactionAtBankJson"}},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/PostHistoricalTransactionResponseJson"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorInvalidJsonFormat"}}}}},"/obp/v5.1.0/banks/{BANK_ID}/transaction-request-types":{"get":{"tags":["Transaction-Request","Bank"],"summary":"Get Transaction Request Types at Bank","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Get the list of the Transaction Request Types supported by the bank.
Authentication is Optional
","operationId":"getTransactionRequestTypesSupportedByBank","parameters":[{"in":"body","name":"body","description":"EmptyClassJson object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/EmptyClassJson"}},{"in":"path","name":"BANK_ID","description":"The bank id","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestTypesJSON"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUnknownError"}}}}},"/obp/v5.1.0/management/historical/transactions ":{"post":{"tags":["Transaction-Request"],"summary":"Save Historical Transactions ","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"Import the historical transactions.
The fields bank_id, account_id, counterparty_id in the json body are all optional ones.
It support transfer money from account to account, account to counterparty and counterparty to counterparty
Both bank_id + account_id and counterparty_id can identify the account, so OBP only need one of them to make the payment.
So:
When you need the account to account, just omit counterparty_id field.eg:
{
"from": {
"bank_id": "gh.29.uk",
"account_id": "1ca8a7e4-6d02-48e3-a029-0b2bf89de9f0",
},
"to": {
"bank_id": "gh.29.uk",
"account_id": "2ca8a7e4-6d02-48e3-a029-0b2bf89de9f0",
},
"value": {
"currency": "GBP",
"amount": "10"
},
"description": "this is for work",
"posted": "2017-09-19T02:31:05Z",
"completed": "2017-09-19T02:31:05Z",
"type": "SANDBOX_TAN",
"charge_policy": "SHARED"
}
When you need the counterparty to counterparty, need to omit bank_id and account_id field.eg:
{
"from": {
"counterparty_id": "f6392b7d-4218-45ea-b9a7-eaa71c0202f9"
},
"to": {
"counterparty_id": "26392b7d-4218-45ea-b9a7-eaa71c0202f9"
},
"value": {
"currency": "GBP",
"amount": "10"
},
"description": "this is for work",
"posted": "2017-09-19T02:31:05Z",
"completed": "2017-09-19T02:31:05Z",
"type": "SANDBOX_TAN",
"charge_policy": "SHARED"
}
or, you can counterparty to account
{
"from": {
"counterparty_id": "f6392b7d-4218-45ea-b9a7-eaa71c0202f9"
},
"to": {
"bank_id": "gh.29.uk",
"account_id": "8ca8a7e4-6d02-48e3-a029-0b2bf89de9f0",
},
"value": {
"currency": "GBP",
"amount": "10"
},
"description": "this is for work",
"posted": "2017-09-19T02:31:05Z",
"completed": "2017-09-19T02:31:05Z",
"type": "SANDBOX_TAN",
"charge_policy": "SHARED"
}
This call is experimental.
Authentication is Mandatory
","operationId":"saveHistoricalTransaction","parameters":[{"in":"body","name":"body","description":"PostHistoricalTransactionJson object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/PostHistoricalTransactionJson"}}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/PostHistoricalTransactionResponseJson"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorInvalidJsonFormat"}}}}},"/obp/v5.1.0/transaction-request-types/CARD/transaction-requests":{"post":{"tags":["Transaction-Request","Payment Initiation Service (PIS)","PSD2"],"summary":"Create Transaction Request (CARD)","security":[{"directLogin":[],"gatewayLogin":[]}],"description":"When using CARD, the payee is set in the request body .
Money goes into the Counterparty in the request body.
Initiate a Payment via creating a Transaction Request.
In OBP, a transaction request
may or may not result in a transaction
. However, a transaction
only has one possible state: completed.
A Transaction Request
can have one of several states: INITIATED, NEXT_CHALLENGE_PENDING etc.
Transactions
are modeled on items in a bank statement that represent the movement of money.
Transaction Requests
are requests to move money which may or may not succeed and thus result in a Transaction
.
A Transaction Request
might create a security challenge that needs to be answered before the Transaction Request
proceeds.
In case 1 person needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => COMPLETED
In case n persons needs to answer security challenge we have next flow of state of an transaction request
:
INITIATED => NEXT_CHALLENGE_PENDING => ... => NEXT_CHALLENGE_PENDING => COMPLETED
The security challenge is bound to a user i.e. in case of right answer and the user is different than expected one the challenge will fail.
Rule for calculating number of security challenges:
If product Account attribute REQUIRED_CHALLENGE_ANSWERS=N then create N challenges
(one for every user that has a View where permission "can_add_transaction_request_to_any_account"=true)
In case REQUIRED_CHALLENGE_ANSWERS is not defined as an account attribute default value is 1.
Transaction Requests contain charge information giving the client the opportunity to proceed or not (as long as the challenge level is appropriate).
Transaction Requests can have one of several Transaction Request Types which expect different bodies. The escaped body is returned in the details key of the GET response.
This provides some commonality and one URL for many different payment or transfer types with enough flexibility to validate them differently.
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL.
In sandbox mode, TRANSACTION_REQUEST_TYPE is commonly set to ACCOUNT. See getTransactionRequestTypesSupportedByBank for all supported types.
In sandbox mode, if the amount is less than 1000 EUR (any currency, unless it is set differently on this server), the transaction request will create a transaction without a challenge, else the Transaction Request will be set to INITIALISED and a challenge will need to be answered.
If a challenge is created you must answer it using Answer Transaction Request Challenge before the Transaction is created.
You can transfer between different currency accounts. (new in 2.0.0). The currency in body must match the sending account.
The following static FX rates are available in sandbox mode:
Transaction Requests satisfy PSD2 requirements thus:
1) A transaction can be initiated by a third party application.
2) The customer is informed of the charge that will incurred.
3) The call supports delegated authentication (OAuth)
See this python code for a complete example of this flow.
There is further documentation here
Authentication is Mandatory
","operationId":"createTransactionRequestCard","parameters":[{"in":"body","name":"body","description":"TransactionRequestBodyCardJsonV400 object that needs to be added.","required":true,"schema":{"$ref":"#/definitions/TransactionRequestBodyCardJsonV400"}}],"responses":{"201":{"description":"Success","schema":{"$ref":"#/definitions/TransactionRequestWithChargeJSON400"}},"400":{"description":"Error","schema":{"$ref":"#/definitions/ErrorUserNotLoggedIn"}}}}}},"definitions":{"ErrorInvalidJsonFormat":{"properties":{"message":{"type":"string","example":"OBP-10001: Incorrect json format."}}},"ErrorUserNotLoggedIn":{"properties":{"message":{"type":"string","example":"OBP-20001: User not logged in. Authentication is required!"}}},"ErrorUnknownError":{"properties":{"message":{"type":"string","example":"OBP-50000: Unknown Error."}}},"AttributeDefinitionResponseJsonV400":{"required":["name","is_active","description","attribute_definition_id","alias","bank_id","can_be_seen_on_views","category","type"],"properties":{"name":{"type":"string","example":"SPECIAL_TAX_NUMBER"},"is_active":{"type":"boolean","example":"true"},"description":{"type":"string","example":"description"},"attribute_definition_id":{"type":"string","example":"9ca9a7e4-6d02-40e3-a129-0b2bf89de9b1"},"alias":{"type":"string","example":"STRING"},"bank_id":{"type":"string","example":"gh.29.uk"},"can_be_seen_on_views":{"type":"array","items":{"type":"string"}},"category":{"type":"string","example":"Card"},"type":{"type":"string","example":"STRING"}}},"TransactionRequestRefundFrom":{"required":["counterparty_id"],"properties":{"counterparty_id":{"type":"string","example":"9fg8a7e4-6d02-40e3-a129-0b2bf89de8uh"}}},"TransactionRequestBodyFreeFormJSON":{"required":["value","description"],"properties":{"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"},"description":{"type":"string","example":"This is a FREE_FORM Transaction Request"}}},"AmountOfMoneyJsonV121":{"required":["currency","amount"],"properties":{"currency":{"type":"string","example":"EUR"},"amount":{"type":"string","example":"0"}}},"TransactionRequestWithChargeJSONs210":{"required":["transaction_requests_with_charges"],"properties":{"transaction_requests_with_charges":{"type":"array","items":{"$ref":"#/definitions/TransactionRequestWithChargeJSON210"}}}},"TransactionRequestTransferToAccount":{"required":["description","future_date","to","transfer_type","value"],"properties":{"description":{"type":"string","example":"String"},"future_date":{"type":"string","example":"20181230"},"to":{"$ref":"#/definitions/ToAccountTransferToAccount"},"transfer_type":{"type":"string","example":"String"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"}}},"ChallengeAnswerJson400":{"required":["id","answer"],"properties":{"id":{"type":"string","example":"This is challenge.id, you can get it from `Create Transaction Request.` response, only is useful if status ==`INITIATED` there."},"answer":{"type":"string","example":"123"},"reason_code":{"type":"string","example":"[Optional] Reason code for REJECT answer (e.g. 'CUST')"},"additional_information":{"type":"string","example":"[Optional] Additional description for REJECT answer"}}},"AttributeDefinitionJsonV400":{"required":["name","is_active","description","alias","can_be_seen_on_views","category","type"],"properties":{"name":{"type":"string","example":"SPECIAL_TAX_NUMBER"},"is_active":{"type":"boolean","example":"true"},"description":{"type":"string","example":"description"},"alias":{"type":"string","example":"STRING"},"can_be_seen_on_views":{"type":"array","items":{"type":"string"}},"category":{"type":"string","example":"TransactionRequest"},"type":{"type":"string","example":"STRING"}}},"AttributeDefinitionsResponseJsonV400":{"required":["attributes"],"properties":{"attributes":{"type":"array","items":{"$ref":"#/definitions/AttributeDefinitionResponseJsonV400"}}}},"ChallengeJsonV400":{"required":["allowed_attempts","user_id","id","link","challenge_type"],"properties":{"allowed_attempts":{"type":"integer","format":"int32","example":"3"},"user_id":{"type":"string","example":"9ca9a7e4-6d02-40e3-a129-0b2bf89de9b1"},"id":{"type":"string","example":"2fg8a7e4-6d02-40e3-a129-0b2bf89de8ub"},"link":{"type":"string","example":"/obp/v4.0.0/banks/BANK_ID/accounts/ACCOUNT_ID/VIEW_ID/transaction-request-types/TRANSACTION_REQUEST_TYPE/transaction-requests/TRANSACTION_REQUEST_ID/challenge"},"challenge_type":{"type":"string","example":"OBP_TRANSACTION_REQUEST_CHALLENGE"}}},"TransactionRequestTypeJsonV140":{"required":["value","charge"],"properties":{"value":{"type":"string","example":"10"},"charge":{"$ref":"#/definitions/TransactionRequestChargeJsonV140"}}},"CounterpartyIdJson":{"required":["counterparty_id"],"properties":{"counterparty_id":{"type":"string","example":"9fg8a7e4-6d02-40e3-a129-0b2bf89de8uh"}}},"TransactionRequestRefundTo":{"properties":{"bank_id":{"type":"string","example":"gh.29.uk"},"account_id":{"type":"string","example":"8ca8a7e4-6d02-40e3-a129-0b2bf89de9f0"},"counterparty_id":{"type":"string","example":"9fg8a7e4-6d02-40e3-a129-0b2bf89de8uh"}}},"TransactionRequestChargeJsonV140":{"required":["summary","value"],"properties":{"summary":{"type":"string","example":"The bank fixed charge"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"}}},"AmountOfMoney":{"required":["currency","amount"],"properties":{"currency":{"type":"string","example":"EUR"},"amount":{"type":"string","example":"100"}}},"TransactionRequestAttributesResponseJson":{"required":["transaction_request_attributes"],"properties":{"transaction_request_attributes":{"type":"array","items":{"$ref":"#/definitions/TransactionRequestAttributeResponseJson"}}}},"TransactionRequestBodyJsonV200":{"required":["to","value","description"],"properties":{"to":{"$ref":"#/definitions/TransactionRequestAccountJsonV140"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"},"description":{"type":"string","example":"this is for work"}}},"IbanJson":{"required":["iban"],"properties":{"iban":{"type":"string","example":"123"}}},"TransactionRequestChargeJsonV200":{"required":["summary","value"],"properties":{"summary":{"type":"string","example":"Rent the flat"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"}}},"TransactionRequestTypeJSONV210":{"required":["transaction_request_type"],"properties":{"transaction_request_type":{"type":"string","example":"SandboxTan"}}},"HistoricalTransactionAccountJsonV310":{"properties":{"bank_id":{"type":"string","example":"gh.29.uk"},"account_id":{"type":"string","example":"8ca8a7e4-6d02-40e3-a129-0b2bf89de9f0"},"counterparty_id":{"type":"string","example":"9fg8a7e4-6d02-40e3-a129-0b2bf89de8uh"}}},"TransactionRequestBodyAllTypes":{"required":["description","value"],"properties":{"to_transfer_to_phone":{"$ref":"#/definitions/TransactionRequestTransferToPhone"},"description":{"type":"string","example":"This an optional field. Maximum length is 2000. It can be any characters here."},"to_transfer_to_atm":{"$ref":"#/definitions/TransactionRequestTransferToAtm"},"to_counterparty":{"$ref":"#/definitions/TransactionRequestCounterpartyId"},"to_sepa_credit_transfers":{"$ref":"#/definitions/SepaCreditTransfers"},"to_simple":{"$ref":"#/definitions/TransactionRequestSimple"},"to_sepa":{"$ref":"#/definitions/TransactionRequestIban"},"to_transfer_to_account":{"$ref":"#/definitions/TransactionRequestTransferToAccount"},"value":{"$ref":"#/definitions/AmountOfMoney"},"to_sandbox_tan":{"$ref":"#/definitions/TransactionRequestAccount"}}},"TransactionRequestTypesJsonV140":{"required":["transaction_request_types"],"properties":{"transaction_request_types":{"type":"array","items":{"$ref":"#/definitions/TransactionRequestTypeJsonV140"}}}},"TransactionRequestBodyCardJsonV400":{"required":["card","to","value","description"],"properties":{"card":{"$ref":"#/definitions/CardJsonV400"},"to":{"$ref":"#/definitions/CounterpartyIdJson"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"},"description":{"type":"string","example":"A card payment description. "}}},"PostHistoricalTransactionJson":{"required":["description","to","completed","charge_policy","from","type","value","posted"],"properties":{"description":{"type":"string","example":"this is for work"},"to":{"$ref":"#/definitions/HistoricalTransactionAccountJsonV310"},"completed":{"type":"string","example":"1100-01-01T01:01:01Z"},"charge_policy":{"type":"string","example":"SHARED"},"from":{"$ref":"#/definitions/HistoricalTransactionAccountJsonV310"},"type":{"type":"string","example":"SANDBOX_TAN"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"},"posted":{"type":"string","example":"1100-01-01T01:01:01Z"}}},"TransactionRequestAccountJsonV140":{"required":["bank_id","account_id"],"properties":{"bank_id":{"type":"string","example":"gh.29.uk"},"account_id":{"type":"string","example":"8ca8a7e4-6d02-40e3-a129-0b2bf89de9f0"}}},"TransactionRequestAttributeJsonV400":{"required":["name","type","value"],"properties":{"name":{"type":"string","example":"HOUSE_RENT"},"type":{"type":"string","example":"DATE_WITH_DAY"},"value":{"type":"string","example":"123456789"}}},"TransactionRequestBodyRefundJsonV400":{"required":["description","refund","value"],"properties":{"description":{"type":"string","example":"A refund description. "},"refund":{"$ref":"#/definitions/RefundJson"},"to":{"$ref":"#/definitions/TransactionRequestRefundTo"},"from":{"$ref":"#/definitions/TransactionRequestRefundFrom"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"}}},"ToAccountTransferToAtmKycDocument":{"required":["type","number"],"properties":{"type":{"type":"string","example":"String"},"number":{"type":"string","example":"String"}}},"TransactionRequestWithChargeJSON400":{"required":["start_date","id","end_date","status","from","details","charge","type","transaction_ids","challenges"],"properties":{"start_date":{"type":"string","format":"date","example":"1100-01-01T00:00:00Z"},"id":{"type":"string","example":"4050046c-63b3-4868-8a22-14b4181d33a6"},"end_date":{"type":"string","format":"date","example":"1100-01-01T00:00:00Z"},"status":{"type":"string","example":"COMPLETED"},"from":{"$ref":"#/definitions/TransactionRequestAccountJsonV140"},"details":{"$ref":"#/definitions/TransactionRequestBodyAllTypes"},"charge":{"$ref":"#/definitions/TransactionRequestChargeJsonV200"},"type":{"type":"string","example":"SANDBOX_TAN"},"transaction_ids":{"type":"array","items":{"type":"string"}},"challenges":{"type":"array","items":{"$ref":"#/definitions/ChallengeJsonV400"}}}},"PostSimpleCounterpartyJson400":{"required":["other_account_routing_address","other_account_routing_scheme","name","other_account_secondary_routing_address","description","other_branch_routing_address","other_bank_routing_scheme","other_branch_routing_scheme","other_bank_routing_address","other_account_secondary_routing_scheme"],"properties":{"other_account_routing_address":{"type":"string","example":"36f8a9e6-c2b1-407a-8bd0-421b7119307e"},"other_account_routing_scheme":{"type":"string","example":"OBP"},"name":{"type":"string","example":"John Smith Ltd."},"other_account_secondary_routing_address":{"type":"string","example":"DE89370400440532013000"},"description":{"type":"string","example":"The piano lession-Invoice No:68"},"other_branch_routing_address":{"type":"string","example":"12f8a9e6-c2b1-407a-8bd0-421b7119307e"},"other_bank_routing_scheme":{"type":"string","example":"OBP"},"other_branch_routing_scheme":{"type":"string","example":"OBP"},"other_bank_routing_address":{"type":"string","example":"gh.29.uk"},"other_account_secondary_routing_scheme":{"type":"string","example":"IBAN"}}},"TransactionRequestIban":{"required":["iban"],"properties":{"iban":{"type":"string","example":"String"}}},"TransactionRequestSimple":{"required":["otherAccountSecondaryRoutingAddress","otherBankRoutingScheme","otherBranchRoutingScheme","otherAccountRoutingScheme","otherBankRoutingAddress","otherAccountRoutingAddress","otherAccountSecondaryRoutingScheme","otherBranchRoutingAddress"],"properties":{"otherAccountSecondaryRoutingAddress":{"type":"string","example":"DE91 1000 0000 0123 4567 89"},"otherBankRoutingScheme":{"type":"string","example":"BIC"},"otherBranchRoutingScheme":{"type":"string","example":"BRANCH-CODE"},"otherAccountRoutingScheme":{"type":"string","example":"IBAN"},"otherBankRoutingAddress":{"type":"string","example":"GENODEM1GLS"},"otherAccountRoutingAddress":{"type":"string","example":"DE91 1000 0000 0123 4567 89"},"otherAccountSecondaryRoutingScheme":{"type":"string","example":"IBAN"},"otherBranchRoutingAddress":{"type":"string","example":"DERBY6"}}},"TransactionRequestAttributeResponseJson":{"required":["transaction_request_attribute_id","name","type","value"],"properties":{"transaction_request_attribute_id":{"type":"string","example":"7uy8a7e4-6d02-40e3-a129-0b2bf89de8uh"},"name":{"type":"string","example":"HOUSE_RENT"},"type":{"type":"string","example":"DATE_WITH_DAY"},"value":{"type":"string","example":"123456789"}}},"TransactionRequestAccount":{"required":["bank_id","account_id"],"properties":{"bank_id":{"type":"string","example":"String"},"account_id":{"type":"string","example":"String"}}},"CardJsonV400":{"required":["expiry_year","cvv","expiry_month","brand","card_number","name_on_card","card_type"],"properties":{"expiry_year":{"type":"string","example":"2023"},"cvv":{"type":"string","example":"123"},"expiry_month":{"type":"string","example":"01"},"brand":{"type":"string","example":"Visa"},"card_number":{"type":"string","example":"364435172576215"},"name_on_card":{"type":"string","example":"SusanSmith"},"card_type":{"type":"string","example":"Credit"}}},"PostHistoricalTransactionResponseJson":{"required":["description","to","transaction_id","transaction_request_type","completed","charge_policy","from","value","posted"],"properties":{"description":{"type":"string","example":"this is for work"},"to":{"$ref":"#/definitions/HistoricalTransactionAccountJsonV310"},"transaction_id":{"type":"string","example":"2fg8a7e4-6d02-40e3-a129-0b2bf89de8ub"},"transaction_request_type":{"type":"string","example":"SANDBOX_TAN"},"completed":{"type":"string","format":"date","example":"1100-01-01T01:01:01Z"},"charge_policy":{"type":"string","example":"SHARED"},"from":{"$ref":"#/definitions/HistoricalTransactionAccountJsonV310"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"},"posted":{"type":"string","format":"date","example":"1100-01-01T01:01:01Z"}}},"TransactionRequestBodyCounterpartyJSON":{"required":["description","to","charge_policy","value"],"properties":{"description":{"type":"string","example":"A description for the transaction to the counterparty"},"future_date":{"type":"string","example":"20200127"},"to":{"$ref":"#/definitions/CounterpartyIdJson"},"charge_policy":{"type":"string","example":"SHARED"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"}}},"TransactionRequestCounterpartyId":{"required":["counterparty_id"],"properties":{"counterparty_id":{"type":"string","example":"9fg8a7e4-6d02-40e3-a129-0b2bf89de8uh"}}},"ToAccountTransferToAtm":{"required":["legal_name","date_of_birth","mobile_phone_number","kyc_document"],"properties":{"legal_name":{"type":"string","example":"Eveline Tripman"},"date_of_birth":{"type":"string","example":"20181230"},"mobile_phone_number":{"type":"string","example":"+44 07972 444 876"},"kyc_document":{"$ref":"#/definitions/ToAccountTransferToAtmKycDocument"}}},"TransactionRequestBodySEPAJsonV400":{"required":["description","to","charge_policy","value"],"properties":{"description":{"type":"string","example":"This is a SEPA Transaction Request"},"future_date":{"type":"string","example":"20200127"},"to":{"$ref":"#/definitions/IbanJson"},"charge_policy":{"type":"string","example":"SHARED"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"},"reasons":{"type":"array","items":{"$ref":"#/definitions/TransactionRequestReasonJsonV400"}}}},"ChallengeJsonV140":{"required":["id","allowed_attempts","challenge_type"],"properties":{"id":{"type":"string","example":"be1a183d-b301-4b83-b855-5eeffdd3526f"},"allowed_attempts":{"type":"integer","format":"int32","example":"3"},"challenge_type":{"type":"string","example":"SANDBOX_TAN"}}},"TransactionRequestTransferToAtm":{"required":["description","to","from","message","value"],"properties":{"description":{"type":"string","example":"String"},"to":{"$ref":"#/definitions/ToAccountTransferToAtm"},"from":{"$ref":"#/definitions/FromAccountTransfer"},"message":{"type":"string","example":"String"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"}}},"SepaCreditTransfers":{"required":["debtorAccount","instructedAmount","creditorAccount","creditorName"],"properties":{"debtorAccount":{"$ref":"#/definitions/PaymentAccount"},"instructedAmount":{"$ref":"#/definitions/AmountOfMoneyJsonV121"},"creditorAccount":{"$ref":"#/definitions/PaymentAccount"},"creditorName":{"type":"string","example":"John Miles"}}},"ToAccountTransferToAccount":{"required":["name","bank_code","branch_number","account"],"properties":{"name":{"type":"string","example":"String"},"bank_code":{"type":"string","example":"String"},"branch_number":{"type":"string","example":"String"},"account":{"$ref":"#/definitions/ToAccountTransferToAccountAccount"}}},"ToAccountTransferToAccountAccount":{"required":["number","iban"],"properties":{"number":{"type":"string","example":"String"},"iban":{"type":"string","example":"String"}}},"ToAccountTransferToPhone":{"required":["mobile_phone_number"],"properties":{"mobile_phone_number":{"type":"string","example":"+44 07972 444 876"}}},"TransactionRequestTypesJSON":{"required":["transaction_request_types"],"properties":{"transaction_request_types":{"type":"array","items":{"$ref":"#/definitions/TransactionRequestTypeJSONV210"}}}},"FromAccountTransfer":{"required":["mobile_phone_number","nickname"],"properties":{"mobile_phone_number":{"type":"string","example":"+44 07972 444 876"},"nickname":{"type":"string","example":"String"}}},"TransactionRequestBodySimpleJsonV400":{"required":["description","to","charge_policy","value"],"properties":{"description":{"type":"string","example":"This an optional field. Maximum length is 2000. It can be any characters here."},"future_date":{"type":"string","example":"20200127"},"to":{"$ref":"#/definitions/PostSimpleCounterpartyJson400"},"charge_policy":{"type":"string","example":"SHARED"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"}}},"TransactionRequestTransferToPhone":{"required":["description","to","from","message","value"],"properties":{"description":{"type":"string","example":"String"},"to":{"$ref":"#/definitions/ToAccountTransferToPhone"},"from":{"$ref":"#/definitions/FromAccountTransfer"},"message":{"type":"string","example":"String"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"}}},"TransactionRequestWithChargeJSON210":{"required":["challenge","start_date","id","end_date","status","from","details","charge","type","transaction_ids"],"properties":{"challenge":{"$ref":"#/definitions/ChallengeJsonV140"},"start_date":{"type":"string","format":"date","example":"1100-01-01T00:00:00Z"},"id":{"type":"string","example":"4050046c-63b3-4868-8a22-14b4181d33a6"},"end_date":{"type":"string","format":"date","example":"1100-01-01T00:00:00Z"},"status":{"type":"string","example":"COMPLETED"},"from":{"$ref":"#/definitions/TransactionRequestAccountJsonV140"},"details":{"$ref":"#/definitions/TransactionRequestBodyAllTypes"},"charge":{"$ref":"#/definitions/TransactionRequestChargeJsonV200"},"type":{"type":"string","example":"SANDBOX_TAN"},"transaction_ids":{"type":"array","items":{"type":"string"}}}},"PostHistoricalTransactionAtBankJson":{"required":["description","to_account_id","completed","charge_policy","from_account_id","type","value","posted"],"properties":{"description":{"type":"string","example":"this is for work"},"to_account_id":{"type":"string","example":""},"completed":{"type":"string","example":"1100-01-01T01:01:01Z"},"charge_policy":{"type":"string","example":"SHARED"},"from_account_id":{"type":"string","example":""},"type":{"type":"string","example":"SANDBOX_TAN"},"value":{"$ref":"#/definitions/AmountOfMoneyJsonV121"},"posted":{"type":"string","example":"1100-01-01T01:01:01Z"}}},"PaymentAccount":{"required":["iban"],"properties":{"iban":{"type":"string","example":"GB33BUKB20201555555555"}}},"RefundJson":{"required":["transaction_id","reason_code"],"properties":{"transaction_id":{"type":"string","example":"2fg8a7e4-6d02-40e3-a129-0b2bf89de8ub"},"reason_code":{"type":"string","example":"CUST"}}},"TransactionRequestReasonJsonV400":{"required":["code"],"properties":{"description":{"type":"string","example":"SEPA payment"},"amount":{"type":"string","example":"100"},"code":{"type":"string","example":"410"},"document_number":{"type":"string","example":"2020/154"},"currency":{"type":"string","example":"EUR"}}},"EmptyClassJson":{"required":["jsonString"],"properties":{"jsonString":{"type":"string","example":"{}"}}},"Full":{"required":["value"],"properties":{"value":{"type":"boolean","example":"true"}}}}}