Transaction hash
Learn how to use Yapily Transaction Hash
Some institutions do not return a unique identifier (i.e. transaction id) for transactions. The transaction hash was introduced to provide an identifier for transactions retrieved via the Yapily API, which may be helpful in cases where a transaction ID is not present.
Where you can find it
By default, the Yapily Transaction Hash is returned for every transaction and is located within Enrichment
in the transaction response. You can find an example transaction below:
{
"date": "2020-07-31T00:00:00Z",
"bookingDateTime": "2020-07-31T00:00:00Z",
"status": "PENDING",
"amount": -57.87,
"currency": "GBP",
"transactionAmount": {
"amount": -57.87,
"currency": "GBP"
},
"isoBankTransactionCode": {
"domainCode": {
"code": "PMNT",
"name": "Payments"
},
"familyCode": {
"code": "ICDT",
"name": "Issued Credit Transfers"
},
"subFamilyCode": {
"code": "DMCT",
"name": "Domestic Credit Transfer"
}
},
"proprietaryBankTransactionCode": {
"code": "DEB",
"issuer": "LBG"
},
"enrichment": {
"transactionHash": {
"hash": "3c327ac9d43ef541c4dc6d163cf042bc.1"
}
}
How it works
As the name suggests, the transaction hash is generated by hashing a number of fields together from the transaction itself. These fields can be found below:
- Account ID
- Institution ID
- Credit/Debit indicator
- Date
- Amount
- Description
In addition to this, once the hash is generated each transaction is ranked in the context of the API Call. The reason for this is to account for the example where a person may have a transaction with the same description, for the same amount, on the same day, paid for from the same account.
Limitations
While the ambition of the transaction hash is to consistently provide a unique transaction identifier, there will be instances where the transaction hash may change or the same transaction hash could be assigned to different transactions. This is due to the hash being reliant on live institution data, which could change at any time. Yapily will continue to monitor the performance of the transaction hash and mitigate edge cases where duplications or changes may occur, however it is not possible to guarantee that a transaction hash will be completely unique or immutable.