This documentation is for WSO2 Open Banking version 1.4.0. View documentation for the latest release.
Skip to end of metadata
Go to start of metadata

This document explains the flow of events related to the Account and Transaction API v3.1.1. 

Before you begin:

You need to deploy the Account Information and Transaction API in <WSO2_OB_APIM_HOME>/repository/resources/finance/apis/openbanking.org.uk/Accounts/3.1.1/account-info-swagger-3.1.1.yaml file. To deploy APIs for WSO2 Open Banking UK, see Deploying APIs for UK.

If you have already deployed v3.1 APIs:

According to Open Banking Implementation Entity (OBIE), the v3.1 and v3.1.1 APIs have the same context values. Therefore, if you have already deployed v3.1 APIs, the v3.1.1 APIs cannot be deployed as new versions of existing APIs. You have to update the swagger file content.

If you have integrated with OBIE you can use the Dynamic Client Registration v3.2 API. Once you deploy the DCR v3.2 API you can continue from the Generate application access token step.


Step 1 - Sign up as a TPP

In this step, the TPP registers its TPP application in WSO2 API store.

 Click here to see how it is done...
  1. Navigate to the API Store at https://<WSO2_OB_APIM_HOST>:9443/store

  2. Select Sign-up that is on the top left corner of the homepage.

  3. Provide the requested details on the Sign Up page.

     Click here for more information..

    a. Generic details:

    Field

    Description

    Username/Email

    The username/email that the TPP uses to sign in to the API Store.

    Password

    The password that the TPP uses to sign in to the API Store.

    Retype Password

    This is to prevent the TPP from accidentally setting an incorrect password.

    Last Name

    This is the last name of the TPP.

    First Name

    This is the first name of the TPP.


    b. Company details:

    Field

    Description

    Legal Entity Name

    The official name of the TPP.

    Country of Registration

    The country in which the TPP is registered.

    Legal Identifier Number (LEI)

    This identifies the TPP.

    Company Register

    The organization that registered the TPP.

    Company Registration Number

    Identifier issued at the TPP registration.

    Address Line 1

    Address of the TPP.

    Address Line 2

    Address of the TPP.

    City

    City in which the TPP is located.

    Postal Code

    Postal code of the geographical location of the TPP.

    Country

    The country in which the TPP is located.


    c. Competent authority registration details:

    Field

    Description

    Competent Authority

    The regulatory body that authorises and supervises the open banking services delivered by the TPP.

    Competent Authority Country

    Country of the competent authority that authorised the TPP to provide open banking services.

    Competent Authority Registration Number

    The registration number issued by the Competent Authority to the TPP.

    URL of the Competent Authority Register Page

    URL of the page that has the list of organizations authorised by the competent authority.

    Open Banking Roles

    Captures the open banking roles the TPP is willing to take up:

    • Account Information Service Provider: An Account Information Service Provider (AISP) provides an aggregated view of all the accounts and past transactions that a customer has with different banks. To provide this view to the customer, the AISP should have authorisation from the customer to view the corresponding transaction and balance information of all the payment accounts. The AISPs can also provide the facility to analyze the customer's spending patterns, expenses, and financial needs. Unlike a PISP, an AISP cannot transfer funds from a payment account.

    • Payment Initiation Service Provider: A Payment Initiation Service Provider (PISP) initiates credit transfers on behalf of a bank's customer.

    After selecting the AISP, indicate whether the TPP is authorised by a competent authority to provide the services of the selected roles.

    If the TPP is not yet registered to provide the services of the selected roles, indicate whether the TPP has applied for registration or not.

  4. Read terms and conditions. Click the checkbox to agree to the terms and conditions.

  5. Click Sign Up. A request to approve the TPP sign up is now sent to the Approver users.



Step 2 - Approve the TPP

Now that you have signed up as a TPP, an admin who overlooks all TPP sign-up forms must approve it. 


It is not mandatory to include the approval step for approving the TPP. In order to add this step, you need to configure workflows in the WSO2 Open Banking solution.

 Click here to see how it is done...
  1. Sign in to the WSO2 Open Banking API Manager Admin portal as an Approver at https://<WSO2_OB_APIM_HOST>:9443/admin

  2. Locate the approval request and click Assign To Me.

  3. Click Start to start the approval process.
  4. Select Approve then Complete.

Now the TPP can sign in to the API store. 


Step 3 - Sign in to the API store as the TPP

Users can sign in to the API store and proceed with the steps mentioned below.


 Click here to see how it is done...
  1. Sign in to the API Store as the TPP at https://<WSO2_OB_APIM_HOST>:9443/store

  2. Click Sign In and navigate to the Sign In page.

  3. Enter the username and the password you entered when signing up as a TPP.

  4. Click Sign In

The homepage of the API store is now displayed along with the APIs.


Step 4 - Create an application

The TPP with an AISP application needs to create an application using WSO2 API store. The application created via WSO2 API store allows to observe statistics of APIs, subscribe to APIs, and access the subscribed APIs.
 Click here to see how it is done...
  1. Go to the Applications tab in the API Store.


  2. Click Add Application.

  3. Enter application details.

    Field

    Description

    Name

    Application name.

    Per Token Quota

    Determines the maximum number of API requests accepted within a given duration.

    Description

    This describes the purpose of the application.

  4. Click Add

An application can be used to subscribe to multiple APIs. See Subscribe to an API for the instructions.


Step 5 - Subscribe to API

The TPP user needs to subscribe to the AccountAndTransactionAPI - v3.1.1 API in order to access API resources. Once subscribed, the users can access all the supported services of the API resources.


 Click here to see how it is done...
  1. Go to the APIs tab in the API Store.

  2. Select the AccountAndTransactionAPI-v3.1.1 API.

  3. Select the application you created in the Create an application section.

  4. Set the throttling policy to Unlimited.

  5. Click Subscribe.

Now that you have subscribed to the API, generate access tokens and invoke the API.


Step 6 - Create and upload certificates

The TPP user needs to create certificates to validate whether the TPP is registered in a governing entity. It is verified in the TPP Onboarding process. For example, in Dynamic Client Registration, the TPP is dynamically registered with ASPSPs when the client sends a registration request with its metadata. Therefore, the ASPSP is required to upload the root and issuer certificates obtained from Open Banking Implementation Entity. For more information, see  Dynamic Client Registration v3.2.

You can also create a self-signed certificate the following instructions given below and try out the API flow:

When you are using self-signed certificates, make sure to disable the certificate revocation validation:

  1. Open the <WSO2_OB_KM_HOME>/repository/conf/finance/open-banking.xml file
  2. Navigate to the certificate revocation validation configuration and disable it as follows:

    <CertificateManagement>
        <!-- Enable certificate OCSP and CRL validation -->
        <CertificateRevocationValidationEnabled>true</CertificateRevocationValidationEnabled>
    /CertificateManagement>
 Click here to see a self-signed certificate is created...

In order to use self-signed certificates as mentioned in the below steps, disable the <CertificateRevocationValidationEnabled> configuration under <CertificateManagement> in the <WSO2_OB_KM_HOME>/repository/conf/finance/open-banking.xml and <WSO2_OB_APIM_HOME>/repository/conf/finance/open-banking.xml files.

  1. A keystore file is used to store the trusted certificates of the TPP in the WSO2 Open Banking solution. Use the commands given below in a command-line interface in order to create a keystore file as a TPP.

    Make sure to update the following placeholders:

    <alias>A preferred alias for the keystore file.
    <filename>A preferred name for the keystore file.
    keytool -genkey -alias <alias> -keyalg RSA -keystore <filename>.jks

    During the command execution, the TPP user requires to;

    1. Set a password for the keystore.
    2. Provide information, acquired when registering with a governing entity.
    3. Set a password for user-defined alias (<alias>).
  2. Convert the keystore from the .jks format to .PKCS12.  Make sure to update the following placeholders:

    <keyStoreName>This is the name of the <filename>, given above.
    <PKCS12FileName>This is the name of the keystore in the .PKCS12 format.
    keytool -importkeystore -srckeystore <keystoreStoreName>.jks -destkeystore <PKCS12FileName>.p12 -deststoretype PKCS12

    During the command execution, the TPP user requires to;

    1. Set a password for the destination keystore.
    2. Enter the source keystore password, as defined in the above step .
  3. Create the application certificate (.pem) file in the PKCS12 format using the keystore. e.g: tpp.p12.

    Make sure to update the following placeholders:

    <PKCS12FileName>This is the name of the keystore in the PKCS12 format, as mentioned above for the <PKCS12FileName>.
    <PEMFileName>This is the name of the application certificate that is created in the .pem format.
    openssl pkcs12 -in <PKCS12FileName>.p12 -nokeys -out <PEMFileName>.pem

    During the command execution, the TPP user requires to;

    1. Set a password to import the .pem file.

 Once you create a self-signed certificate, upload it to the client trust stores of WSO2 OB APIM and WSO2 OB KM. 

  • Locate the client trust stores in WSO2 OB APIM and WSO2 OB KM in the following directory paths:
    • <WSO2_OB_APIM_HOME>/repository/resources/security/client-truststore.jks
    • <WSO2_OB_KM_HOME>/repository/resources/security/client-truststore.jks
  • Use the following command to upload the self-signed certificate:

    keytool -import -alias <alias> -keystore cacerts -file <PEMFileName>.pem

Step 7 - Generate keys

The TPP user requires a Client ID(Consumer Key) and a Client secret(Consumer Secret) to access the subscribed APIs.

 Click here to see how it is done...
  1. Sign in to the API store as a TPP user and click either of the following on the Applications tab.

    1. Production Keys: Generates access tokens in the production environment.

    2. Sandbox Keys: Generates access tokens in the sandbox environment.

  2. Provide the requested information as defined below:  

    Field

    Description

    Grant Types

    These determine the credentials that are used to generate the access token.

    • Refresh Token: This is to renew an expired access token.

    • Client Credential: This relates to the client credentials grant type and is applicable when consuming the API as an application.

    • Code: This relates to the authorisation code grant type and is applicable when consuming the API as a user.

    Client ID

    OrganizationIdentifier as provided in the EIDAS certificate. The organizationIdentifier attribute contains information using the following structure in the presented order:

    • PSD as the 3-character legal person identity type reference;

    • 2-character ISO 3166 country code representing the NCA country;

    • hyphen-minus (-)

    • 2-8 character NCA identifier (A-Z upper case only, no separator)

    • hyphen-minus (-)

    • PSP (Payment Service Provider) identifier (authorisation number as specified by NCA)

    Callback URL

    This is the URL used by the Account Information Service Provider (AISP) / Payment Initiation Service Provider (PISP) to receive the authorisation code sent from the Account Servicing Payment Service Provider (ASPSP), e.g: bank. The authorisation code can be used later to generate an OAuth2 access token.

    Application Certificate

    This is the content between the BEGIN CERTIFICATE and END CERTIFICATE strings of the application certificate (.PEM) that you created above.

  3. Click Request Access if you are generating production keys. If workflows are configured in the solution, it sends a request to Approver user to approve the token generation. Otherwise, it generates consumer key and consumer secret.

  4. Click Generate Keys if you are generating sandbox keys. It generates consumer key and consumer secret.


Step 8 - Approve Production Key generation

This step includes instructions to an Approver user to review and approve a request to generate production keys for an application.

It is not mandatory to include the approval step for the Production Key generation. In order to add this step, you need to configure workflows in the WSO2 Open Banking solution.

 Click here to see how it is done...
  1. Sign in to the WSO2 Open Banking API Manager Admin portal as an Approver at https://<WSO2_OB_APIM_HOST>:9443/admin.

  2. Click Tasks and then Application Registration.

  3. Locate the approval request and click Assign To Me.

  4. Click Start to start the approval process.

  5. Select Approve and then click Complete.
  6. Navigate back to the API Store and click Applications.
  7. On the Applications tab in the API Store, click View of the application that you created.
  8. Click Production Keys tab to find the generated keys.

  9. It includes the consumer key and consumer secret as follows:

Step 9 - Generate application access token

When invoking APIs in the Account and Transaction flow, application access tokens must be generated using the client credential grant type. The generated application access token is used to invoke the AccountAndTransactionAPI - v3.1.1 API.

 Click here to see how it is done...

You can skip the above steps and use DCR v3.2 API to dynamically register the clients.

  1. Once the client is successfully registered, sign in to the API Store and go to the Applications tab.

  2. Select your client application from the Application List. Click View of the application that you created.

  3. Choose the Production Keys or Sandbox Keys tab based on your environment.

  4. The Consumer Key shown above is the client ID of your application.

  5. Generate the client assertion by signing the following JSON payload using the supported algorithms.

    { 
    "alg": "<<The algorithm used for signing.>>", 
    "kid": "<<The thumbprint of the certificate.>>", 
    "typ": "JWT" 
    } 
    
    { 
    "iss": "<<This is the issuer of the token. For example, client ID of your application>>", 
    "sub": "<<This is the subject identifier of the issuer. For example, client ID of your application>>", 
    "exp": <<This is epoch time of the token expiration date/time>>, 
    "iat": <<This is epoch time of the token issuance date/time>>, 
    "jti": "<<This is an incremental unique value>>", 
    "aud": "<<This is the audience that the ID token is intended for. For example, https://<<OB_HOST>>:8243/token>>" 
    } 
    
    <signature: For DCR, the client assertion is signed by the private key of the signing certificate. Otherwise the private signature of the application certificate is used.>
    eyJraWQiOiJoY2dleHVndVZiNXJZU1lWQnNsLWM5aEJQdlkiLCJhbGciOiJQUzI1NiJ9.eyJzdWIiOiJpMkJmbFJyeWIxVkdsRUpHNlpTMDR0bTNHaGNhIiwiYXVkIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6ODI0My90b2tlbiIsImlzcyI6ImkyQmZsUnJ5YjFWR2xFSkc2WlMwNHRtM0doY2EiLCJleHAiOjE1OTkxODcyMDEsImlhdCI6MTU2NTcyMDUzNywianRpIjoiMTU2NTcyMTUzOCJ9.THAG1Ox8hAoGe3hXUvX8rrsIoU7SJfcfSWOxNkdnERb827hxDx2FbVN2wrNhe4A93AYMaCYsHqq8s6p4gkeREWGbJ_IGSjmzJPATWC0oAfAP8hRqdFNUfnTufN7lNlWwySJ7OyBgqorq_ABOx1i741bnld4Jyz8e58gi9UPRi7lFuWnvO-6RwlZY771B1qYNQFTULitV5jX38XJXTX2jrdc_2OkoAS3cL_2x05zZqNFpIvtoK-6XJP1HgRrlDdYx3jzuhAk9F5Q-4BlrbdiUS6QP0PFA_by4y-1vScBAGBhCH4_ViUuGdT9c0FSBGE9_3sLkyj_4SLJRPiQwn6NLbg

    The value of the aud claim should contain the same value as the Identity Provider Entity ID.

     Click here to view the Identity Provider Entity ID:
    1. Sign in to the Identity and Access Management console at  https://localhost:9446/carbon
    2. In the Main menu, go to Home > Identity > Identity Providers > Resident.
    3. View the value in Resident Identity Provider > Inbound Authentication Configuration > OAuth2/OpenID Connect Configuration > Identity Provider Entity ID. By default this value is set to  https://localhost:8243/token .
  6. Run the following cURL command in a command prompt to generate the access token. Update the placeholders with the relevant values.

    curl -k  POST \
      https://<WSO2_OB_APIM_HOST>:8243/token \ 
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/x-www-form-urlencoded' \ 
      --cert <PUBLIC_KEY_FILE_PATH> --key <PRIVATE_KEY_FILE_PATH> \
       -d 'grant_type=client_credentials&scope=accounts%20openid%20&client_assertion=<CLIENT_ASSERTION_JWT>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&redirect_uri=<APPLICATION_CALLBACK_URL>'

    The access token is now generated.


    You can use the same cURL command to regenerate the access token.


Step 10 - Initiate account consents

In this step, the TPP creates a request to get the consent of the PSU to access the accounts and its information from the bank. The Bank sends the request to the PSU stating the accounts and information that the TPP wishes to access. Upon the user approving or denying the account consent, the TPP is now eligible to access the user's account details.

 Click here to see how it is done

POST /account-access-consents

  • This resource creates an account access consent. Use the following format in the request body.

    {
      "Data": {
        "Permissions": [
          "ReadAccountsBasic"
        ],
        "ExpirationDateTime": "2019-07-23T07:14:23.641Z",
        "TransactionFromDateTime": "2019-07-23T07:14:23.641Z",
        "TransactionToDateTime": "2019-07-23T07:14:23.641Z"
      },
      "Risk": {}
    }
  • Fill in all mandatory fields.
    • x-fapi-financial-id - The unique id of the ASPSP to which the request is issued. This id will be issued by the OBIE.
    • Authorization - An Authorisation Token as per https://tools.ietf.org/html/rfc6750. Enter the application access token, you generated from the above step.

  • A sample request follows the format given below.

    curl -k POST \
      https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/account-access-consents \
      -H 'Authorization: Bearer <APPLICATION_ACCESS_TOKEN>' \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/json' \
      -H 'accept: application/json' \
      -H 'x-fapi-financial-id: open-bank' \
      -d '{
      "Data": {
        "Permissions": [
            "ReadAccountsDetail",
             "ReadBalances",
             "ReadBeneficiariesDetail",
             "ReadDirectDebits",
             "ReadProducts",
             "ReadStandingOrdersDetail",
             "ReadTransactionsCredits",
             "ReadTransactionsDebits",
             "ReadTransactionsDetail",
             "ReadOffers",
             "ReadPAN",
             "ReadParty",
             "ReadPartyPSU",
             "ReadScheduledPaymentsDetail",
             "ReadStatementsDetail"
        ],
        "ExpirationDateTime": "2019-08-24T07:59:33.012Z",
        "TransactionFromDateTime": "2019-07-24T07:59:33.012Z",
        "TransactionToDateTime": "2019-07-24T07:59:33.012Z"
      },
      "Risk": {}
    }'
  • The response will bear the  ConsentId.

    {  
        "Data": {
            "Status": "AwaitingAuthorisation",
            "StatusUpdateDateTime": "2019-07-25T10:10Z",
            "CreationDateTime": "2019-07-25T10:10Z",
            "TransactionToDateTime": "2019-04-28T07:13:17.112Z",
            "ExpirationDateTime": "2019-08-30T07:13:17.112Z",
            "Permissions": [
                "ReadAccountsDetail",
                "ReadBalances",
                "ReadBeneficiariesDetail",
                "ReadDirectDebits",
                "ReadProducts",
                "ReadStandingOrdersDetail",
                "ReadTransactionsCredits",
                "ReadTransactionsDebits",
                "ReadTransactionsDetail",
                "ReadOffers",
                "ReadPAN",
                "ReadParty",
                "ReadPartyPSU",
                "ReadScheduledPaymentsDetail",
                "ReadStatementsDetail"
            ],
            "ConsentId": "86e3396e-dc6a-46fe-a5b7-2e5c035e7619",
            "TransactionFromDateTime": "2019-04-28T07:13:17.112Z"
        },
        "Risk": {},
        "Links": {
            "Self": "https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/account-access-consents/86e3396e-dc6a-46fe-a5b7-2e5c035e7619"
        },
        "Meta": {
            "TotalPages": 1
        }
    }

GET /account-access-consents/{ConsentId}

  • An AISP may retrieve an account-access-consent resource that they have created to check its status. In order to make this request, the AISP must have an access token issued by the ASPSP using a client credentials grant.

  • Fill in the mandatory fields.
  • ConsentId -  The unique id of the consent which you want to retrieve.
  • x-fapi-financial-id - The unique id of the ASPSP to which the request is issued. This id will be issued by the OBIE.
  • Authorization - An Authorisation Token as per https://tools.ietf.org/html/rfc6750. Enter the application access token, you generated from the above step.

  • A sample request is in the format below.

    curl -k GET \
      https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/account-access-consents/<CONSENTID> \
      -H 'Authorization: Bearer <APPLICATION_ACCESS_TOKEN>' \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/json' \
      -H 'accept: application/json' \
      -H 'x-fapi-financial-id: open-bank' 
  • Following is a sample response.

    {    
        "Data": {
            "Status": "AwaitingAuthorisation",
            "StatusUpdateDateTime": "2019-07-24T08:05Z",
            "CreationDateTime": "2019-07-24T08:05Z",
            "TransactionToDateTime": "2019-07-24T07:59:33.012Z",
            "ExpirationDateTime": "2019-08-24T07:59:33.012Z",
            "Permissions": [
                "ReadAccountsBasic"
            ],
            "ConsentId": "549c7aaf-b1a3-4025-80e1-8d4c59c0a2f6",
            "TransactionFromDateTime": "2019-07-24T07:59:33.012Z"
        },
        "Risk": {},
        "Links": {
            "Self": "https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/account-access-consents/549c7aaf-b1a3-4025-80e1-8d4c59c0a2f6"
        },   
       "Meta": {
            "TotalPages": 1
        }
    }

DELETE /account-access-consents/{ConsentId}

  • If the PSU revokes consent to data access with the AISP, the AISP must delete the account-access-consent resource. In order to make this request, the AISP must have an access token issued by the ASPSP using a client credentials grant.
  • Fill in the mandatory fields.
    • ConsentId -  The unique id of the consent which you want to delete.
    • x-fapi-financial-id - The unique id of the ASPSP to which the request is issued. This id will be issued by the OBIE.
    • Authorization - An Authorisation Token as per https://tools.ietf.org/html/rfc6750. Enter the application access token, you generated from the above step. Use the following format and replace the placeholders.

  • Given below is a sample request.

    curl -X DELETE \
      https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/account-access-consents/<CONSENTID> \
      -H 'Authorization: Bearer <APPLICATION_ACCESS_TOKEN>' \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/json' \
      -H 'accept: application/json' \
      -H 'x-fapi-financial-id: open-bank'
  • If the deletion is successful you will get a 204 No Content response.


Step 11 - Authorizing account consents

The AISP redirects the bank customer to authenticate and approve/deny application-provided consents.

 Click here to see how it is done
  1. Generate the request object by signing the following JSON payload using the supported algorithms.

    {
      "kid": "<CERTIFICATE_FINGERPRINT>",
      "alg": "<SUPPORTED_ALGORITHM>",
      "typ": "JWT"
    }
    {
      "max_age": 86400,
      "aud": "<This is the audience that the ID token is intended for. e.g., https://<WSO2_OB_APIM_HOST>:8243/token>",
      "scope": "accounts openid",
      "iss": "<APPLICATIONT_ID>",
      "claims": {
        "id_token": {
          "acr": {
            "values": [
              "urn:openbanking:psd2:sca",
              "urn:openbanking:psd2:ca"
            ],
            "essential": true
          },
          "openbanking_intent_id": {
            "value": "<CONSENTID>",
            "essential": true
          }
        },
        "userinfo": {
          "openbanking_intent_id": {
            "value": "<CONSENTID>",
            "essential": true
          }
        }
      },
      "response_type": "<code:Retrieves authorize code/code id_token: Retrieves authorize token and ID token>",   
      "redirect_uri": "<CLIENT_APPLICATION_REDIRECT_URI>",
      "state": "YWlzcDozMTQ2",
      "exp": <EPOCH_TIME_OF_TOKEN_EXPIRATION>,
      "nonce": "<PREVENTS_REPLAY_ATTACKS>",
      "client_id": "<APPLICATION_ID>"
    }
  2. Run the following in a browser to prompt the invocation of the authorize API. Make sure you update the placeholders with the relevant values:

    https://<WSO2_OB_APIM_HOST>:8243/authorize/?response_type=<RESPONSE_TYPE>&client_id=<APPLICATION_ID>&scope=accounts%20openid&redirect_uri=<APPLICATION_REDIRECT_URI>&state=YWlzcDozMTQ2&request=<REQUEST_OBJECT>&prompt=login&nonce=<REQUEST_OBJECT_NONCE>
  3. You are directed to a login page. Log in with the credentials of a user that has a subscriber role.

  4. If a secondary factor is required, e.g. SMSOTP, provide the relevant values. Upon successful authentication, the user is redirected to the consent management page.

  5. Upon providing consent, an authorization code is generated.


Step 12 - Generate user access token

In this section, you will be generating an access token using the authorization code generated in the section above .

 Click here to see how it is done

Run the following cURL command in a command prompt to generate the access token as a TPP user:

curl -k POST \
  https://<WSO2_OB_APIM_HOST>:8243/token \
  -H 'Cache-Control: no-cache' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --cert <PUBLIC_KEY_FILE_PATH> --key <PRIVATE_KEY_FILE_PATH> \
  -d 'client_id=<APPLICATION_ID>&grant_type=authorization_code&code=<CODE_GENERATED>&redirect_uri=<APPLICATION_REDIRECT_URI>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<CLIENT_ASSERTION>'

The response contains an access token and a refresh token.

The access tokens have an expiration period, once an access token expires, you need to regenerate it. Run the following cURL command to generate a new access token as an AISP:

curl -X POST \
 https://<WSO2_OB_APIM_HOST>:8243/token \
 -H 'Authorization: Basic <APPLICATION CLIENTID:CLIENT_SECRET_BASE64_ENCODED>' \
 -H 'Content-Type: application/x-www-form-urlencoded' \
 -H 'cache-control: no-cache' \
 -k --cert <PUBLIC_KEY_FILE_PATH> --key <PRIVATE_KEY_FILE_PATH> \
 -d 'grant_type=refresh_token&refresh_token=<REFRESH_TOKEN>'


Step 13 - Invoke Account and Transaction APIs

Following API functionalities are available in the Account and Transaction API.

GET /accounts

The first step for an AISP after an account request is authorised is to call the GET /accounts endpoint.

An AISP will be given the full list of accounts that the PSU has authorised the AISP to access. The AccountIds returned is used to retrieve other resources for a specific AccountId.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' -k \
  -H 'x-fapi-financial-id: open-bank'
{
    "Meta": {
        "TotalPages": 1
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts"
    },
    "Data": {
        "Account": [
            {
                "AccountId": "30080012343456",
                "Currency": "GBP",
                "AccountType": "Personal",
                "AccountSubType": "CurrentAccount",
                "Nickname": "Bills"
            }
        ]
    }
}

GET /accounts/{AccountId}

The AISPs are able to retrieve the account information for a given AccountId. The AccountID is retrieved in the call to GET /accounts.


curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId> \
  -k -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Meta": {
        "TotalPages": 1
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456"
    },
    "Data": {
        "Account": [
            {
                "AccountId": "30080012343456",
                "Currency": "GBP",
                "AccountType": "Personal",
                "AccountSubType": "CurrentAccount",
                "Nickname": "Bills"
            }
        ]
    }
}

GET /accounts/{AccountId}/balances

The AISPs are able to retrieve the account balance information resource for a specific AccountId. The AccountId is retrieved in the call to GET /accounts.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/balances \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Balance": [
            {
                "Type": "InterimAvailable",
                "AccountId": "30080012343456",
                "CreditLine": [
                    {
                        "Type": "Pre-Agreed",
                        "Included": true,
                        "Amount": {
                            "Amount": "1000.00",
                            "Currency": "GBP"
                        }
                    }
                ],
                "Amount": {
                    "Amount": "1230.00",
                    "Currency": "GBP"
                },
                "CreditDebitIndicator": "Credit",
                "DateTime": "2017-04-05T10:43:07+00:00"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/balances/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /balances

The AISPs are able to retrieve the account information resources in bulk.

This retrieves the resources for all authorised accounts linked to the account request.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/balances \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Balance": [
            {
                "Type": "InterimBooked",
                "AccountId": "30080012343456",
                "Amount": {
                    "Amount": "57.36",
                    "Currency": "GBP"
                },
                "CreditDebitIndicator": "Debit",
                "DateTime": "2017-05-02T14:22:09+00:00"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/balances/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /accounts/{AccountId}/beneficiaries

The AISPs are able to retrieve the account beneficiaries information resource for a specific AccountId. The AccountId is retrieved in the call to GET /accounts.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/beneficiaries \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{    
    Data": {
        "Beneficiary": [
            {
                "AccountId": "30080012343456",
                "Reference": "Towbar Club",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "80200112345678",
                    "Name": "Mrs Juniper"
                },
                "BeneficiaryId": "Ben1"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/beneficiaries/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /beneficiaries

The AISPs are able to retrieve the beneficiaries' information in bulk.

This endpoint will retrieve the beneficiaries' resources for all authorised accounts linked to a specific account request.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/beneficiaries \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Beneficiary": [
            {
                "AccountId": "30080012343456",
                "Reference": "Towbar Club",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "80200112345678",
                    "Name": "Mrs Juniper"
                },
                "BeneficiaryId": "Ben1"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/beneficiaries/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /accounts/{AccountId}/direct-debits

The AISPs are able to retrieve the direct-debits for a specific account identified by AccountId using this endpoint. The AccountId is retrieved in the call to GET /accounts.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/direct-debits \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{ 
    "Data": {
        "DirectDebit": [
            {
                "PreviousPaymentDateTime": "2017-04-05T10:43:07+00:00",
                "AccountId": "30080012343456",
                "MandateIdentification": "Caravanners",
                "DirectDebitStatusCode": "Active",
                "DirectDebitId": "DD03",
                "PreviousPaymentAmount": {
                    "Amount": "0.57",
                    "Currency": "GBP"
                },
                "Name": "Towbar Club 3 - We Love Towbars"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/direct-debits/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /direct-debits

The AISPs are able to retrieve direct-debits for all accounts that the PSU has consented to.

This will retrieve the direct-debit resources for all authorised accounts linked to the account request.


curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/direct-debits \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{   
    "Data": {
        "DirectDebit": [
            {
                "PreviousPaymentDateTime": "2017-04-05T10:43:07+00:00",
                "AccountId": "30080012343456",
                "MandateIdentification": "Caravanners",
                "DirectDebitStatusCode": "Active",
                "DirectDebitId": "DD03",
                "PreviousPaymentAmount": {
                    "Amount": "0.57",
                    "Currency": "GBP"
                },
                "Name": "Towbar Club 3 - We Love Towbars"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/direct-debits/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /accounts/{AccountId}/offers

The AISPs are able to retrieve the offers resource for a specific AccountId. The AccountId is retrieved in the call to GET /accounts.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/offers \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Offers": [
            {
                "OfferId": "Offer1",
                "AccountId": "30080012343456",
                "Description": "Credit limit increase for the account up to £10000.00",
                "Amount": {
                    "Amount": "10000.00",
                    "Currency": "GBP"
                },
                "OfferType": "LimitIncrease"
            },
            {
                "OfferId": "Offer2",
                "AccountId": "30080012343456",
                "Description": "Balance transfer offer up to £2000",
                "Amount": {
                    "Amount": "2000.00",
                    "Currency": "GBP"
                },
                "OfferType": "BalanceTransfer"
            }
        ]
    }
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/offers/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /offers

The AISPs are able to retrieve the offers resources in bulk. This will retrieve the resources for all authorised accounts linked to the account request.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/offers \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Offers": [
            {
                "OfferId": "Offer1",
                "AccountId": "30080012343456",
                "Description": "Credit limit increase for the account up to £10000.00",
                "Amount": {
                    "Amount": "10000.00",
                    "Currency": "GBP"
                },
                "OfferType": "LimitIncrease"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/offers/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /accounts/{AccountId}/parties

The AISPs are able to retrieve details on the account owners or holders and operators. The AccountId is retrieved in the call to GET /accounts.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/parties \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Party": [
            {
                "Relationships": {
                    "Account": {
                        "Related": "/accounts/30080012343456",
                        "Id": 30080012343456
                    }
                },
                "BeneficialOwnership": true,
                "PartyId": "PABC123",
                "FullLegalName": "Semiotec Limited",
                "Address": [
                    {
                        "StreetName": "Street",
                        "BuildingNumber": "15",
                        "TownName": "London",
                        "Country": "GB",
                        "AddressType": "Business",
                        "PostCode": "NW1 1AB"
                    }
                ],
                "AccountRole": "UK.OBIE.Principal",
                "PartyType": "Sole",
                "EmailAddress": "contact@semiotec.co.jp",
                "Name": "Semiotec",
                "LegalStructure": "UK.OBIE.PrivateLimitedCompany"
            },
            {
                "PartyNumber": "0000007456",
                "Relationships": {
                    "Account": {
                        "Related": "/accounts/30080012343456",
                        "Id": 30080012343456
                    }
                },
                "BeneficialOwnership": false,
                "PartyId": "PXSIF023",
                "FullLegalName": "Mr Kevin Bartholmew Atkinson",
                "AccountRole": "UK.OBIE.Administrator",
                "PartyType": "Delegate",
                "EmailAddress": "kev@semiotec.co.jp",
                "Name": "Kevin Atkinson",
                "LegalStructure": "UK.OBIE.Individual"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/parties/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /accounts/{AccountId}/party

The AISPs are able to retrieve details on the account owner or holder for a given AccountId.

  • In the case of a business, this will be the details of the business
  • In the case of a joint account, this will be the party that has given authorisation to the AISP to view the account

    curl -X GET \
      https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/party \
      -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
      -H 'Cache-Control: no-cache' \
      -H 'accept: application/json' \
      -H 'x-fapi-financial-id: open-bank'
    {
        "Data": {
            "Party": {
                "Email": "contact@semiotec.co.jp",
                "PartyId": "PABC123",
                "Address": {
                    "StreetName": "Street",
                    "BuildingNumber": "15",
                    "TownName": "London",
                    "AddressType": "Business",
                    "PostCode": "NW1 1AB"
                },
                "PartyType": "Sole",
                "Name": "Semiotec"
            }
        },
        "Links": {
            "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/party/"
        },
        "Meta": {
            "TotalPages": 1
        }
    }

GET /party

The AISPs are able to retrieve details on the user that has authorised the account-access-consent with the ASPSP:

  • In the case of a business account, this will be the details of the party that has given authorisation to the AISP to view the account
  • In the case of a joint account, this will be the party that has given authorisation to the AISP to view the account

    curl -X GET \
      https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/party \
      -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
      -H 'Cache-Control: no-cache' \
      -H 'accept: application/json' \
      -H 'x-fapi-financial-id: open-bank'
    {
        "Data": {
            "Party": {
                "Email": "d.user@semiotec.co.jp",
                "PartyId": "PXSIF023",
                "PartyType": "Delegate",
                "Name": "abc user"
            }
        },
        "Links": {
            "Self": "https://api.alphabank.com/open-banking/v3.1/party/"
        },
        "Meta": {
            "TotalPages": 1
        }    
    }

GET /accounts/{AccountId}/product

The AISPs are able to retrieve the account product information for a specific AccountId. The AccountId is retrieved in the call to GET /accounts.
curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/product \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Product": [
            {
                "AccountId": "30080012343456",
                "ProductName": "321 Product",
                "ProductType": "PersonalCurrentAccount",
                "ProductId": "51B"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/product"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /products

The AISPs are able to retrieve the products information in bulk.

This endpoint will retrieve the products resources for all authorised accounts linked to a specific account request.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/products \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Product": [
            {
                "AccountId": "30080012343456",
                "ProductName": "321 Product",
                "ProductType": "PersonalCurrentAccount",
                "ProductId": "51B"
            },
            {
                "AccountId": "30080098763459",
                "ProductName": "321 Product",
                "ProductType": "PersonalCurrentAccount",
                "ProductId": "51B"
            },
            {
                "AccountId": "30080098971337",
                "ProductName": "321 Product",
                "ProductType": "PersonalCurrentAccount",
                "ProductId": "51B"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/products/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /accounts/{AccountId}/scheduled-payments

The AISPs are able to retrieve the scheduled-payments for a specific AccountId. The AccountId is retrieved in the call to GET /accounts.


curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/scheduled-payments \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "ScheduledPayment": [
            {
                "AccountId": "30080012343456",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "23605490179017",
                    "Name": "Mr Tee"
                },
                "ScheduledPaymentDateTime": "2017-05-05T00:00:00+00:00",
                "InstructedAmount": {
                    "Amount": "10.00",
                    "Currency": "GBP"
                },
                "ScheduledPaymentId": "SP03",
                "ScheduledType": "Execution"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/scheduled-payments/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /scheduled-payments

The AISPs are able to retrieve the scheduled-payments resources in bulk.

This will retrieve the scheduled-payments resources for all authorised accounts linked to the account request.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/scheduled-payments \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN> -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "ScheduledPayment": [
            {
                "AccountId": "30080012343456",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "23605490179017",
                    "Name": "Mr Tee"
                },
                "ScheduledPaymentDateTime": "2017-05-05T00:00:00+00:00",
                "InstructedAmount": {
                    "Amount": "10.00",
                    "Currency": "GBP"
                },
                "ScheduledPaymentId": "SP03",
                "ScheduledType": "Execution"
            },
            {
                "AccountId": "30080098763459",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "23605490179017",
                    "Name": "Mr Tee"
                },
                "ScheduledPaymentDateTime": "2017-05-05T00:00:00+00:00",
                "InstructedAmount": {
                    "Amount": "10.00",
                    "Currency": "GBP"
                },
                "ScheduledPaymentId": "SP03",
                "ScheduledType": "Execution"
            },
            {
                "AccountId": "30080098971337",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "23605490179017",
                    "Name": "Mr Tee"
                },
                "ScheduledPaymentDateTime": "2017-05-05T00:00:00+00:00",
                "InstructedAmount": {
                    "Amount": "10.00",
                    "Currency": "GBP"
                },
                "ScheduledPaymentId": "SP03",
                "ScheduledType": "Execution"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/scheduled-payments/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /accounts/{AccountId}/standing-orders

The AISPs are able to retrieve the standing-order resources for a specific AccountId. The AccountId is retrieved in the call to GET /accounts.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/standing-orders \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "StandingOrder": [
            {
                "NextPaymentAmount": {
                    "Amount": "0.56",
                    "Currency": "GBP"
                },
                "AccountId": "30080012343456",
                "NextPaymentDateTime": "2017-08-13T00:00:00+00:00",
                "StandingOrderId": "Ben3",
                "Reference": "Towbar Club 2 - We Love Towbars",
                "StandingOrderStatusCode": "Active",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "80200112345678",
                    "Name": "Mrs Juniper"
                },
                "Frequency": "EvryWorkgDay",
                "FirstPaymentAmount": {
                    "Amount": "0.57",
                    "Currency": "GBP"
                },
                "FirstPaymentDateTime": "2017-08-12T00:00:00+00:00",
                "FinalPaymentAmount": {
                    "Amount": "0.56",
                    "Currency": "GBP"
                },
                "FinalPaymentDateTime": "2027-08-12T00:00:00+00:00"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/standing-orders/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /standing-orders

The AISPs are able to retrieve the standing orders' resources in bulk.

This will retrieve the scheduled-payments resources for all authorised accounts linked to the account request.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/standing-orders \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "StandingOrder": [
            {
                "NextPaymentAmount": {
                    "Amount": "0.56",
                    "Currency": "GBP"
                },
                "AccountId": "30080012343456",
                "NextPaymentDateTime": "2017-08-13T00:00:00+00:00",
                "StandingOrderId": "Ben3",
                "Reference": "Towbar Club 2 - We Love Towbars",
                "StandingOrderStatusCode": "Active",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "80200112345678",
                    "Name": "Mrs Juniper"
                },
                "Frequency": "EvryWorkgDay",
                "FirstPaymentAmount": {
                    "Amount": "0.57",
                    "Currency": "GBP"
                },
                "FirstPaymentDateTime": "2017-08-12T00:00:00+00:00",
                "FinalPaymentAmount": {
                    "Amount": "0.56",
                    "Currency": "GBP"
                },
                "FinalPaymentDateTime": "2027-08-12T00:00:00+00:00"
            },
            {
                "NextPaymentAmount": {
                    "Amount": "0.56",
                    "Currency": "GBP"
                },
                "AccountId": "30080098763459",
                "NextPaymentDateTime": "2017-08-13T00:00:00+00:00",
                "StandingOrderId": "Ben3",
                "Reference": "Towbar Club 2 - We Love Towbars",
                "StandingOrderStatusCode": "Active",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "80200112345678",
                    "Name": "Mrs Juniper"
                },
                "Frequency": "EvryWorkgDay",
                "FirstPaymentAmount": {
                    "Amount": "0.57",
                    "Currency": "GBP"
                },
                "FirstPaymentDateTime": "2017-08-12T00:00:00+00:00",
                "FinalPaymentAmount": {
                    "Amount": "0.56",
                    "Currency": "GBP"
                },
                "FinalPaymentDateTime": "2027-08-12T00:00:00+00:00"
            },
            {
                "NextPaymentAmount": {
                    "Amount": "0.56",
                    "Currency": "GBP"
                },
                "AccountId": "30080098971337",
                "NextPaymentDateTime": "2017-08-13T00:00:00+00:00",
                "StandingOrderId": "Ben3",
                "Reference": "Towbar Club 2 - We Love Towbars",
                "StandingOrderStatusCode": "Active",
                "CreditorAccount": {
                    "SchemeName": "SortCodeAccountNumber",
                    "Identification": "80200112345678",
                    "Name": "Mrs Juniper"
                },
                "Frequency": "EvryWorkgDay",
                "FirstPaymentAmount": {
                    "Amount": "0.57",
                    "Currency": "GBP"
                },
                "FirstPaymentDateTime": "2017-08-12T00:00:00+00:00",
                "FinalPaymentAmount": {
                    "Amount": "0.56",
                    "Currency": "GBP"
                },
                "FinalPaymentDateTime": "2027-08-12T00:00:00+00:00"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/standing-orders/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /accounts/{AccountId}/statements

The AISPs are able to retrieve the statements information resource for a given AccountId. The AccountId is retrieved in the call to GET /accounts.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/statements \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Statement": [
            {
                "AccountId": "30080012343456",
                "StatementId": "8sfhke-sifhkeuf-97813",
                "StatementReference": "002",
                "Type": "RegularPeriodic",
                "StartDateTime": "2017-08-01T00:00:00+00:00",
                "EndDateTime": "2017-08-31T23:59:59+00:00",
                "CreationDateTime": "2017-09-01T00:00:00+00:00",
                "StatementDescription": [
                    "August 2017 Statement",
                    "One Free Uber Ride"
                ],
                "StatementAmount": [
                    {
                        "Amount": {
                            "Amount": "400.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit",
                        "Type": "ClosingBalance"
                    },
                    {
                        "Amount": {
                            "Amount": "600.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit",
                        "Type": "PreviousClosingBalance"
                    }
                ]
            },
            {
                "AccountId": "30080012343456",
                "StatementId": "34hj24u-324h33-31i3p4",
                "StatementReference": "003",
                "Type": "RegularPeriodic",
                "StartDateTime": "2017-09-01T00:00:00+00:00",
                "EndDateTime": "2017-09-30T23:59:59+00:00",
                "CreationDateTime": "2017-10-01T00:00:00+00:00",
                "StatementDescription": [
                    "September 2017 Statement"
                ],
                "StatementAmount": [
                    {
                        "Amount": {
                            "Amount": "200.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit",
                        "Type": "PreviousClosingBalance"
                    },
                    {
                        "Amount": {
                            "Amount": "400.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit",
                        "Type": "PreviousClosingBalance"
                    }
                ]
            }
        ],
        "Links": {
            "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/statements/"
        },
        "Meta": {
            "TotalPages": 1
        }
    }
}

GET /accounts/{AccountId}/statements/{StatementId}

The AISPs are able to retrieve the statement information resource for a specific statement in the AccountId.The AccountId is retrieved in the call to GET /accounts.


curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/statements/<StatementId> \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Statement": [
            {
                "AccountId": "30080012343456",
                "StatementId": "34hj24u-324h33-31i3p4",
                "StatementReference": "002",
                "Type": "RegularPeriodic",
                "StartDateTime": "2017-08-01T00:00:00+00:00",
                "EndDateTime": "2017-08-31T23:59:59+00:00",
                "CreationDateTime": "2017-09-01T00:00:00+00:00",
                "StatementDescription": [
                    "August 2017 Statement",
                    "One Free Uber Ride"
                ],
                "StatementAmount": [
                    {
                        "Amount": {
                            "Amount": "400.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit",
                        "Type": "ClosingBalance"
                    },
                    {
                        "Amount": {
                            "Amount": "600.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit",
                        "Type": "PreviousClosingBalance"
                    }
                ]
            }
        ],
        "Links": {
            "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/statements/34hj24u-324h33-31i3p4"
        },
        "Meta": {
            "TotalPages": 1
        }
    }
}

GET /accounts/{AccountId}/statements/{StatementId}/file

The AISPs are able to retrieve a non-json representation of a specific statement as specified in the Accept header by the AISP. The statement can be downloaded in formats such as pdf, doc and csv.

Given below is a sample request:
curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/statements/<StatementId>/file \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/pdf' \
  -H 'x-fapi-financial-id: open-bank' \
  --output statement.pdf

GET /accounts/{AccountId}/statements/{StatementId}/transactions

The AISPs are able to retrieve the transaction resources for a specific AccountId and a StatemntId.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/statements/<StatementId>/transactions \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Transaction": [
            {
                "Status": "Booked",
                "AccountId": "30080012343456",
                "TransactionReference": "Ref 1",
                "ProprietaryBankTransactionCode": {
                    "Issuer": "AlphaBank",
                    "Code": "Transfer"
                },
                "Amount": {
                    "Amount": "10.00",
                    "Currency": "GBP"
                },
                "CreditDebitIndicator": "Credit",
                "StatementReference": "Ref 34hj24u-324h33-31i3p4",
                "TransactionId": "123",
                "TransactionInformation": "Cash from Aubrey",
                "BookingDateTime": "2017-04-05T10:43:07+00:00",
                "BankTransactionCode": {
                    "SubCode": "DomesticCreditTransfer",
                    "Code": "ReceivedCreditTransfer"
                },
                "ValueDateTime": "2017-04-05T10:45:22+00:00",
                "Balance": {
                    "Type": "InterimBooked",
                    "Amount": {
                        "Amount": "230.00",
                        "Currency": "GBP"
                    },
                    "CreditDebitIndicator": "Credit"
                }
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/transactions/"
    },
    "Meta": {
        "LastAvailableDateTime": "2017-12-03T00:00:00+00:00",
        "FirstAvailableDateTime": "2017-05-03T00:00:00+00:00",
        "TotalPages": 1
    }
}

GET /statements

The AISPs are able to retrieve statement information for all accounts that the PSU has consented to.

This will retrieve the statement resources for all authorised accounts linked to the account request.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/statements \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Statement": [
            {
                "Type": "RegularPeriodic",
                "AccountId": "30080012343456",
                "StartDateTime": "2017-08-01T00:00:00+00:00",
                "CreationDateTime": "2017-09-01T00:00:00+00:00",
                "EndDateTime": "2017-08-31T23:59:59+00:00",
                "StatementId": "8sfhke-sifhkeuf-97813",
                "StatementReference": "002",
                "StatementDescription": [
                    "August 2017 Statement",
                    "One Free Uber Ride"
                ],
                "StatementAmount": [
                    {
                        "Type": "ClosingBalance",
                        "Amount": {
                            "Amount": "400.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit"
                    },
                    {
                        "Type": "PreviousClosingBalance",
                        "Amount": {
                            "Amount": "600.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit"
                    }
                ]
            },
            {
                "Type": "RegularPeriodic",
                "AccountId": "30080098763459",
                "StartDateTime": "2017-08-01T00:00:00+00:00",
                "CreationDateTime": "2017-09-01T00:00:00+00:00",
                "EndDateTime": "2017-08-31T23:59:59+00:00",
                "StatementId": "8sfhke-sifhkeuf-97813",
                "StatementReference": "002",
                "StatementDescription": [
                    "August 2017 Statement",
                    "One Free Uber Ride"
                ],
                "StatementAmount": [
                    {
                        "Type": "ClosingBalance",
                        "Amount": {
                            "Amount": "400.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit"
                    },
                    {
                        "Type": "PreviousClosingBalance",
                        "Amount": {
                            "Amount": "600.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit"
                    }
                ]
            },
            {
                "Type": "RegularPeriodic",
                "AccountId": "30080098971337",
                "StartDateTime": "2017-08-01T00:00:00+00:00",
                "CreationDateTime": "2017-09-01T00:00:00+00:00",
                "EndDateTime": "2017-08-31T23:59:59+00:00",
                "StatementId": "8sfhke-sifhkeuf-97813",
                "StatementReference": "002",
                "StatementDescription": [
                    "August 2017 Statement",
                    "One Free Uber Ride"
                ],
                "StatementAmount": [
                    {
                        "Type": "ClosingBalance",
                        "Amount": {
                            "Amount": "400.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit"
                    },
                    {
                        "Type": "PreviousClosingBalance",
                        "Amount": {
                            "Amount": "600.00",
                            "Currency": "GBP"
                        },
                        "CreditDebitIndicator": "Credit"
                    }
                ]
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/statements/"
    },
    "Meta": {
        "TotalPages": 1
    }
}

GET /accounts/{AccountId}/transactions

The AISPs are able to retrieve the transaction resource for a specific AccountId. The AccountId is retrieved in the call to GET /accounts.

curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/accounts/<AccountId>/transactions \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k \
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Transaction": [
            {
                "Status": "Booked",
                "TransactionInformation": "Cash from Aubrey",
                "BookingDateTime": "2017-04-05T10:43:07+00:00",
                "AccountId": "30080012343456",
                "TransactionReference": "Ref 1",
                "BankTransactionCode": {
                    "SubCode": "DomesticCreditTransfer",
                    "Code": "ReceivedCreditTransfer"
                },
                "ProprietaryBankTransactionCode": {
                    "Issuer": "AlphaBank",
                    "Code": "Transfer"
                },
                "Amount": {
                    "Amount": "10.00",
                    "Currency": "GBP"
                },
                "ValueDateTime": "2017-04-05T10:45:22+00:00",
                "CreditDebitIndicator": "Credit",
                "Balance": {
                    "Type": "InterimBooked",
                    "Amount": {
                        "Amount": "230.00",
                        "Currency": "GBP"
                    },
                    "CreditDebitIndicator": "Credit"
                },
                "TransactionId": "123"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/accounts/30080012343456/transactions/"
    },
    "Meta": {
        "LastAvailableDateTime": "2017-12-03T00:00:00+00:00",
        "FirstAvailableDateTime": "2017-05-03T00:00:00+00:00",
        "TotalPages": 1
    }
}

GET /transactions

The AISPs are able to retrieve the transactions in bulk.

This will retrieve the transactions resources for all authorised accounts linked to the account request.


curl -X GET \
  https://<WSO2_OB_APIM_HOST>:8243/open-banking/v3.1/aisp/transactions \
  -H 'Authorization: Bearer <USER_ACCESS_TOKEN>' -k\
  -H 'Cache-Control: no-cache' \
  -H 'accept: application/json' \
  -H 'x-fapi-financial-id: open-bank'
{
    "Data": {
        "Transaction": [
            {
                "Status": "Booked",
                "TransactionInformation": "Cash from Aubrey",
                "BookingDateTime": "2017-04-05T10:43:07+00:00",
                "AccountId": "30080012343456",
                "TransactionReference": "Ref 1",
                "BankTransactionCode": {
                    "SubCode": "DomesticCreditTransfer",
                    "Code": "ReceivedCreditTransfer"
                },
                "ProprietaryBankTransactionCode": {
                    "Issuer": "AlphaBank",
                    "Code": "Transfer"
                },
                "Amount": {
                    "Amount": "10.00",
                    "Currency": "GBP"
                },
                "ValueDateTime": "2017-04-05T10:45:22+00:00",
                "CreditDebitIndicator": "Credit",
                "Balance": {
                    "Type": "InterimBooked",
                    "Amount": {
                        "Amount": "230.00",
                        "Currency": "GBP"
                    },
                    "CreditDebitIndicator": "Credit"
                },
                "TransactionId": "123"
            },
            {
                "Status": "Booked",
                "TransactionInformation": "Cash from Aubrey",
                "BookingDateTime": "2017-04-05T10:43:07+00:00",
                "AccountId": "30080098763459",
                "TransactionReference": "Ref 1",
                "BankTransactionCode": {
                    "SubCode": "DomesticCreditTransfer",
                    "Code": "ReceivedCreditTransfer"
                },
                "ProprietaryBankTransactionCode": {
                    "Issuer": "AlphaBank",
                    "Code": "Transfer"
                },
                "Amount": {
                    "Amount": "10.00",
                    "Currency": "GBP"
                },
                "ValueDateTime": "2017-04-05T10:45:22+00:00",
                "CreditDebitIndicator": "Credit",
                "Balance": {
                    "Type": "InterimBooked",
                    "Amount": {
                        "Amount": "230.00",
                        "Currency": "GBP"
                    },
                    "CreditDebitIndicator": "Credit"
                },
                "TransactionId": "123"
            },
            {
                "Status": "Booked",
                "TransactionInformation": "Cash from Aubrey",
                "BookingDateTime": "2017-04-05T10:43:07+00:00",
                "AccountId": "30080098971337",
                "TransactionReference": "Ref 1",
                "BankTransactionCode": {
                    "SubCode": "DomesticCreditTransfer",
                    "Code": "ReceivedCreditTransfer"
                },
                "ProprietaryBankTransactionCode": {
                    "Issuer": "AlphaBank",
                    "Code": "Transfer"
                },
                "Amount": {
                    "Amount": "10.00",
                    "Currency": "GBP"
                },
                "ValueDateTime": "2017-04-05T10:45:22+00:00",
                "CreditDebitIndicator": "Credit",
                "Balance": {
                    "Type": "InterimBooked",
                    "Amount": {
                        "Amount": "230.00",
                        "Currency": "GBP"
                    },
                    "CreditDebitIndicator": "Credit"
                },
                "TransactionId": "123"
            }
        ]
    },
    "Links": {
        "Self": "https://api.alphabank.com/open-banking/v3.1/transactions/"
    },
    "Meta": {
        "TotalPages": 1
    }
}



  • No labels