Categorisation
Learn to use Yapily Categorisation Engine
Categorisation is currently available on the Get Account Transactions endpoint offers the following categorisation content:
- Transaction categorisation
- Merchant identification
- Corrected Transaction Date
- Location
Categorisation Engine
The Yapily Categorisation Engine parses Open Banking transactions, identifying the merchants and different Income and Expense categories, which can serve as the foundation of Personal Financial Management or Lending Decision applications.
The Yapily Categorisation Engine combines the following techniques to uncover extensive value from vast amounts of raw data:
- Highly precise string operations on transaction descriptions
- Mapping bank codes
- State of the art machine learning based on the transaction descriptions & dates.
The engine itself does not store any data, passing transactions straight through it and returning categories associated with each transaction. Hosted s ecurely in the cloud, it can scale independently - ensuring no adverse impact on performance.
Prerequisites
Before retrieving data from the Get Account Transactions endpoint, you will first need to follow these steps:
- Obtain a Consent from the user
- Get Accounts for the user
- Get Account Transactions adding the optional parameter
with=categorisation
Categorisation Schema
When the with=categorisation
parameter is added, the account transactions endpoint supplements transactions with the enrichment. An example of the merchant
dentification can be seen below:
Request:
curl https://api.yapily.com/accounts/{account-id}/transactions?with=categorisation \
-H 'Accept: application/json' \
-H 'consent: string' \
-u API_KEY:API_SECRET
Response (with Categorisation enrichment):
{
"data": [{
"transactionInformation": "TESCO PFS BASINGSTOKE 2020/07/30 3803",
"bookingDateTime": "2020-08-01 00:00:00",
"transactionAmount": {
"amount": 10,
"currency": "GBP"
}
,
"proprietaryBankTransactionCode": "DEB",
"isoBankFamilyCode": "CCRD",
"isoBankSubFamilyCode": "POSD"
},
"enrichment": {
"categorisation": {
"categories": [“TRANSPORT”],
"source": "MERCHANT"
},
"transactionHash": {
"hash": "b0781fd71caa48c75039ec01c0ffb011.1"
},
"merchant": {
"merchantName": "TESCO PETROL",
"parentGroup": "TESCO"
},
"location": "BASINGSTOKE",
"correctedDate": "2020-07-30T00:00:00.000Z"
}
}]
}
Elements
Where possible we return the following:
merchantName
correctedDate
This is extracted from the transaction string, which is likely to be the date the transaction took place on. ThebookingDateTime
can refer to the post-clearing valuelocation
paymentProcessor
e.g. Paypal
Where we find a merchant, we return it with its associated category. For organisations selling a diverse range of products that don't fit within a single category, we assign multiple merchants with different categories and add a parentGroup to gather those merchants together. So Sainsbury's and Sainsbury's Bank are merchants with appropriate categories that also have Sainsbury's as their parentGroup.
As with categories, the merchant and category of a transaction may change as we improve the accuracy of our merchant service and add new merchants.
Fees and Cash
Yapily’s Categorisation engine will identify whether certain transactions are cash withdrawals or bank fees, based on the transaction codes or description. In the
case of bank fees, we set the merchantName
to the institution that manages the account. For cash withdrawals, we also parse merchantName
from the description
to gain more insights.
Please note: transactions marked with subcategory ATM Withdrawal
, indicate ATM withdrawals or cashback at merchant, not a transaction with that merchant.
Transaction Categories
To see the latest list of categories, use the Get Categories endpoint
Please note: where the model cannot identify a merchant we omit the merchant field entirely.