Sample unstructured customer name and address in MT 103 message
Sample structured customer name and address in ISO20022 pacs.008 message
Original message with unstructured bank address details
Enriched message with bank address structured using geocoding API
A sample rule, calling the structure address function
Rules editor allowing end users control on which messages to use the API calls
Open API Docs
Deployed to Google cloud run, scaling on demand
Integrating Here.com API with ISO 20022 messages
ISO 20022 is a global standard for the financial industry that is used in payment systems in over 70 countries. There are over 200 initiatives globally to move financial messaging to ISO 20022 formats. In the coming years, it will be the de facto standard for high-value payment systems of all reserve currencies. This will provide greater interoperability, improved straight-through processing, efficient compliance processes, and richer Payment Data. ISO 20022 integration comes with several challenges, existing payment formats such as MT are loosely structured.
There is a strong global regulatory push to use structured party name and address information for payments. Typical high street banks in the UK will have 20-30 million customer records and hundreds of millions of beneficiary customer records stored in an unstructured format. Manually updating the records to structured addresses will require massive operational effort and cost; an automated approach will go a long way in making the transition manageable.
A piece of typical customer information in an older style ‘SWIFT MT 103’ message uses unstructured customer information from bank records.
The equivalent ISO20022 payment message will require the Name and address information to be structured in line with the standards.
The SWIFT Payment Market Practice guidelines state:
Market Practice Guideline #1: The global community should target November 2023 as the end-date for unstructured customer information payments, regardless of their format (ISO20022, FIN or native clearing).
What it does
The PayToolz payments toolkit is designed to simplify ISO 20022 integration. One of the big issues is the lack of structured content as the older style MT messages use unstructured content which has been built up over the last few decades. We have used machine learning and text processing to enrich bank details and here.com geocoding APIs to structure addresses from unstructured text. A sample unstructured bank name and address has the address details provided as 3 free format lines.
The bank details are enriched using PayToolz DSL/Rules Engine that makes a call out to Here.com’s Geocoding API:
How we built it
We used scala to generate JVM bindings from the ISO 20022 XSD files, wrote a DSL in scala using type classes and code generation for easy access, used Monocle (Optics) for accessing and modifying deeply nested classes. API is published using Open API. The application is deployed to serverless infrastructure using Google Cloud Run providing scaling out on demand..
Challenges we ran into
ISO20022 uses deeply nested structures that are extremely difficult to update. There are multiple versions of the same messages in use, which requires any logic to be repeated many times. Reference data used to identify banks is proprietary and not freely available.
Accomplishments that we're proud of
We have an user friendly DSL and ability to structure messages unobtrusively. The integrated rules engine allows users to take control of their payment enrichment needs. We have combined our domain knowledge with technical know-how to create a solution that solves one of the financial industry’s most pressing issues.
What we learned
XML handling was more challenging than the machine learning, natural language processing and the API integration
- Support for country specific address structure e.g. US States.
- Validations to ensure full address has been mapped.
- Natural Language Processing support to identify names from combined name and address information.
- API to allow customers to find payee’s bank using the bank’s address and enrich with relevant banking identifiers.