Name Matching
Overview
Name matching refers to the way the Verification of Payee (VoP) Responder service matches names using the IPF Identity Resolution service, which is running embedded in VoP Responder.
The name matching logic provides a way to configure the thresholds used for name matching in the Verification of Payee Responder service. The thresholds determine how closely names need to match to be considered a match, a close match, or no match.
How It Works
The Name Matching functionality allows the VoP Responder service to:
-
Map processing entities to different account types and ultimately scoring thresholds
-
Map different account types to scoring thresholds
-
Send name comparison requests for scoring and receive scored response
-
Determine a match result based on a provided scoring of the names. This could either be no match, close match or match.
-
When scoring against multiple names, in the case of joint accounts, the name scoring the highest score will be used for determining the match result.
-
Scoring against a Name Type which could either be FULL_ORGANISATION or INDIVIDUAL as defined in the Account Management API. Providing better accuracy depending on if this is an individual or corporate name.
Configuration
VoP Responder requires scoring threshold configuration to be set up before the application is started.
This configuration is expected under the ipf.verification-of-payee.responder.name-match path.
Property Grouping: ipf.verification-of-payee.responder.name-match
| Key | Description | Example Value |
|---|---|---|
ipf.verification-of-payee.responder.name-match.thresholds |
Thresholds are configured per processing entity |
|
Additional Details
Further details of fields underneath ipf.verification-of-payee.responder.name-match.thresholds are below:
| Field Name | Description |
|---|---|
|
The processing entity the list of scorings applies to. A |
|
A list of scores for the processing entity. |
|
The account type this scoring applies to. A |
|
The minimum score used to determine a no match or close match result. A score lower than this value will result in a no match. A score between the |
|
The maximum score used to determine a match or close match result. A score equal to or greater than this value will result in a match. A score between the |
If scorings.lowerbound is set to the same value as scorings.upperbound this effectively eliminates close matches, and you can only get a match or no match result back.
|
Examples
Below are some examples of how scoring would work given the sample configuration above:
Processing Entity |
Account Type |
Score |
Result |
Description |
- |
corporate |
1.0 |
Match |
Default processing entity used |
processing entity A |
- |
0.9 |
Match |
Default account type used |
processing entity A |
individual |
0.8 |
Match |
No defaults used - individual account |
processing entity A |
corporate |
0.8 |
Match |
No defaults used - corporate account |
processing entity A |
individual |
0.5 |
Close Match |
Close match result |
processing entity A |
corporate |
0.4 |
No Match |
No match result |
"-" represents no data provided
Error Handling
Startup Errors
Name Matching performs startup validations and adopts a fail-fast strategy halting application startup if any of the following configuration validations fail:
-
Config under the following path
ipf.verification-of-payee.responder.name-match.thresholdsis required -
A
defaultprocessing entity is required -
A
defaultthreshold type is required -
Duplicate processing entities are not allowed.
-
Duplicate scoring types are not allowed.
-
Config items
scorings.lowerboundandscorings.upperboundmust be between [0.0, 1.0] and of type Double -
Config item
scorings.lowerboundmust be less than or equal toscorings.upperbound
Runtime Errors
The following errors may occur at runtime. When an error occurs, the service responds with the corresponding HTTP error code, as outlined in the table below.
| Error | HTTP Return Code |
|---|---|
Errors encountered accessing Name Matching will return the following Error message: |
500 |
All other errors related to name matching e.g. if a request with a Error message: |
500 |