A core set of customer facing APIs built on core banking services and bank open data.
-
API
-
Account
-
Bank
-
Branch
-
Counterparty
-
Transaction
-
TransactionRequest
UK Open Banking APIs v2.0.0 (all tags) (16)
Bank
Accounts
Counterparties
Transactions
The root of the API
Returns information about:
- API version
- Hosted by information
- Git Commit
{
"version":"String",
"version_status":"String",
"git_commit":"String",
"connector":"String",
"hosted_by":{
"organisation":"String",
"email":"String",
"phone":"String"
},
"akka":{
"remote_data_secret_matched":true
}
}
- OBP-50000: Unknown Error.
- no connector set
Get Accounts at Bank (Private)
Get private accounts at one bank (Authenticated access). Returns the list of accounts containing private views for the user at BANK_ID. For each account the API returns the ID and label. To also see the list of Views, see privateAccountsAtOneBank
This call MAY have an alias /bank/accounts but ONLY if defaultBank is set in Props
Authentication is Mandatory
This endpoint works with firehose.
{
"accounts":[{
"id":"8ca8a7e4-6d02-48e3-a029-0b2bf89de9f0",
"label":"NoneLabel",
"bank_id":"gh.29.uk",
"_links":{
}
}]
}
- OBP-20001: User not logged in. Authentication is required!
- OBP-50000: Unknown Error.
Get Accounts at all Banks (Private)
Get private accounts at all banks (Authenticated access) Returns the list of accounts containing private views for the user at all banks. For each account the API returns the ID and the available views.
Authentication is Mandatory
This endpoint works with firehose.
{
"accounts":[{
"id":"8ca8a7e4-6d02-48e3-a029-0b2bf89de9f0",
"label":"NoneLabel",
"bank_id":"gh.29.uk",
"_links":{
}
}]
}
- OBP-50000: Unknown Error.
Get private accounts at one bank.
Returns the list of private accounts at BANK_ID that the user has access to. For each account the API returns the ID and the available views.
If you want to see more information on the Views, use the Account Detail call. If you want less information about the account, use the /my accounts call
Authentication is Mandatory
This endpoint works with firehose.
{
"accounts":[{
"id":"8ca8a7e4-6d02-48e3-a029-0b2bf89de9f0",
"label":"NoneLabel",
"bank_id":"gh.29.uk",
"views_available":[{
"id":"1",
"short_name":"HHH",
"is_public":true
}]
}]
}
- OBP-20001: User not logged in. Authentication is required!
- OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
- OBP-50000: Unknown Error.
Get Bank
Get the bank specified by BANK_ID Returns information about a single bank specified by BANK_ID including:
- Short and full name of bank
- Logo URL
- Website
{
"id":"gh.29.uk",
"short_name":"short_name ",
"full_name":"full_name",
"logo":"logo",
"website":"www.openbankproject.com",
"bank_routing":{
"scheme":"Bank_ID",
"address":"gh.29.uk"
}
}
- OBP-20001: User not logged in. Authentication is required!
- OBP-50000: Unknown Error.
- OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
Get Bank ATMS
Returns information about ATMs for a single bank specified by BANK_ID including:
- Address
- Geo Location
- License the data under this endpoint is released under
Pagination:| By default, 100 records are returned.
You can use the url query parameters limit and offset for pagination
Authentication is Optional
{
"atms":[{
"id":"String",
"name":"String",
"address":{
"line_1":"Osloer Straße 16/17",
"line_2":"Wedding",
"line_3":"",
"city":"Berlin",
"state":"Berlin Brandenburg",
"postcode":"13359",
"country":"DE"
},
"location":{
"latitude":11.45,
"longitude":11.45
},
"meta":{
"license":{
"id":"5",
"name":"TESOBE"
}
}
}]
}
- OBP-20001: User not logged in. Authentication is required!
- OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
- No ATMs available. License may not be set.
- OBP-50000: Unknown Error.
Get Bank Products
Returns information about the financial products offered by a bank specified by BANK_ID including:
- Name
- Code
- Category
- Family
- Super Family
- More info URL
- Description
- Terms and Conditions
- License the data under this endpoint is released under Authentication is Optional
{
"products":[{
"code":"String",
"name":"String",
"category":"String",
"family":"String",
"super_family":"String",
"more_info_url":"String",
"meta":{
"license":{
"id":"5",
"name":"TESOBE"
}
}
}]
}
- OBP-20001: User not logged in. Authentication is required!
- OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
- No products available.
- License may not be set.
- OBP-50000: Unknown Error.
Get Banks
Get banks on this API instance Returns a list of banks supported on this server:
- ID used as parameter in URLs
- Short and full name of bank
- Logo URL
- Website
{
"banks":[{
"id":"gh.29.uk",
"short_name":"short_name ",
"full_name":"full_name",
"logo":"logo",
"website":"www.openbankproject.com",
"bank_routing":{
"scheme":"Bank_ID",
"address":"gh.29.uk"
}
}]
}
- OBP-50000: Unknown Error.
Get Bank Branches
Returns information about branches for a single bank specified by BANK_ID including:
- Name
- Address
- Geo Location
- License the data under this endpoint is released under
Pagination:| By default, 100 records are returned.
You can use the url query parameters limit and offset for pagination
Authentication is Optional
{
"branches":[{
"id":"String",
"name":"String",
"address":{
"line_1":"Osloer Straße 16/17",
"line_2":"Wedding",
"line_3":"",
"city":"Berlin",
"state":"Berlin Brandenburg",
"postcode":"13359",
"country":"DE"
},
"location":{
"latitude":11.45,
"longitude":11.45
},
"lobby":{
"hours":"5"
},
"drive_up":{
"hours":"5"
},
"meta":{
"license":{
"id":"5",
"name":"TESOBE"
}
},
"branch_routing":{
"scheme":"String",
"address":"String"
}
}]
}
- OBP-20001: User not logged in. Authentication is required!
- OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
- No branches available. License may not be set.
- OBP-50000: Unknown Error.
Get Other Account by Id.
Returns data about the Other Account that has shared at least one transaction with ACCOUNT_ID at BANK_ID. Authentication is Optional Authentication is required if the view is not public.
{
"id":"5995d6a2-01b3-423c-a173-5481df49bdaf",
"holder":{
"name":"OBP",
"is_alias":true
},
"number":"123",
"kind":"3456",
"iban":"UK234DB",
"swift_bic":"UK12321DB",
"bank":{
"national_identifier":"OBP",
"name":"OBP"
},
"metadata":{
"public_alias":"NONE",
"private_alias":"NONE",
"more_info":"www.openbankproject.com",
"url":"www.openbankproject.com",
"image_url":"www.openbankproject.com",
"open_corporates_url":"www.openbankproject.com",
"corporate_location":{
"latitude":1.231,
"longitude":1.231,
"date":"2013-01-22T00:08:00Z",
"user":{
"id":"5995d6a2-01b3-423c-a173-5481df49bdaf",
"provider":"OBP",
"display_name":"OBP"
}
},
"physical_location":{
"latitude":1.231,
"longitude":1.231,
"date":"2013-01-22T00:08:00Z",
"user":{
"id":"5995d6a2-01b3-423c-a173-5481df49bdaf",
"provider":"OBP",
"display_name":"OBP"
}
}
}
}
- OBP-30018: Bank Account not found. Please specify valid values for BANK_ID and ACCOUNT_ID.
- OBP-50000: Unknown Error.
Get Other Accounts of one Account.
Returns data about all the other accounts that have shared at least one transaction with the ACCOUNT_ID at BANK_ID. Authentication is Optional Authentication is required if the view VIEW_ID is not public.
{
"other_accounts":[{
"id":"5995d6a2-01b3-423c-a173-5481df49bdaf",
"holder":{
"name":"OBP",
"is_alias":true
},
"number":"123",
"kind":"3456",
"iban":"UK234DB",
"swift_bic":"UK12321DB",
"bank":{
"national_identifier":"OBP",
"name":"OBP"
},
"metadata":{
"public_alias":"NONE",
"private_alias":"NONE",
"more_info":"www.openbankproject.com",
"url":"www.openbankproject.com",
"image_url":"www.openbankproject.com",
"open_corporates_url":"www.openbankproject.com",
"corporate_location":{
"latitude":1.231,
"longitude":1.231,
"date":"2013-01-22T00:08:00Z",
"user":{
"id":"5995d6a2-01b3-423c-a173-5481df49bdaf",
"provider":"OBP",
"display_name":"OBP"
}
},
"physical_location":{
"latitude":1.231,
"longitude":1.231,
"date":"2013-01-22T00:08:00Z",
"user":{
"id":"5995d6a2-01b3-423c-a173-5481df49bdaf",
"provider":"OBP",
"display_name":"OBP"
}
}
}
}]
}
- OBP-30018: Bank Account not found. Please specify valid values for BANK_ID and ACCOUNT_ID.
- OBP-50000: Unknown Error.
Get Transactions for Account (Core)
Returns transactions list (Core info) of the account specified by ACCOUNT_ID.
Authentication is required.
Possible custom headers for pagination:
- obp_sort_by=CRITERIA ==> default value: "completed" field
- obp_sort_direction=ASC/DESC ==> default value: DESC
- obp_limit=NUMBER ==> default value: 50
- obp_offset=NUMBER ==> default value: 0
- obp_from_date=DATE => default value: date of the oldest transaction registered (format below)
- obp_to_date=DATE => default value: date of the newest transaction registered (format below)
Date format parameter: "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" (2014-07-01T00:00:00.000Z) ==> time zone is UTC.
{
"transactions":[{
"id":"123",
"account":{
"id":"5995d6a2-01b3-423c-a173-5481df49bdaf",
"holders":[{
"name":"OBP",
"is_alias":true
}],
"number":"123",
"kind":"AC",
"iban":"UK1234AD",
"swift_bic":"UK1234AD",
"bank":{
"national_identifier":"OBP",
"name":"OBP"
}
},
"counterparty":{
"id":"123",
"holder":{
"name":"ZACK"
},
"number":"1234",
"kind":"AV",
"iban":"UK12344DB",
"swift_bic":"UK12344DB",
"bank":{
"national_identifier":"OBP",
"name":"OBP"
}
},
"details":{
"type":"AC",
"description":"OBP",
"posted":"2013-01-22T00:08:00Z",
"completed":"2013-01-22T00:08:00Z",
"new_balance":{
"currency":"EUR",
"amount":"10"
},
"value":{
"currency":"EUR",
"amount":"10"
}
}
}]
}
- OBP-30018: Bank Account not found. Please specify valid values for BANK_ID and ACCOUNT_ID.
- OBP-50000: Unknown Error.
Answer Transaction Request Challenge.
In Sandbox mode, any string that can be converted to a positive integer will be accepted as an answer.
This endpoint works with firehose.
{
"id":"82f92531-9c63-4246-abfc-96c20ec46188",
"type":"SANDBOX_TAN",
"from":{
"bank_id":"gh.29.uk",
"account_id":"8ca8a7e4-6d02-48e3-a029-0b2bf89de9f0"
},
"details":{
},
"transaction_ids":"666666-9c63-4246-abfc-96c20ec46188",
"status":"COMPLETED",
"start_date":"2013-01-22T00:08:00Z",
"end_date":"2013-01-22T00:08:00Z",
"challenge":{
"id":"be1a183d-b301-4b83-b855-5eeffdd3526f",
"allowed_attempts":3,
"challenge_type":"SANDBOX_TAN"
},
"charge":{
"summary":"Good",
"value":{
"currency":"EUR",
"amount":"10"
}
}
}
- OBP-20001: User not logged in. Authentication is required!
- OBP-30110: Invalid Account Id. The ACCOUNT_ID should only contain 0-9/a-z/A-Z/'-'/'.'/'_', the length should be smaller than 255.
- OBP-30111: Invalid Bank Id. The BANK_ID should only contain 0-9/a-z/A-Z/'-'/'.'/'_', the length should be smaller than 255.
- OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
- OBP-20017: Current user does not have access to the view. Please specify a valid value for VIEW_ID.
- OBP-10001: Incorrect json format.
- OBP-40004: Transaction Request Id not found.
- OBP-40009: The TRANSACTION_REQUEST_TYPE has changed.
- OBP-40010: Invalid Challenge Id. Please specify a valid value for CHALLENGE_ID.
- OBP-40011: Transaction Request Status is not INITIATED.
- OBP-00003: Transaction Requests is disabled in this API instance.
- OBP-50000: Unknown Error.
Create Transaction Request.
Initiate a Payment via a Transaction Request.
This is the preferred method to create a payment and supersedes makePayment in 1.2.1.
PSD2 Context: Third party access access to payments is a core tenent of PSD2.
This call satisfies that requirement from several perspectives:
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 uses delegated authentication (OAuth)
See this python code for a complete example of this flow.
In sandbox mode, if the amount is less than 100 (any currency), 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.
Currently TRANSACTION_REQUEST_TYPE must be set to SANDBOX_TAN
The following static FX rates are available in sandbox mode:
{ "XAF":{ "AUD":1.0, "KRW":1.87975, "JOD":1.0, "GBP":0.00131092, "AED":0.00601555, "INR":0.110241, "JPY":0.185328, "USD":0.00163773, "EUR":0.00152449 }, "AUD":{ "XAF":762.826, "KRW":1433.92, "JOD":1.0, "AED":4.58882, "INR":84.095, "JPY":141.373, "USD":0.79, "EUR":0.67 }, "KRW":{ "XAF":0.531986, "AUD":1.0, "JOD":1.0, "GBP":6.97389E-4, "AED":0.00320019, "INR":0.0586469, "JPY":0.0985917, "USD":8.7125E-4, "EUR":8.11008E-4 }, "JOD":{ "XAF":1.0, "AUD":1.0, "KRW":1.0, "GBP":1.0, "AED":1.0, "INR":1.0, "JPY":1.0, "USD":1.0, "EUR":1.0 }, "GBP":{ "XAF":762.826, "AUD":1.0, "KRW":1433.92, "JOD":1.0, "AED":4.58882, "INR":84.095, "JPY":141.373, "USD":1.2493, "EUR":1.16278 }, "AED":{ "XAF":166.236, "AUD":1.0, "KRW":312.482, "GBP":0.217921, "AED":1.0, "INR":18.3255, "JPY":30.8081, "USD":0.27225, "EUR":0.253425 }, "INR":{ "XAF":9.07101, "AUD":1.0, "KRW":17.0512, "JOD":1.0, "GBP":0.0118913, "AED":0.0545671, "JPY":1.68111, "USD":0.0148559, "EUR":0.0138287 }, "JPY":{ "XAF":5.39585, "AUD":1.0, "KRW":10.1428, "JOD":1.0, "GBP":0.0070735, "AED":0.032459, "INR":0.594846, "USD":0.00883695, "EUR":0.00822592 }, "USD":{ "XAF":610.601, "AUD":1.0, "KRW":1147.78, "JOD":1.0, "GBP":0.800446, "AED":3.6731, "INR":67.3135, "JPY":113.161, "EUR":0.930886 }, "EUR":{ "XAF":655.957, "AUD":1.0, "KRW":1233.03, "JOD":1.0, "GBP":0.860011, "AED":3.94594, "INR":72.3136, "JPY":121.567, "USD":1.07428 } }
The payer is set in the URL. Money comes out of the BANK_ID and ACCOUNT_ID specified in the URL
The payee is set in the request body. Money goes into the BANK_ID and ACCOUNT_IDO specified in the request body.
Authentication is Mandatory
This endpoint works with firehose.
{
}
-
CanCreateAnyTransactionRequest
- Please login to request this Role
- OBP-20001: User not logged in. Authentication is required!
- OBP-10001: Incorrect json format.
- OBP-30111: Invalid Bank Id. The BANK_ID should only contain 0-9/a-z/A-Z/'-'/'.'/'_', the length should be smaller than 255.
- OBP-30110: Invalid Account Id. The ACCOUNT_ID should only contain 0-9/a-z/A-Z/'-'/'.'/'_', the length should be smaller than 255.
- OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
- OBP-30003: Account not found. Please specify a valid value for ACCOUNT_ID.
- OBP-30005: View not found for Account. Please specify a valid value for VIEW_ID
- OBP-20017: Current user does not have access to the view. Please specify a valid value for VIEW_ID.
- OBP-40002: Insufficient authorisation to create TransactionRequest. The Transaction Request could not be created because you don't have access to the owner view of the from account or you don't have access to canCreateAnyTransactionRequest.
- OBP-30004: Counterparty not found. The BANK_ID / ACCOUNT_ID specified does not exist on this server.
- OBP-40001: Invalid value for TRANSACTION_REQUEST_TYPE
- OBP-40003: Transaction Request Currency must be the same as From Account Currency.
- OBP-00003: Transaction Requests is disabled in this API instance.
- OBP-50000: Unknown Error.
Get Transaction Request Types for Account
Returns the Transation 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:
- the required Transaction Request 'body' i.e. fields that define the 'what' and 'to' of a Transaction Request,
- the type of security challenge that may be be raised before the Transaction Request proceeds, and
- the threshold of that challenge.
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.
This endpoint works with firehose
{
"transaction_request_types":[{
"value":"10",
"charge":{
"summary":"Good",
"value":{
"currency":"EUR",
"amount":"10"
}
}
}]
}
- OBP-20001: User not logged in. Authentication is required!
- OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
- OBP-30003: Account not found. Please specify a valid value for ACCOUNT_ID.
- Please specify a valid value for CURRENCY of your Bank Account.
- Current user does not have access to the view
- account not found at bank
- user does not have access to owner view
- Sorry, Transaction Requests are not enabled in this API instance.
- OBP-50000: Unknown Error.
Get Transaction Requests.
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:
- Transaction Request Id
- Type
- Status (INITIATED, COMPLETED)
- Challenge (in order to confirm the request)
- From Bank / Account
- Body including To Account, Currency, Value, Description and other initiation information. (Could potentialy include a list of future transactions.)
- Related Transactions
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.
This endpoint works with firehose.
{
"transaction_requests_with_charges":[{
"id":"82f92531-9c63-4246-abfc-96c20ec46188",
"type":"SANDBOX_TAN",
"from":{
"bank_id":"gh.29.uk",
"account_id":"8ca8a7e4-6d02-48e3-a029-0b2bf89de9f0"
},
"details":{
},
"transaction_ids":"666666-9c63-4246-abfc-96c20ec46188",
"status":"COMPLETED",
"start_date":"2013-01-22T00:08:00Z",
"end_date":"2013-01-22T00:08:00Z",
"challenge":{
"id":"be1a183d-b301-4b83-b855-5eeffdd3526f",
"allowed_attempts":3,
"challenge_type":"SANDBOX_TAN"
},
"charge":{
"summary":"Good",
"value":{
"currency":"EUR",
"amount":"10"
}
}
}]
}
- OBP-20001: User not logged in. Authentication is required!
- OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
- OBP-30003: Account not found. Please specify a valid value for ACCOUNT_ID.
- OBP-20017: Current user does not have access to the view. Please specify a valid value for VIEW_ID.
- OBP-50000: Unknown Error.