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

There are certain standards and requirements you need to adhere to when you offer open banking services as a PSD2 compliant organization. The Account Servicing Payment Service Providers (ASPSPs) are required to make their statistics available to respective national authorities and open banking authorities to monitor compliance with PSD2/RTS. In order to satisfy this, the WSO2 Open Banking solution offers data reporting feature.

The Data Reporting feature  gathers and monitors data in regard to the APIs invoked through the WSO2 Open Banking solution. This observes the following aspects.

  • Performance and availability 
        Understand and monitor the availability and performance of the supported APIs.
  • Adoption 
        Identify the effectiveness; which ASPSPs are being engaged more by TPPs as part of their ongoing activity.
  • Data volumetrics 
        The efficacy of the Open Banking standards as a part of ongoing standards management activity.

The WSO2 Open Banking Business Intelligence(OBBI) captures the data through WSO2 Open Banking API Manager(WSO2 OB APIM) and WSO2 Open Banking Key Manager(WSO2 OB KM). It processes and summarizes the data in a way that ASPSPs can generate their own reports and summaries.

Data Reporting captures the data in the following flows : 

  • API invocation data from the AISP and PISP flows

  • Authentication data through Strong Customer Authentication flow

  • Authorization data using the Authorization flow

  • Application registration data through the TPP onboarding process

WSO2 Open Banking captures the application registration data only during the Dynamic Client Registration process.

All the data are stored in two databases.  
  • The OB_REPORTING_DB database stores all the raw data related to API invocation,  authentication, authorization and application registration. The data stored in the database is not processed by any means, therefore the ASPSPs can use this database and summarize data according to their requirements. 

     Click here to see what is included in the OB_REPORTING_DB

    The OB_REPORTING_DB database contains the following tables.  

    • API_INVOCATION_RAW_DATA

      Stores data related to API requests. 


    • ACCOUNTS_RAW_DATA 

      Stores data related to the Account flow.


    • AUTHORISATION_RAW_DATA

      Stores data related to user consent authorization.

      AuthorizationRequired is a field that denotes the user is authenticated but not authorized/rejected.


    • APP_REG_RAW_DATA

      Stores data related to application registration.


    • AUTHENTICATION_RAW_DATA

      Stores user authentication data.

      AuthenticationRequired is a field that denotes the user is in a status where authentication is required, which means the user hasn’t tried authenticating.


    • FUNDS_CONFIRMATION_RAW_DATA 

      Stores data related to confirmation of funds requests. 


    • PAYMENTS_RAW_DATA

      Stores data related to payments.

  • The OB_REPORTING_SUMMARIZED_DB database stores summarized data of OB_REPORTING_DB database. The summarization contains information related to API invocation, consents, single and batch payment information, payment submission, etc. 

     Click here to see what is included in the OB_REPORTING_SUMMARIZED_DB database

    The OB_REPORTING_SUMMARIZED_DB database contains the following summarized data tables:  

    • AISP_VOLUMES
      Stores summarized details regarding the number of AISP applications registered/deregistered.

    • PISP_VOLUMES
      Stores summarized details regarding the number of PISP applications registered/deregistered.

    • CBPII_VOLUMES
      Stores summarized details regarding the number of CBPII applications registered/deregistered.

    • BACS_INTERNATIONAL
      Stores summarized details of BACS international payments.

    • BACS_REQUEST_STATUS
      Stores summarized status details of the BACS payment requests.

    • FAILED_BACS_REQUESTS
      Stores summarized details of failed BACS requests.

    • CHAPS_INTERNATIONAL
      Stores summarized details of CHAPS international payments.

    • CHAPS_REQUEST_STATUS
      Stores summarized status details of the CHAPS payment requests.

    • FAILED_CHAPS_REQUESTS
      Stores summarized details of failed CHAPS requests.

    • PA_CORE
      Stores summarized details regarding performance and availability for core hours (06:00-00:00).

    • PA_NON_CORE
      Stores  summarized details regarding  performance and availability for non-core hours (00:00-06:00).

    • RESPONSE_OUTLIER
      Stores summarized response details of requests.

    • PAYMENT_INITIATION_DETAILS
      Stores summarized payment initiation details per second.

    • FILE_PAYMENT
      Stores summarized details regarding the number of payments per payment type in (files) file payment requests.

    • DIFFERENT_TPPS
      Stores summarized details regarding the distinct TPP count.

    • AUTHENTICATION_ATTEMPTED
      Stores summarized details regarding the number of attempts to authenticate.

    • AUTHENTICATION_SUCCESSFUL
      Stores summarized details regarding the number of successful PSU authentications.

    • AUTHORISATION_SUMMARY
      Stores summarized counts of authorisation statuses (Authorised/ Rejected).

    • MULTI_AUTH_DETAILS
      Stores the summarized count of Authorised/Rejected statuses in scenarios where multiple authorising is performed.
    • CONFIRMATION_DETAILS
      Stores the summarized count of AuthorisationRequired,Authorised and Rejected statuses.
    • CONSENT_REQ_AUTHENTICATION
      Stores the summarized count of PSU consents that require authentication.
    • STATUS_CODE_SUMMARY
      Stores the summarized number of API calls for a given endpoint per status code per day.

    • PSU_DETAILS
      A raw data table that stores PSU details and is used to identify the PSUs.
    • FIRST_TIME_USERS
      A raw data table that stores details of PSUs that use a PIS service for the first time.

    • ACCOUNT_RAW_DATA_FOR_PCA_BCA
      A summarized raw data table that stores the account IDs to identify the Personal Current Account (PCA) or Bank Customer Account (BCA).

    • FUNDS_RAW_DATA_FOR_PCA_BCA
      A summarized raw data table that stores the account IDs to identify the PCA or BCA.

    • PAYMENT_RAW_DATA_FOR_PCA_BCA
      A summarized raw data table that stores the account IDs to identify the PCA or BCA.


Generating reports using summarized data

Using the OB_REPORTING_SUMMARIZED_DB you can generate the following reports according to the OBIE templates:

  • Template 1 - P & A (OBIE)
  • Template 2 - Response Outliers (OBIE)
  • Template 3 - Auth Efficacy (OBIE)
  • Template 4 - PSU Adoption (OBIE)
  • Template 5 - Payments Adoption (OBIE)
  • Template 6 - TPP Volumes (OBIE)
  • Template 7 - Daily Volumes (OBIE)
 Click here to see more details

Using the table in the OB_REPORTING_SUMMARIZED_DB database, the following report templates in OBIE can be generated.

Template 1 - P & A (OBIE)
Required data point nameTable to referHow to capture data
Report DateThe respective table you get the date fromGet the year-month-date values from the table
ASPSP Brand IDN/AA fixed value for a bank.
Endpoint IDENDPOINT_DETAILS

Download the SQL script from here to create the ENDPOINT_DETAILS in your MS SQL database.

A fixed value. Get the resource from the respective table and map that with the ENDPOINT_ID table.

Core/Non Core HoursEither Core or Non-CoreThis column should be either CORE or NON-CORE.
Up TimeN/ANeed to get from an external tool.
Planned DowntimeN/AValue needs to be decided by the bank.
Unplanned DowntimeN/ANeed to get from an external tool.
Median TTLB Response TimePA_CORE or PA_NON_COREGet the AVG_TTLB value from the relevant table per day per time per endpoint.
Median TTFB Response TimePA_CORE or PA_NON_COREGet the AVG_TTFB value from the relevant table per day per time per endpoint.
Median Response Payload SizePA_CORE or PA_NON_COREGet the AVG_RESPONSE_PAYLOAD_SIZE value from the relevant table per day per time per endpoint.
Max Payment Initiations Per Second (PIPS)PAYMENT_INITIATION_DETAILSGet the payment initiations per second per day.
Template 2 - Response Outliers (OBIE)
Required data point nameTable to refer How to capture data
Report DateThe respective table you get the date fromGet the year-month-date values from the table.
TimeThe respective table that you get the time fromGet the hour-minute-second values from the table.
ASPSP Brand IDN/AA fixed value for a bank.
Endpoint IDENDPOINT_DETAILSA fixed value. Get the resource from the respective table and map that with ENDPOINT_ID table.
TTLB Response TimeRESPONSE_OUTLIERGet the TTLB value per day per time per endpoint.
TTFB Response TimeRESPONSE_OUTLIERGet the TTFB value per day per time per endpoint.
TPP Application IDRESPONSE_OUTLIERGet APP_SOFTWARE_ID value per day per time per endpoint.
Response Payload SizeRESPONSE_OUTLIERGet RESPONSE_PAYLOAD_SIZE value per day per time per endpoint.
Template 3 - Auth Efficacy (OBIE)
Required data point nameTable to referHow to capture data
MonthThe respective table you get the month fromGet the year-month values from the table.
ASPSP Brand IDN/AA fixed value for a bank.
Authentication TypeThe respective tablesEach table contains a column with this data.
API TypeThe respective tablesEach table contains a column with this data.
API Request TPP ChannelThe respective tablesEach table contains a column with this data.
ASPSP Authentication ChannelN/AThe value should be web.
Consents Requiring AuthenticationCONSENT_REQ_AUTHENTICATIONGet the TOTAL_CONSENT_REQ_AUTHENTICATION value from the column.
Authentications Attempted by PSUsAUTHENTICATION_ATTEMPTEDGet the TOTAL_ATTEMPTS_TO_AUTHENTICATE value from the column.
Authentications Abandoned by PSUs
Get this data by deducting the value of TOTAL_ATTEMPTS_TO_AUTHENTICATE from the value of TOTAL_CONSENT_REQ_AUTHENTICATION.
Authentications SucceededAUTHENTICATION_SUCCESSFULGet the SUCCESSFUL_AUTHENTICATIONS value from the column.
Authentications Failed
Get this data by deducting the value of SUCCESSFUL_ AUTHENTICATIONS from the value of TOTAL_ATTEMPTS_TO_AUTHENTICATE.
Confirmations RequiredCONFIRMATION_DETAILS Get the AuthorisationRequired count per month.
Confirmations Accepted by PSUsCONFIRMATION_DETAILS Get the Authorised count per month.
Confirmations Rejected by PSUsCONFIRMATION_DETAILS Get the Rejected count per month.
Template 4 - PSU Adoption (OBIE)
Required data point nameTable to referHow to capture data
ReportMonthThe respective table you get the month fromGet the year-month values from the table.
ASPSP Brand IDN/AA fixed value for a bank.
Retail/Business PSUsPSU_DETAILS, FIRST_TIME_USERS

The retail and business PSU details are available in the core banking system. The provided raw data tables include the PSU_IDs that can be used.

PSUs used AIS Services for the first timeFIRST_TIME_USERS

The retail and business PSU details are available in the core banking system. The provided raw data tables include the PSU_IDs that used the AIS services for the first time. You can use the PSU_ID and get the PSU count that used the services for the first time in a particular month.

PSUs used PIS Services for the first timeFIRST_TIME_USERSThe retail and business PSU details are available in the core banking system. The provided raw data tables include the PSU_IDs that used  the PIS services for the first time. You can use the PSU_ID and get the PSU count that used the services for the first time in a particular month.
Total PSUs used AIS ServicesPSU_DETAILSThe retail and business PSU details are available in the core banking system. The provided raw data tables include the PSU_IDs that used  the AIS services for the first time. You can use the PSU_ID and get the total PSU count that used the services for the first time in a particular month.
Total PSUs used PIS ServicesPSU_DETAILSThe retail and business PSU details are available in the core banking system. The provided raw data tables include the PSU_IDs that used  the PIS services for the first time. You can use the PSU_ID and get the total PSU count that used the services for the first time in a particular month.
Unique PSUs used both AIS and PIS Services for the first timeFIRST_TIME_USERS

The retail and business PSU details are available in the core banking system. The provided raw data tables include the PSU_IDs that used  both AIS and PIS services for the first time. You can use the PSU_ID and get the PSU count that used the services for the first time in a particular month.

Total unique PSUs used both AIS and PIS ServicesPSU_DETAILSThe retail and business PSU details are available in the core banking system. The provided raw data tables include the PSU_IDs that used  both AIS and PIS services for the first time. You can use the PSU_ID and get the total PSU count that used the services for the first time in a particular month.
Template 5 - Payments Adoption (OBIE)
Required data point nameTable to refer

How to capture data

ReportMonthThe respective table you get the month fromGet the year-month values from the table.
ASPSP Brand IDN/AA fixed value for a bank.
Payment TypeEither UK.OBIE.BACS or UK.OBIE.CHAPSThis column value should be either UK.OBIE.BACS or UK.OBIE.CHAPS.
PSU Authorisations for single Domestic Paymentsor CHAPS_REQUEST_STATUSSelect the REQUEST_COUNT from relevant the payment type table where PAYMENT_TYPE = '/domestic-payment-consents' and AUTHORISATION_STATUS = 'Authorised'.
Successful single Domestic PaymentsBACS_REQUEST_STATUS or CHAPS_REQUEST_STATUSSelect the REQUEST_COUNT from the relevant payment type table where PAYMENT_TYPE = '/domestic-payment' and (AUTHORISATION_STATUS = 'AcceptedSettlementInProgress' or AUTHORISATION_STATUS = 'AcceptedSettlementCompleted').
Single Domestic Payments failed for Business ReasonsFAILED_BACS_REQUESTS or FAILED_CHAPS_REQUESTSGet the sum of REQUEST_COUNT from the relevant payment type table where STATUS_CODE LIKE '%4%'.
Single Domestic Payments failed for Technical ReasonsFAILED_BACS_REQUESTS or FAILED_CHAPS_REQUESTSGet the REQUEST_COUNT from the relevant payment type table where STATUS_CODE = 500.
Single Domestic Payments RejectedBACS_REQUEST_STATUS or CHAPS_REQUEST_STATUSSelect the REQUEST_COUNT from the relevant payment type table where (PAYMENT_TYPE = '/domestic-payment-consents' or PAYMENT_TYPE = '/domestic-payments') and AUTHORISATION_STATUS = 'Rejected'.
Total payments included in Bulk/Batch filesFILE_PAYMENTGet the TOTAL_PAYMENTS for the relevant payment type where LOCAL_INSTRUMENT = Payment Type.
Successful International payments involving currency conversionBACS_INTERNATIONAL or CHAPSS_INTERNATIONAL

The currency conversion details are available in the core banking system. The given tables provide all the successful international-payment details with the consent id for each payment type.

Template 6 - TPP Volumes (OBIE)
Required data point name Table to refer

How to capture data

ReportMonthThe respective table you get the month fromGet the year-month values from the table.
ASPSP Brand IDN/AA fixed value for a bank.
Total AISPs Registered (at 1st of month)
Zero for the starting month and for the following months the cumulative monthly number of AISPs registered of the last month.
AISP AdditionsAISP_VOLUMESGet data from the AISP_COUNT column where STATUS='Registered'
AISP DeregistrationsAISP_VOLUMESGet data from the AISP_COUNT column where STATUS='Removed' .
Cumulative Monthly number of AISPs

Use the following formula:

(Total no of AISPs registered (at 1st of the month) + AISP Additions - AISP deregistrations)

Total PISPs Registered (at 1st of month)
Zero for the starting month and for the following months the cumulative monthly number of PISPs registered of last month.
PISP AdditionsPISP_VOLUMESGet data from the PISP_COUNT column where STATUS='Registered'.
PISP DeregistrationsPISP_VOLUMESGet data from the PISP_COUNT column where STATUS='Removed'.
Cumulative Monthly number of PISPs

Use the following formula:

(Total no of PISPs registered (at 1st of month) + PISP Additions - PISP reregistrations)

Total CBPIIs Registered
Zero for starting the month and for the following months the cumulative monthly number of CBPIIs registered of last month.
CBPII AdditionsCBPII_VOLUMESGet data from CBPII_COUNT column where STATUS='Registered'.
CBPII DeregistrationsCBPII_VOLUMESGet data from CBPII_COUNT column where STATUS='Removed'.
Cumulative Monthly number of CBPIIs

Use the following formula:

(Total CBPIIS Registered (at 1st of the month) + CBPII Additions - CBPII Deregistrations)

Template 7 - Daily Volumes (OBIE)
Required data point name

Table to refer

How to capture data
ReportDateThe respective table you get the data fromGet the year-month-date values from the table.
ASPSP Brand IDN/AA fixed value for a bank.
Endpoint IDENDPOINT_DETAILS

Download the SQL script from here to create the ENDPOINT_DETAILS in your MS SQL database.

This value is a fixed value. you can get the resource from the respective table and map that with ENDPOINT_ID table.

PCA API CallsACCOUNT_RAW_DATA_FOR_PCA_BCA, PAYMENT_RAW_DATA_FOR_PCA_BCA, FUNDS_RAW_DATA_FOR_PCA_BCA

The PCA/BCA details are available in the core banking system. The provided raw data tables include the ACCOUNT_ID of accounts that can be used to identify whether it's a PCA or BCA.

BCA API CallsACCOUNT_RAW_DATA_FOR_PCA_BCA, PAYMENT_RAW_DATA_FOR_PCA_BCA, FUNDS_RAW_DATA_FOR_PCA_BCAThe PCA/BCA details are available in the core banking system. The provided raw data tables include the ACCOUNT_ID of accounts that can be used to identify whether it's a PCA or BCA.
Successful API Calls (200, 201 or 204 codes)STATUS_CODE_SUMMERY

The table contains the volume of API calls per status code per endpoint and per date. Filter the STATUS_CODE values of 200,201 and 204 per endpoint per day and get the sum of those.

Failed API Calls Business Reasons (4xx Codes)STATUS_CODE_SUMMERY

The table contains the  volume of API calls per status code per endpoint and per date. Filter the STATUS_CODE values of 4xx per endpoint per day and get the sum of those.

Failed API Calls Technical Reasons (5xx Codes)STATUS_CODE_SUMMERY and AUTHORISATION_SUMMERY

The table contains the  volume of API calls per status code per endpoint and per date. Filter the STATUS_CODE values of 5xx per endpoint per day and get the sum of those.

API Calls Rejected StatusSTATUS_CODE_SUMMERY

Get the sum of the above 2 values (Failed API Calls Business Reasons (4xx Codes) and Failed API Calls Technical Reasons (5xx Codes)) and add the value of Rejected statuses per endpoint per day from the AUTHORIZATION_SUMMERY table.

TPPs Calling APIsDIFFERENT_TPPSThe count of the DISTINCT_TPPS per elected resource per day.
API Calls Not Authorised by PSUAUTHORISATION_SUMMERYThe count of the Rejected status per endpoint per day.
API Calls Authorised but Not ConsumedAUTHORISATION_SUMMERY

Get the count of Authorised status per endpoint per day and deduct the count of AcceptedStatementInProcess status per endpoint per day.


Multi Auth API Calls SuccessfulMULTI_AUTH_DETAILS

Get the count of Authorised statuses against /domestic-payment-consent per day.

Multi Auth API Calls FailedMULTI_AUTH_DETAILSGet the count of Rejected statuses against /domestic-payment-consent per day.




Configuring Data Reporting

The following sections explain how to configure Data Reporting:

Enabling Data Reporting

Follow the steps below to enable Data Reporting. 

  1. Open  <WSO2_OB_APIM_HOME>/repository/conf/finance/open-banking.xml and  <WSO2_OB_KM_HOME>/repository/conf/finance/open-banking.xml  files.
  2. Under the <DataPublishing> sub-element set the <Enabled> parameter to true to enable the feature. 
  3. Replace the <WSO2_OB_BI_HOST> placeholder with the hostname of your WSO2 OB BI server and configure the other parameters accordingly.  
<BIServer>
   <DataPublishing>
      <!-- Include all configurations related to Data publishing -->
      <!-- Enable data publishing in WSO2 Open Banking-->
      <Enabled>true</Enabled>
      <!-- Server URL of the remote BI server used to collect statistics. Must
            be specified in protocol://hostname:port/ format. -->
      <ServerURL>{tcp://<WSO2_OB_BI_HOST>:7612}</ServerURL>
      <!-- Administrator username to login to the BI server for data publishing. -->
      <Username>[email protected]@carbon.super</Username>
      <!-- Administrator password to login to the BI server for data publishing. -->
      <Password>wso2123</Password>
   </DataPublishing>
</BIServer>



Configuring Open Banking Business Intelligence

  1. Configuring databases

    The following databases store raw and summarized data. Make sure they are available in your database servers.

    • openbank_ob_reporting_statsdb

    • openbank_ob_reporting_summarizeddb

  2. Configuring datasources
    • Modify the OB_REPORTING_DB and OB_REPORTING_SUMMARIZED_DB datasources in <WSO2_OB_BI_HOME>/conf/worker/deployment.yaml file.
    • Update  jdbcUrl username password  and  driverClassName  in the datasource entries with your database configurations. A sample is given below:
    - name: OB_REPORTING_DB
      description: The datasource used to store statistics for OB Reporting module
      jndiConfig:
        name: jdbc/OB_REPORTING_DB
      definition:
        type: RDBMS
        configuration:
          jdbcUrl: 'jdbc:mysql://localhost:3306/openbank_ob_reporting_statsdb?autoReconnect=true&useSSL=false'
          username: 'root'
          password: 'root'
          driverClassName: 'com.mysql.jdbc.Driver'
          maxPoolSize: 20
          idleTimeout: 60000
          connectionTestQuery: SELECT 1
          # Use below for oracle database
          # connectionTestQuery: SELECT 1 FROM DUAL
          validationTimeout: 30000
          isAutoCommit: false
     
    - name: OB_REPORTING_SUMMARIZED_DB
      description: The datasource used to store statistics for OB Reporting module
      jndiConfig:
        name: jdbc/OB_REPORTING_SUMMARIZED_DB
      definition:
        type: RDBMS
        configuration:
          jdbcUrl: 'jdbc:mysql://localhost:3306/openbank_ob_reporting_summarizeddb?autoReconnect=true&useSSL=false'
          username: 'root'
          password: 'root'
          driverClassName: 'com.mysql.jdbc.Driver'
          maxPoolSize: 20
          idleTimeout: 60000
          connectionTestQuery: SELECT 1
          # Use below for oracle database
          # connectionTestQuery: SELECT 1 FROM DUAL
          validationTimeout: 30000
          isAutoCommit: false

Data Reporting API

If you're using a customised consent authentication web application, you may use the Data Reporting API to publish events from the application. Invoke the Data Reporting API in all the relevant places to publish the PSU and authorisation data to the reporting databases.

In the following scenarios, events are captured using the consent authorisation web app:

  • The user visiting the consent page
  • After the user authorising/denying the consent


For sample requests, see Data Reporting API.

  • No labels