VOP matching algorithm

Learn more about the Mambu Payments (formerly Numeral) VOP matching algorithm

Introduction

For every incoming VOP request, Mambu Payments compares the account holder name received with all account holder names associated with the account number, including both main and alternative names. These holder names are retrieved:

  • From internal accounts (using holder_name and alternative_holder_names fields), if you are using internal accounts
  • With a direct call to your system (using payee_identification attribute in your response), if you chose the account holder request integration

If one match is found (based on the distance and thresholds configured, as described below), the request is answered with match.

If no match is found, Mambu Payments will try to find matches by computing variants of your stored holder names. For names with four words or fewer, we will compute all possible word combinations from the account holder's name and compare them against the name received. For instance, for an account holder named "John Michael Doe", our system checks variants like "John Michael Doe", "Doe John Michael", "Michael Doe John", and so on.

The algorithm then returns the highest similarity score found across all these comparisons, ensuring the most accurate possible match.

1. Data cleaning

For account holder names both received and stored, we apply standard data cleaning:

  • Case normalization: All letters are converted to lowercase
  • Accent removal: Standard accents and diacritical marks are removed from letters (e.g., $é → e$)
  • Special character replacement: A specific set of characters are replaced with their common Latin equivalents (e.g., $ø → oe$$ß → ss$)
  • Punctuation & symbol removal: All punctuation, symbols, and emojis are completely removed. Only letters (a-z) and numbers (0-9) are kept
  • Whitespace normalization: All spaces at the beginning and end of the text are trimmed, and any sequence of multiple spaces between words is collapsed into a single space
  • Title removal: Common English and French honorific titles (e.g., MrDrMmeProf) are removed
  • Legal form abbreviations: Common European company prefixes (GmbH, SAS, etc.) are removed

2. Distance measures

To compare two account names, Mambu Payments calculates a distance between them. Distance is the similarity between two names, measured as the number of transformations needed to go from one name to the other.

Mambu Payments currently supports two distance measures:

  • Levenshtein distance measures similarity by identifying the minimum number of single-character edits (insertions, deletions, or substitutions) required to transform one string into another. It is a straightforward measure of overall difference
  • Jaro-Winkler distance assesses similarity by considering shared characters and transpositions. It applies a higher weighting to characters that match at the beginning of the strings, making it particularly effective for common name variations and misspellings where prefixes are often consistent

You can choose the distance measure to use when processing incoming VOP requests. The distance calculated is then normalized and converted into a matching score ranging from 0 to 100, by dividing by the characters-count of the name stored in your system.

3. Thresholds and result

Once a matching score is computed using your chosen distance metric, Mambu Payments translates it into one of three distinct outcomes: match, close match, or no match. To achieve this, you will configure two key thresholds:

  • Upper threshold: any score at or above this value will result in a match
  • Lower threshold: any score below this value will result in a no match
  • Between upper threshold and lower threshold: result will be a close match

These customizable thresholds provide granular control, allowing you to fine-tune the matching sensitivity to perfectly align with your operational requirements and risk appetite.

Multiple names management

It may be relevant to have multiple holder names associated with the same account number. Use cases include:

  • Joint accounts, where you may expect incoming VOP requests with any combination of the account holder names
  • Middle names that payers will not necessarily provide
  • Company names which can have many variants (legal name, commercial name, etc.)

For all these use cases, we encourage you to:

  • Fill alternative_holder_names accordingly, if you are using internal accounts
  • Pass multiple payee_identification if you chose the account holder request integration

When given multiple holder name, Mambu Payments will compare all of them to the name received and base its answer one the pair with the highest matching score.