BCA API Specification - v2.1.1

Version Control

Version
Date
Author
Comments
2.0.018 Jul 2017Open Banking Open Data API Team

This is the baseline version.

2.1.021 Aug 2017Open Banking Open Data API Team

This release incorporates all known issues with 2.0.0 up to 18 Aug 2017. Please see the release notes for details.

2.1.112 Oct 2017Open Banking Open Data API Team

For BCA, this release is identical to v2.1.0 API. Please see the 2.1.0  release notes for details. The MIG is from v2.2  (as recommended by PMG)

Overview

This specification includes all relevant artefacts for the Open Data Business Current Account (BCA) API Specification.

Currently, price comparison websites have to obtain their BCA product data either via bank proprietary APIs, via information collected by dedicated data capture agencies or via "screen scraping" (i.e. capturing product web page information and writing scripts to extract relevant data). This work is complex and prone to error, so having a standard API would make the data capture side much easier and allow more third party providers to provide applications that could target particular consumer markets.

This endpoint can contain multiple brands owned by a particular banking group. Each brand can own multiple BCA products.

BCA

This section covers BCA attributes that will change only under rare circumstances (see CoreProduct section for additional attributes that will be updated regularly). 

The following information can be provided:-

  • Product Name i.e. the name marketed to the consumers.
  • Identification is the unique id created by the financial institution to internally define the product
  • Segment - allows specification of the type of product e.g. basic, regular, premium

MarketingState

Within our design, we have a concept of a "marketing state" for the product. This concept is required because for any "On Sale" BCA product:-

  1. The BCA may provide a different offering to the account holder the longer that they hold a particular BCA - covered by StateTenureLength & StateTenurePeriod in the example below.
  2. The financial institution can change any of the BCA attributes that are marketed over time - covered by FirstMarketedDate and LastMarketedDate in the example below.

We'll illustrate this with a complex example. 

CMA9Bank has a BCA product that was first advertised on 1/1/2017 and has the following features currently:-

  1. If the accountholder takes the product, they are offered a promotional interest rate of 0.5% for 1st 9 months, then 0.2% for next 12 months and then it reverts back to the standard variable rate (e.g. 0%).

The original marketing states can be shown as follows:-

Identification

PredecessorID

MarketingState

FirstMarketedDate

 LastMarketedDate

StateTenureLength

StateTenurePeriod

Notes 

CP1
Promotional1/1/201731/12/9999 9 MonthWhen an accountholder opens the BCA, they will receive an initial promotional offer lasting 9 months. Attached to this state will be the original initial promotional interest rate information.
CP2CP1Promotional1/1/201731/12/9999  12 Month9 months after the account has been opened, the customer will receive a 2nd promotional offer lasting 12 months
CR1CP2Regular1/1/201731/12/9999   After the 2nd promotional period has expired, the accountholder will be moved to the regular interest rate.


On 17th July, CMA9Bank are going to change the offer, so that only 0.3% is paid in the 1st 9 months. The marketing states on 16th July will look like this:-

Identification

PredecessorID

MarketingState

FirstMarketedDate

 LastMarketedDate

StateTenureLength 

StateTenurePeriod

Notes 

CP1
Promotional1/1/2017 16/7/2017 9 MonthWhen an accountholder opens the BCA, they will receive an initial promotional offer lasting 9 months. Attached to this state will be the original initial promotional interest rate information.
CP2CP1Promotional1/1/201731/12/9999  12 Month9 months after the account has been opened, the customer will receive a 2nd promotional offer lasting 12 months
CR1CP2Regular1/1/201731/12/9999   After the 2nd promotional period has expired, the accountholder will be moved to the regular interest rate.
CP3
Promotional 17/7/2017  31/12/9999 9Month When an accountholder opens the BCA, they will receive an initial promotional offer lasting 9 months. Attached to this, will be the revised initial promotional offer interest rate information.


And on the 17th July, the marketing states will look like this:-

Identification

PredecessorID

MarketingState

FirstMarketedDate

LastMarketedDate

StateTenureLength 

StateTenurePeriod

Notes 

CP2CP3Promotional1/1/201731/12/9999  12 Month9 months after the account has been opened, the customer will receive a 2nd promotional offer lasting 12 months
CR1CP2Regular1/1/201731/12/9999   After the 2nd promotional period has expired, the accountholder will be moved to the regular interest rate.
CP3 Promotional 17/7/2017  31/12/9999 9Month When an accountholder opens the BCA, they will receive an initial promotional offer lasting 9 months. Attached to this, will be the revised initial promotional offer interest rate information.

Notes:

  1. PredecessorID is used to sequence the creditinterest states offered to the customer when they take out the BCA, it does not record change history.
  2. FirstMarketedDate and LastMarkedDate cover the period when the particular marketing state was advertised to the customer.
  3. CMA9 Banks only have to provide information for current (and known future, if they wish) marketing states. There is no open data requirement to provide an audit history of all marketing states that ever applied to the BCA. When the future marketing state becomes the current marketing state, the original marketing state information no longer needs to be published.
  4. When CP1 Marketing state is replaced by CP3 Marketing state, the PredecessorID in CP2 will also need to be updated to point to CP3, as shown.
  5. The Identification column is simply for internal bank use. The ID column is required so that we can sequence states.

Core Product

This sections includes information that can change relatively often. Information to be provided includes:-

  • Product URL allows a link to the financial institution's website where more detail about the product can be found
  • URL to the product's terms & conditions
  • Sales Access Channels cover all of the channels by which a customer can be sold a BCA 
  • Servicing Access Channels cover all of the channels by which a customer can receive service for their BCA. Note: This covers servicing of all aspects of the BCA. Some aspects may not be serviceable via certain channels.
  • MonthlyCharge covers any monthly servicing charge that a financial institution may make to a BCA accountholder

Credit Interest

In this section, information about the interest rates that are payable to the consumer are listed. Interest rates are typically standard variable rates, with rates potentially changing many times during the course of the products. In addition to the 'Regular' standard variable rates, some BCA products also provide for more attractive 'Promotion' interest rates which are fixed for a relatively short duration. (see MarketingState section above as to how to represent these). 

Another feature of interest rates is that certain BCA products will pay more attractive rates, as the amount deposited and maintained in the account increases.

This section has, therefore, been designed to allow the implementer to provide whole and tiered interest rates.

Overdraft/Borrowing

This section allows information to be provided about whole and tiered overdrafts as well as any overdraft/borrowing related fees/charges. Common borrowing charges include:-

  1. Arranged and Unarranged overdraft usage fees
  2. Fees for exceeding an agreed credit limit
  3. Fees where payments are returned due to there being no agreed credit facility available.

Eligibility

In this section, criteria such as residency and trading history restrictions that are necessary for opening an account are provided. Note eligibility criteria for features & benefits are treated in that section. 

Features & Benefits

In this section, information about any inherent product features or value-added benefits (whether they're charged or not) can be captured.

Benefits can also be grouped together e.g. if a package of benefits is supplied. For any benefits group, benefit details may be individually added or notes simply added to the benefits group. 

For a benefits group or for individual benefits, any eligibility criteria required to obtain that benefit can be specified as notes.

Other Fees & Charges 

Key Fees & Charges that a customer has to pay can be specified in the Core Product,  Overdraft/Borrowing and Features & Benefits sections (see above).

The long tail of additional fees & charges that are not associated to either of those 2 areas can be specified in this section.

Details as to any capping (i.e. maximum amount that can be charged to a customer for a particular period) for any fee/charge can also be specified in this section.

Specification

The following UML Class Diagram provides the hierarchical structure of the message in a graphical form, which is easier to digest.


  • Data Dictionary - provides detailed descriptions for each field in the message specification along with the associated code lists, constraints and other technical details such as cardinality, any pattern constraints, min, max length etc.
  • Swagger - the API specification written using the Swagger API specification format.

Compliance Report

Message Implementation Guide

Purpose

The message implementation guide (MIG) is designed to assist the implementers of the messaging specfication by providing worked examples as to how the message fields should be completed in different scenarios.

The intention is that this will better ensure consistency. This guide should be read alongside the data dictionary which provides fuller information about the rules, constraints and guidelines that should be adhered to when populating the fields.

We are choosing different accounts based on how fully they test each section of the design.

OtherFeesAndCharges isn’t covered by the use cases due to these currently being bank propriatary fees/charged and not standardised currently. Key standardised Fees and Charges covering overdraft and benefits are covered in the relevant examples stated above, however.

Format Notation

The format that we use in this document for field value assignment is:-

[] enclose a set of field values.

Where there are multiple records for a particular field, we depict this as [<record 1 value1>,< record 1 value2>…<recordn valuen>], whilst where we are showing that there is 1 field value in 1 record, and another field value in a 2nd record, I depict this as [<record1 value1>],[<record 2 value 1>],[<record 3 value 3>]

, seperates individual field values within a field value set.

“ surrounds a text or date field value.


Implementation Notes

Before implementing the message standard, it is very useful browsing the current market leading price comparison websites (e.g. http://www.knowyourmoney.co.uk/business-current-accounts/, http://www.moneysupermarket.com/current-accounts/business-bank-accounts/  to understand how implementation of our standard by the CMA9 banks would help to more easily facilitate provision of information used on those sites.

Currently, price comparison websites have to obtain their BCA product data either via bank proprietary APIs, via information collected by dedicated data capture agencies or via "screen scraping" (i.e. capturing product web page information and writing scripts to extract relevant data). This work is complex and prone to error, so having a standard API would make the data capture side much easier and allow more third party providers to provide applications that could target particular consumer markets.


 BCA v2.0 Top Level Design

Section NumberField NameCardinalityValues
1BrandName1..1"Barclays"
2Name1..1"Mixed Payments Plan"
2Identification1..1"MPP"
2Segment(Enumeration: OB_BCAProductSegment1Code) 1..*"Business"
 How I can publish “Startup” or “Switching” incentives?

Example: HSBC Start Up Account

Free banking for 18 months when you start your business with HSBC. After your free business banking period, we'll give you a fixed price of £5.50 a month for 12 months. When your fixed price period ends you’ll move onto the tariff that you choose when you open your account and you’ll pay an account maintenance fee of £5.50 per month plus charges depending on the services you use. 

Section NumberField NameCardinalityValue(s)
1

BrandName

1..1 “HSBC UK”
2

Name M


1..1“HSBC Startup Account”
2Identification 1..1“STARTUPACCT1T”
2Segment(Enumeration OB_BCAProductSegment1Code) 1..* “Startup”
3

Identification

1..1[“P1”][“P2”][“R2”]
3PredecessorID 0..1[][“P1”][“P2”]
3MarketingState (Enumeration: OB_MarketingState1Code) 1..1 [“Promotional”][“Promotional”][“Regular”]
3FirstMarketedDate 0..1[“1/1/1900”],[“1/1/1900”], [“1/1/1900”]
3LastMarketedDate 0..1[“31/12/9999”],[“31/12/9999”], [“31/12/9999”]
3StateTenureLength 0..1[18][12][]
3StateTenurePeriod (Enumeration: OB_Period1Code)0..1[“Month”][“Month”][]
3Notes0..*[“Free banking for 18 months when you start your business with HSBC”][“After your free business banking period, we'll give you a fixed price of £5.50 a month for 12 months.”][“When your fixed price period ends you’ll move onto the tariff that you choose when you open your account and you’ll pay an account maintenance fee of £5.50 per month plus charges depending on the services you use.”]
 How I can supply fixed and variable core product details?

Example: Bank of Scotland’s Islamic Business Account Start-up

For new businesses with a turnover up to £1 million, our Business Current Account includes:

  • 18 months' free day-to-day business banking*
  • Simple pricing with free electronic payments
  • Business support available by phone, in branch or through online guides
Section NumberField NameCardinalityValue(s)

1

BrandName 1..1 “Bank of Scotland”
2

Name

1..1”Islamic Business Account Start-up”
2Identification  1..1” BRBB_BCA_007”
2Segment(Enumeration OB_BCAProductSegment1Code)  1..* [“Religious”,”Startup”]
3

Identification 

1..1 [ “P1”][“R1”]
3MarketingState (Enumeration: OB_MarketingState1Code)1..1 [“Promotional”][”Regular”]
3PredecessorID0..1 [],[“P1”]
3FirstMarketedDate 0..1[“1/1/1990”][“1/1/1990”]
3LastMarketedDate   0..1[“31/12/9999”][“31/12/9999”]
3StateTenureLength 0..1[18][]
3StateTenurePeriod (Enumeration: OB_Period1Code) 0..1 [“Month”][]
3Notes

4

ProductURL

1..1http://business.bankofscotland.co.uk/0-1m-turnover/business-accounts/
4ProductDescription

4TcsAndCsURL1..1http://business.bankofscotland.co.uk/business-home/rates-and-charges/terms-and-conditions/shared/BoS_BB62566_300521AP_0116_V1_Web.pdf
4SalesAccessChannels (Enumeration: OB_SalesAccessChannels1Code) 1..*[“Branch”, “Online”,]
4ServicingAccessChannels (Enumeration: OB_ServicingAccessChannels1Code)1..*[“Branch”, “Online”, “Phone”, “MobileApps”, “Post”]
4MonthlyCharge

 How can I represent a business overdraft fees?

Example: Bank of Ireland (Northern Ireland)

  • Lending Fees (including overdraft)
  • Lending Set-up Fee - Negotiable (min £100.00)
  • Temporary Overdraft - 1% (min £100.00)
  • Annual Overdraft Fee - 0.5% ( min £50.00)
Section NumberField NameCardinalityValue(s)
2

FeeType (Enumeration:OB_OverdraftFeeType1Code)

1..*[“OverdraftSetup”][“TempOverdraft”][“OverdraftRenewal”]
2OtherFeeType (OtherCodeType)

2MinMaxType (Enumeration: OB_MinMaxType1Code) 1..1[“Minimum”][“Minimum”][“Minimum”]
2FeeCapOccurrence

2FeeCapAmount 0..1[100.00][100.00][50.00]
2CappingPeriod (Enumeration:OB_Period1Code)

2Notes

1

FeeType(Enumeration:OB_OverdraftFeeType1Code)

1..1[“OverdraftSetup”][“TempOverdraft”][“OverdraftRenewal”]
1OtherFeeType (OtherCodeType)

1NegotiableIndicator 0..1[True][][]
1OverdraftControlIndicator

1IncrementalBorrowingAmount

1FeeAmount

1FeeRate 0..1[][1][0.5]
1FeeRateType (Enumeration: OB_InterestRateType1Code)

1OtherFeeRateType (OtherCodeType)

1

ApplicationFrequency (Enumeration: OB_FeeFrequency1Code)

1..1[“OnOpening”][“Monthly”][“OnAnniversary”]
1OtherApplicationFrequency (OtherCodeType)

1

CalculationFrequency (Enumeration: OB_FeeFrequency1Code) 

1..1[“OnOpening”][“Daily”][“OnAnniversary”]
1OtherCalculationFrequency (OtherCodeType)

1Notes

 How do I represent an introductory offer?


(1) Marketing State


Example:

Santander Business Current Account Start Up

Small to medium sized businesses (turnover <£2.5m) in the first year of trading, has up to two directors, owners (shareholders) or partners and this is its first Business Current Account with us, you could be eligible for 12 months free business banking


Notes:
1.It’s preferable to provide default values  for dates in order to make it easier to query which marketing states are operative on a particular date.
2.Marketing state is only intended to cover the current and near term future changes in promotional and regular offers, which need to be presented to the customer when marketed. It is not intended to provide a change history going back in time.

Section NumberField NameCardinalityValue(s)
1

Identification  

1..1[ “P1”][“R1”]
1MarketingState (Enumeration: OB_MarketingState1Code) 1..1[“Promotional”][”Regular”]
1PredecessorID: 0..1[],[“P1”]
1FirstMarketedDate0..1[“1/1/1990”][“1/1/1990”]
1LastMarketedDate   0..1[“31/12/9999”][“31/12/9999”]
1StateTenureLength 0..1[“12”][]
1StateTenurePeriod (Enumeration: OB_Period1Code)  0..1[“Month”][]
1Notes0..*[“Small to medium sized businesses (turnover <£2.5m) in the first year of trading, has up to two directors, owners (shareholders) or partners and this is its first Business Current Account with us, you could be eligible for 12 months free business banking”]
 How can I show whole credit interest rates?

Example:

Lloyds School Banking Account

  • 0.05% fixed interest
  • No interest-related eligibility criteria specified.
Section NumberField NameCardinalityValue(s)
1

CalculationMethod (Enumeration: OB_InterestCalculationMethod1Code)

0..1“Compound”
1Destination(Enumeration: OB_InterestDestination1Code)

1TierBandMethod (Enumeration: OB_TierBandType1Code) 1..1“Whole”
1Notes 0..* “£1 minimum balance”
2

Identification



2TierValueMinimum 1..11
2TierValueMaximum

2CalculationFrequency (Enumeration: OB_Frequency1Code) 1..1“Monthly”
2OtherCalculationFrequency

2ApplicationFrequency(Enumeration: OB_Frequency1Code) 1..1“Monthly”
2OtherApplicationFrequency

2DepositInterestAppliedCoverage (Enumeration: OB_TierBandType1Code) 0..1“Whole”
2FixedVariableInterestRateType(Enumeration: OB_InterestFixedVariableType1Code) 1..1“Fixed”
2AER1..10.05
2BankInterestRateType (Enumeration: OB_InterestType1Code) 0..1“Gross”
2OtherBankInterestType

2BankInterestRate

2Notes

 What if I wish to restrict who can apply for the account?

Example: Santander Business Account 2Year Start Up

Eligibility requirements

  • Annual Turnover <£2.5m
  • Has up to 2 directors, owners (shareholders) or partners
  • 1st BCA
Section NumberField NameCardinalityValue(s)
1

Name

1..1[“1st BCA”]
1Description

1Type (Enumeration: OB_BCAEligibilityType1Code)1..1[“SoleUKAccount”]
1OtherType (OtherCodeType)

1Amount

1Indicator

1Textual

1Period (Enumeration: OB_Period1Code)

1Notes

2

TradingType (Enumeration: OB_TradingEligibilityType1Code)

0..1[“Turnover”]
2MinMaxType (Enumeration: OB_MinMaxType1Code) 0..1[“Maximum”]
2Amount 0..1[2500000]
2Indicator

2Textual

2Period (Enumeration: OB_Period1Code)

2Notes

3

OfficerType  (OB_OfficerType1Code)

0..1[“Director”][“Owner”][“Partner”]
3OtherOfficerType
 
3MinAmount

3MaxAmount  0..1[2][2][2]
3Notes

 What about benefits packages?

Example: Danske Small Business Cashback

£500 for Cashback for new small business customers

First £250 paid after 10 transactions

Final £250 paid after 12 months banking


Section NumberField NameCardinalityValue(s)
1

Name

1..1“£500 Cashback”
1Type (Enumeration: OB_FeatureBenefitType1Code) 0..1[“Cashback”]
1OtherType (OtherCodeType

1BenefitGroupNominalValue: 0..1500.00
1

Fee



1ApplicationFrequency (Enumeration: OB_Frequency1Code)

1OtherApplicationFrequency (OtherCodeType)

1CalculationFrequency (Enumeration: OB_Frequency1Code)

1OtherCalculationFrequency (Enumeration: OB_Frequency1Code)

1Notes

2

Identification

0..1[1],[2]
2Type (Enumeration: OB_FeatureBenefitType1Code) 1..1[“Cashback”][“Cashback”]
2OtherType (OtherCodeType)

2Amount 0..1[250.00][250.00]
2Indicator

2Textual

2Notes 0..* [“£250 Cashback after 10 transactions”][“£250 Cashback on 1 Year Anniversary”]
3

Name

1..1

[“After 10 Transaction”][“On 1st Anniversary”][“New Customers Only”]

3Description

3Type (Enumeration: OB_BCAEligibilityType1Code) 1..1[“MinimumTransactions”[“MinimumAnniversary”][“NewCustomersOnly”]
3OtherType (OtherCodeType)

3Amount 0..1[10][1][]
3Indicator

3Textual

3Period (Enumeration: OB_Period1Code)0..1[][“Year”][]
3Notes

 What about Tariffs and “Other Fees And Charges”?

Example: HSBC Business Current Account

The CMA in their price comparison exercise prior to OBIE being established took the view that the following charges are key -  I identify the FeeType in each case, so I’m using these as examples of FeeTypes. Where there are “per payment”,“per debit”,”per withdrawal” or “per cheque” charges indicated, you should use the “PerItem” CalculationFrequency :-
1.Automatic credit payment in. [“AutoAutoCredit”]
2.Bill payment out (via phone or internet) [“TransBankPayment”]
3.Debit card payment out [“TransDebCardDeb”]
4.Direct debit payment out [“TransUKDirDeb”]
5.Standing order payment out [“TransStandingOrd”]
6.Branch payment in (cheques or cash) [“TransBranchCredit”]
7.Branch payment out [“TransBillPaymentCash”]
8.Branch cash payment in (additional charge for handling cash) [“CounterCashIn”]
9.Branch cash payment out (additional charge for handling cash) [“CounterCashOut”]

Section NumberField NameCardinalityValue(s)
1

TariffType (Enumeration:OB_TariffType1Code

0..1[“Mixed”][“Electronic”]
1TariffName 0..1[“Small Business Tariff”][“Electronic Banking Tariff”]
1OtherTariffType (OtherCodeType)

2

FeeCategory (Enumeration: OB_FeeCategory1Code)

1..1 [“Servicing”][“Servicing”]
2FeeType (Enumeration: OB_FeeType1Code) 1..1[“ServiceCFixedTariff”]
2OtherFeeType (OtherCodeType + extra category field )

2NegotiableIndicator

2IncludedInMonthlyChargeIndicator

2FeeAmount 0..1[5.50][5.50]
2FeeRate

2FeeRateType (Enumeration: OB_InterestRateType1Code)

2OtherFeeRateType (OtherCodeType)

2ApplicationFrequency (Enumeration: OB_FeeFrequency1Code)

2OtherApplicationFrequency (OtherCodeType)

2

CalculationFrequency (Enumeration: OB_FeeFrequency1Code) 

1..1[“Monthly”][“Monthly”]
2OtherCalculationFrequency (OtherCodeType)

2Notes