Bank feeds API
Less than to read
This guide will walk you through the development requirements for a product integrating directly with bank feeds through the exposed endpoints. Before integrating with the Banking Service user interface you must have integrated with the Authentication Service.
We consider banks as either direct banks, or indirect banks. This determines how a user sets up their account.
Direct banks
Direct banks are where the user requests directly with the bank for Banking Service to start getting their transactions. This typically involves a PDF authorisation form being produced by Banking Serivce, which the user sends to the bank for the feed to start. Lloyds, and RBS in the UK are examples of banks we support in this manner.
Indirect banks
The majority of bank feeds in Banking Service are indirect banks. Indirect refers to a mechanism we have to take users through a UI flow to authorise and onboard bank accounts.
The data sources for indirect banks can be:
- Third-party aggregator services such as Yodlee, Plaid or SISS. Who may in turn use a bank’s API or even screen-scraping to source transaction data.
- Another category we name as ‘Generic’. In this case, the onboarding is delegated through the Provider API to the data source.
Step 1. Get list of banks
The 1st step of integrating into bank feeds and onboarding a customer’s account is to identify the bank which holds their accounts. This can be done by calling the GET banks endpoint to list all available banks. It can also be used to add filters to search on specific fields such as bank name or ‘top banks’. Specify the bank identifier as shown to specific bank details.
GET /banks/{bankId}
Headers | Description |
---|---|
x-application |
This is your application identifier which is generated from the Authentication Service. |
Response
{
"name": "Chase",
"primaryCountry": "USA",
"primaryCountry2CharIso": "US",
"authorisationMechanism": null,
"accountTypes": [],
"status": "supported",
"authorisationData": null,
"offBoardingMechanism": {
"type": "none",
"instructions": ""
},
"supportiframe": true,
"popularBank": false,
"bankURL": "https://www.chase.com",
"flags": {
"oauth": false
},
"dataProvider": "indirect",
"capabilities": {
"manualRefresh": false
},
"logo": "https://s3-eu-west-1.amazonaws.com/bnkc-dev01-s3-eu-west-1-banklogos/chase.png",
"logoSvg": "https://s3-eu-west-1.amazonaws.com/bnkc-dev01-s3-eu-west-1-banklogos/chase.svg",
"icon": "https://s3-eu-west-1.amazonaws.com/bnkc-dev01-s3-eu-west-1-banklogos/chase_icon.svg",
"bankId": "fd105b12-887b-4277-95ea-157a41d0651e"
}
Step 2. Obtain an access token
Before integrating with the Banking Service UI, you must have integrated with the Authentication service.
A JWT can be generated using the Authentication Service /accesstoken API endpoint (with requires a signature generated using the standard authorisation method). This JWT can then be provided as a bearer token in the Authorisation header: ‘Bearer ‘. This JWT will need to be passed into the launch URL.
Step 3. Retrieve HTML (for indirect banks)
GET /banks/{bankId}
Headers | Description |
---|---|
x-application |
This is your application identifier which is generated from the Authentication Service. |
Authorization |
This is the bearer token returned from your request to the /accesstoken endpoint as described in step 1. |
Content-Type |
This should be set as application/json. |
Query Params | Description |
---|---|
bankid |
This is the identifier of the bank which can be located within the Get Banks endpoint. |
web |
Identify the type of route you will like to take to obtain request results. |
Web parameter types
web = true
: Returns a polling URL route that can be used to monitor progress of the UI flow and obtain the final result.web = true and callback
: The client browser will redirect to the URL providing the bank accounts identifiers in the query string. For security reasons, the callback needs to be a value we have setup in our allowlist.none
: The product is assumed to be a desktop product that is using a desktop browser window. This window will receive a scripting event that can capture the details.
callback |
(optional) Provide a callback if web = true. |
Response
{
"redirect":"{URL}",
"pollRoute":"{URL}",
"pollPeriod":5000
}
Step 4. Poll for response (for indirect banks)
Step 5. Post bank account
Recap
In this walkthrough we have gone through the entire process of integrating directly with the bank feeds funtionality through the endpoints available on the Banking Service Consumer API.