How to use Account Verification
Leans Account Verification confirms whether a customer owns the IBAN they have provided. By comparing the customer’s name to the account holder name associated with the IBAN, this service determines if they match.
This product supports both retail and corporate account ownership verification.
You can access this service in two ways:
- Via the Lean Platform, or
- By integrating with the Verify IBAN Ownership API
Note: This is a universal API that uses the same endpoint as our KSA Account Verification Service.
Account Verification results
Whether using the API or the Lean Platform, the Account Verification product returns one of three responses:
- Match
- No match
- Partial match
Match
A match means the IBAN ownership has been successfully verified. In API responses this is returned as "iban_ownership_verified": true
A no match
A no match response means that the IBAN ownership could not be verified. A no match is determined when the similarity score between the provided name and the IBAN owner's name is below 0.7. In API responses this is returned as "iban_ownership_verified": false
Partial match
Partial matches indicate a high likelihood of ownership. Where "iban_ownership_verified" is returned as 'false' we check for partial matches
- If the similarity score is equal to or above the threshold (0.7), it is considered a partial match
- The scoring is on a scale from 0-1, with 0 being no match and 1 being the highest similarity between the two names provided
- Anything below the threshold will result in 'no match' to the 'match' attribute and this can be confirmed that the account is not verified
- The API response will return "matching: partial" along with the match score
- Where a partial match is returned you will still receive the masked name in the response which you can then use to either prompt your customer to re-enter the correct details or utilise the score as a degree of confidence they are the account holder and proceed with your customer journey
Corporate accounts
Where a corporate account ownership is being checked, please be aware we will strip out the special characters from the name submitted to check, for example a lot of corporate account names contain 'L.L.C'. When we return the response and it is a match (true) you will always receive the unmasked name back and this can be used to update in your system. Where it returns a no match (false), partial matching will also be applied.
Using the Lean Platform to verify accounts
To verify account ownership via the Lean Platform:
- Log in at https://dev.leantech.me/auth/signin
- Navigate to ‘Account Verification’ in the left-hand menu
- Choose one of the two available options:
- Single verification:
Enter your customer's name and IBAN, then click ‘Verify Details’ to perform a real-time check. - Bulk verification:
Upload a CSV file containing multiple customer records for batch verification.
Bulk Verification Guidelines
- Download the sample CSV file from the platform to ensure correct headers and formatting.
- You can upload up to 5 files at a time, with a maximum of 1,000 rows per file.
- Once processing is complete, you’ll receive an email notification.
- Results can be viewed and downloaded from the ‘History’ table within the platform.
Using the API to verify accounts
To use the Account Verification Service API you will need to call the endpoint sandbox.leantech.me/verifications/v2/iban
To make a request you will need to provide;
- full customer name (you will need to ask the customer to provide the full name on the account for the IBAN that is being checked)
- customer IBAN
The response will return whether the account is verified with a true or false response to 'iban_ownership_verified'. Where the response is 'true' this means it is a match and the account ownership has been verified. Where the response is 'false' this means it is a no match and the account has not been verified.
Where it is a no match the account is not verified, we will also identify whether there is a partial match between the customer name provided and the name held on the bank account for the IBAN being checked.
Testing Account Verification in sandbox
You can test our Account Verification in our sandbox environment either on the API or within the Lean Platform using the below test scenarios.
Type | Scenario | Request IBAN | Request Name | IBAN Ownership Verified | Match |
---|---|---|---|---|---|
Retail | Account ownership is verified (non-ENBD account) | AE620030012285049920001 | Adam Ahmed | true | n/a |
Retail | Account ownership is not verified (non-ENBD account) | AE620030012285049920001 | Adam Stark | false | no match |
Retail | Account ownership is partially verified (non-ENBD account) | AE620030012285049920001 | Adam something | false | partial |
Retail | Account ownership is verified (ENBD account) | AE420260001015819612801 | Adam Ahmed | true | n/a |
Retail | Account ownership is not verified (ENBD account) | AE420260001015819612801 | Adam something | false | no match |
Retail | Account ownership is partially verified (ENBD account) | AE420260001015819612801 | Adam something | false | partial |
Corporate | Account ownership is verified (non-ENBD account) | AE620030012285049920001 | ABC Limited | true | n/a |
Corporate | Account ownership is not verified (non-ENBD account) | AE620030012285049920001 | ABC something | false | no match |
Corporate | Account ownership is partially verified (non-ENBD account) | AE620030012285049920001 | ABC Limit | false | partial |
Corporate | Account ownership is verified (ENBD account) | AE420260001015819612801 | ABC Limited | true | n/a |
Corporate | Account ownership is not verified (ENBD account) | AE420260001015819612801 | ABC Something | false | partial |
Corporate | Account ownership is partially verified (ENBD account) | AE420260001015819612801 | ABC Limit | false | no match |
Note, for no match cases you can use any name not listed above in sandbox to retrieve a no match response.
API request and response examples
Example request
{
"iban": "AE420260001015819612801",
"identifications": [
{
"type": "FULL_NAME",
"value": "Adam Ahmed"
}
],
"type": "PERSONAL"
}
Example response - ownership verified
{
"status": "OK",
"results_id": null,
"message": "Data successfully retrieved",
"timestamp": "2024-07-30T11:06:22.502090861Z",
"meta": null,
"status_detail": null,
"verifications": {
"iban_ownership_verified": true,
"swift_code": "ADCBAEAAXXX",
"bank_name": {
"en": "Abu Dhabi Commercial Bank",
"ar": null
},
"bank_code": "003",
"account_status": null,
"account_holder_name": "Adam Ahme*",
"verification_method": "CONFIRMATION_OF_PAYEE_SERVICE"
}
}
Example response - ownership not verified
{
"status": "OK",
"results_id": null,
"message": "Data successfully retrieved",
"timestamp": "2024-09-11T05:43:38.157026614Z",
"meta": null,
"status_detail": null,
"verifications": {
"iban_ownership_verified": false,
"matching": {
"type": "NO_MATCH",
"score": 0.52
},
"swift_code": "ADCDEDGHXXX",
"bank_name": {
"en": "Abu Dhabi Commercial Bank",
"ar": null
},
"bank_code": "026",
"account_status": null,
"account_holder_name": "MATT*** SMIT*",
"verification_method": "CONFIRMATION_OF_PAYEE_SERVICE"
}
}
Example response - ownership not verified but partial match
{
"status": "OK",
"results_id": null,
"message": "Data successfully retrieved",
"timestamp": "2024-09-11T05:43:38.157026614Z",
"meta": null,
"status_detail": null,
"verifications": {
"iban_ownership_verified": false,
"matching": {
"type": "PARTIAL",
"score": 0.96
},
"swift_code": "ADCDEDGHXXX",
"bank_name": {
"en": "Abu Dhabi Commercial Bank",
"ar": null
},
"bank_code": "026",
"account_status": null,
"account_holder_name": "MATT*** SMIT*",
"verification_method": "CONFIRMATION_OF_PAYEE_SERVICE"
}
}
Errors
Code | Status | Description |
---|---|---|
200 | LEAN_ERROR | There is a Lean system error. If the error continues contact Lean. |
200 | BANK_ISSUE | There are connection issues with the bank and the request should be retried. Note this does not determine whether an account can be verified, it means the connecting bank system is currently down. Please try the request again. |
200 | UNSUPPORTED_BY_BANK | The bank for the account requested is not currently supported for verification. |
200 | DISABLED_BY_LEAN | We have temporarily disabled this service due to an ongoing issue. If the issues persists, please contact Lean. |
400 | INVALID_IBAN | The IBAN entered is invalid. Please amend the IBAN to a valid IBAN and try the request again. |
400 | INVALID_PARAMETERS | The IBAN entered is invalid. Please amend the IBAN to a valid IBAN and try the request again. |
200 | GIVEN_INPUT_CANNOT_BE_VERIFIED | The account cannot be verified in this case and should not be retried. This means the customer's IBAN/account status is not Active and we cannot verify the account ownership. In this instance, please do not retry this request. |
Example response - fail
{
"status": "FAILED",
"results_id": null,
"message": "Account cannot be verified in this case. Please do not retry.",
"timestamp": "2024-08-28T08:07:50.237874202Z",
"meta": null,
"status_detail": {
"granular_status_code": "GIVEN_INPUT_CANNOT_BE_VERIFIED",
"status_additional_info": "Account cannot be verified in this case. Please do not retry."
},
"verifications": null
}
Updated 7 days ago