Account Verification

This Account Verification API covers domestic (UAE) and international countries.

The Account Verification API allows you to verify whether a bank account (IBAN or local account number) belongs to a specific individual or business. This helps reduce failed payouts, prevent fraud, and support compliance checks in over 30 countries.

  • Verify account ownership globally: Confirm if the account belongs to the named user.
  • Reduce payment errors: Prevent failed or misrouted transactions.
  • Strengthen KYC/AML compliance: Add a lightweight ownership check across markets.
  • Protect against fraud: Validate that users control the payout account provided.

This guide explains how the product works, supported markets, expected responses, and how to get started with the API.

How It Works

The International Account Verification API checks whether the provided account number (or IBAN) belongs to the named individual or business. The process works by matching the name you provide with the one registered on the account, via direct bank integrations or verified third-party sources.

When using name-based verification, we return one of three match statuses based on the similarity between the provided name and the name associated with the account:

Match: The name on the account exactly matches the provided name and the account ownership has been successfully verified. In API responses this is returned as "account_ownership_verified": true

No match: The name does not match the account holder’s name. A no match is determined when the similarity score between the provided name and the account owner's name is below 0.7. In API responses this is returned as "account_ownership_verified": false

Partial match: The name is similar but not an exact match. Partial matches indicate a high likelihood of ownership. Where "account_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

Account holder name

Whether the account holder name is returned depends on the country and data provider.

  • The name is always used for verification, but may not be shared in the response due to local privacy rules.
  • In some cases, you’ll receive a masked version (e.g., J*** S****).
  • In others, the name may be fully omitted, even if a match is found - see ‘Country coverage’ below for clarification on what will be returned by country.

United Arab Emirates and Saudi Arabia

For the UAE and KSA we support both name matching (as detailed above) or ID matching, for;

  • Retail accounts you can use a National ID, Iqama or Emirates ID
  • Business accounts you can use the CR and UNN or Trade License
  • Freelancer accounts (KSA only) you can use the FL number with the National ID

Where an ID is used for matching with the IBAN this will result in either a match or no match.

For business account verification in KSA, the API supports verification using either the Commercial Registration (CR) number, the Unified National Number (UNN), or both. As best practice we recommend to provide both CR and UNN where available.

This increases the likelihood of a successful match, since different banks may store either identifier and we can't guarantee which one will be available for the IBAN.

If only one identifier is provided and no match is found, the account may still be valid under the other identifier.

Freelancer account verification The API requires both the Freelancer Number (FL number) and National ID. Optionally, you can also include the freelancer’s name as a request parameter.

If the account cannot be found using the FL number or National ID, the system can attempt to match based on the customer’s name and the account holder’s name. See below to read more on name matching scoring.

Note: this API does not verify the Freelancer certificate and only it verifies the IBAN ownership

Country coverage

Region

Country

Coverage

Account type

Is account holder name returned?

Currency restriction

Response Time

Americas

US (Analytics-based)

All ABA-registered institutions

Unknown

Restricted

None

1–10 seconds

Americas

US (Logic-based)

All ABA-registered institutions

Unknown

Not validated

None

1–10 seconds

Americas

US (Direct-to-FI)

All RTP Network Participating FIs (~483 banks)

Unknown

No name/ownership check

None

1–10 seconds

Americas

Brazil

148 major banks

Retail

Yes

BRL only

5–8 seconds

Americas

Mexico

129 major banks

Retail

Yes

MXN only

5–10 seconds

Americas

Argentina

63 major banks

Retail

Yes

ARS only

2–5 seconds

Americas

Uruguay

17 major banks

Retail

Masked

Not specified

5–8 seconds

Americas

Peru

4 major banks

Retail

Yes

Not specified

5–8 seconds

Americas

Chile

20 major banks

Retail

Yes

Not specified

5–8 seconds

Americas

Colombia

25 major banks

Retail

Yes

Not specified

5–8 seconds

Americas

Ecuador

13 major banks

Retail

Yes

Not specified

5–8 seconds

Europe

UK
(coming soon)

~393 institutions (CoP)

Retail

Partial only

GBP only

2–5 seconds

Europe

Austria

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Belgium

All financial institutions

Both

Yes

EUR only

5–8 seconds

Europe

Croatia

Both

Yes for partial onlyPartial only

EUR only

5–8 seconds

Europe

Estonia

Both

Yes for partial onlyPartial only

EUR only

5–8 seconds

Europe

France

All financial institutions

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Germany

Both

Yes for partial onlyPartial only

EUR only

5–8 seconds

Europe

Greece

Both

Yes for partial onlyPartial only

EUR only

5–8 seconds

Europe

Ireland

Both

Yes for partial onlyPartial only

EUR only

5–8 seconds

Europe

Italy

All financial institutions

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Latvia

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Lithuania

Both

Yes for partial onlyPartial only

EUR only

5–8 seconds

Europe

Luxembourg

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Malta

Coming soon

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Netherlands

All financial institutions

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Poland

All financial institutions

Business only

Yes

Not specified

5–10 seconds

Europe

Portugal

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Slovakia

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Slovenia

Both

Yes for partial only

EUR only

5–8 seconds

Europe

Spain

Both

Yes for partial only

EUR only

5–8 seconds

Asia-Pacific

India

855+ banks (IMPS)

Retail

Yes

INR only

3–7 seconds

Asia-Pacific

Indonesia

142 major banks

Retail

Yes

Not specified

2–3 seconds

Asia-Pacific

Vietnam

43 major banks (NAPAS)

Retail

Yes

VND only

2–3 seconds

Asia-Pacific

Nepal

23 major banks

Retail

Yes (match_score > 0.8)

Not specified

2–3 seconds

Asia-Pacific

Pakistan

32 major banks

Retail

Yes

PKR only

2–3 seconds

Asia-Pacific

China (Individuals)

2,000+ UnionPay institutions

Retail

Restricted

Not specified

2–3 seconds

Asia-Pacific

China (Institutions)

141 major banks

Corporate

Yes (exact match)

Not specified

8–12 seconds

Asia-Pacific

South Korea

48 major banks

Retail

Yes

KRW only

2–3 seconds

Asia-Pacific

Bangladesh

3 banks

Retail

Restricted

Not specified

2–3 seconds

Asia-Pacific

Malaysia

37 major banks

Retail

Yes

MYR only

2–3 seconds

Asia-Pacific

Turkey

50+ banks

Retail

Masked

TRY only

2–5 seconds

Asia-Pacific

Australia

55 major banks

AUD only

2–5 seconds

Asia-Pacific

Philippines

Not specified

1–2 seconds

Middle East & Africa

Nigeria

40 major banks

Retail

Yes

Not specified

2–5 seconds

Middle East & Africa

Uganda

22 major banks

Retail

Yes

Not specified

2–5 seconds

Middle East & Africa

Saudi Arabia

14 major banks

Both

Masked (can be returned unmasked)

Not specified

5–8 seconds

Middle East & Africa

South Africa

11 major banks

Retail

Certainty of existence, not always name

Not specified

5–8 seconds

Middle East & Africa

United Arab Emirates

23 major banks

Both

Masked (can be returned unmasked)

Not specified

5–8 seconds

Request data by country

The table below outlines what is required to make a request based on the country you are verifying an account for.

Country

Name Required

Registration ID Required

Account ID Type

Agent Code Required

Notes / Special Requirements

Argentina

Yes

No

CBU

No

Australia (coming soon)

Yes

No

IBeneficiary Account ID

BISB code as clearing system ID

Austria

Yes

VAT / Business Reg. No.

IBAN

No

Business only

Bangladesh

Yes

No

Beneficiary Account ID

BIC

Belgium

Yes

VAT, Company No. as reg_id

IBAN

No

Registration ID for business

Brazil

Yes

CPF or CNPJ

IBAN

No

Chile (coming soon)

Yes

RUT as reg_id

Beneficiary Account ID

BIC or local code

China (individual)

Yes (Chinese)

No

Beneficiary Account ID

No

Name in Chinese characters

China (business)

Yes

Uniform credit code

Beneficiary Account ID

BIC

18-char alphanumeric code as registration_id

Colombia (coming soon)

Yes

No

Beneficiary Account ID

BIC or local code

Croatia

Yes

VAT / OIB

IBAN

No

Ecuador (coming soon)

Yes

No

Beneficiary Account ID

BIC or local code

Estonia

Yes

IBAN

No

Finland

Yes

IBAN

No

France

Yes

IBAN

No

Germany

Yes

IBAN

No

Greece

Yes

IBAN

No

India

Yes

No

Beneficiary Account ID

IFSC Code

Indonesia

Yes

No

Beneficiary Account ID

BIC

Ireland

Yes

IBAN

No

Italy

Yes

IBAN

No

Latvia

Yes

IBAN

No

Lithuania

Yes

IBAN

No

Luxembourg

Yes

IBAN

No

Malaysia

Yes

No

Beneficiary Account ID

BIC

Malta

Yes

IBAN

No

Mexico

Yes

No

CLABE

No

Nepal

Yes

No

Beneficiary Account ID

BIC

Netherlands

Yes

IBAN

No

Nigeria

Yes

No

NUBAN

BIC

Pakistan

Yes

No

Beneficiary Account ID

BIC

Peru

Yes

No

CCI

No

Philippines

No

Beneficiary Account ID

No

Poland

Yes

IBAN

No

Portugal

Yes

IBAN

No

Saudi Arabia

Optional

National ID/Iqama or UNN/CR

IBAN

No

Name or ID can be used for matching

Slovakia

Yes

IBAN

No

Slovenia

Yes

IBAN

No

South Africa

Yes

No

Beneficiary Account ID

BIC or branch code

Branch code as clearing system ID allowed

South Korea

Yes

No

Beneficiary Account ID

BIC or local code

Spain

Yes

IBAN

No

Turkey

Yes

No

IBAN

No

Uganda

Yes

No

Beneficiary Account ID

BIC

UK
(coming soon)

Yes

No

Beneficiary Account ID or IBAN

Sort code

US

Yes (given_name and surname)

No

Beneficiary Account ID

ABA/Routing Number

Depends on node type: analytics, logic, or direct-to-FI

United Arab Emirates

Optional

EID or Trade License

IBAN

No

Name or ID can be used for matching

Uruguay

Yes

No

Beneficiary Account ID

BIC

Vietnam

Yes

No

Beneficiary Account ID

BIC

Sandbox Test Data

To test the API you can use the below mocked data and responses:

Country CodeCountry NameFull NameRegistration IDNational IDCommercial RegUnified NumberAccount Details ValueAccount Details TypeBank Identifier TypeBank Identifier ValueOwnership VerifiedAccount StatusAccount Holder NameError CodeError Message
ARArgentinaLIONEL MESSI----0170032450000643500000ACCOUNT_ID--trueACTIVELIONEL MESSI--
ARArgentinaLION MESSY----0170032450000643500000ACCOUNT_ID--trueACTIVELIONEL MESSI--
ARArgentinaJOHN DOE----0170032450000643500000ACCOUNT_ID--trueACTIVELIONEL MESSI--
ARArgentinaINNOVARTECH S.A----0170032450000643578149ACCOUNT_ID--trueACTIVEINNOVARTECH S.A--
ARArgentinaJOHN DOE----0170032450000643500001ACCOUNT_ID-----ACCOUNT_NOT_FOUNDAccount not found
BDBangladeshSHAKIB AL HASAN----111112222201ACCOUNT_IDBICMTBLBDDHtrueACTIVESHAKIB AL HASAN--
BDBangladeshJOHN DOE----111112222201ACCOUNT_IDBICMTBLBDDHtrueACTIVESHAKIB AL HASAN--
BEBelgiumApple PaymentsBE2283365642---BE15537752378598IBAN--trueACTIVEApple Payments--
BEBelgiumApple CoBE2283365642---BE15537752378598IBAN--trueACTIVEApple Payments--
BRBrazilMONKEY D. LUFFY55.555.555/0056-56---BR5599950505000010000000505C1IBAN--trueACTIVEMONKEY D. LUFFY--
BRBrazilPETROBRAS LTD11.222.333/4444-00---BR1199950505000010000000888C1IBAN--trueACTIVEPETROBRAS LTD--
CNChina周杰伦----6212345678987654321ACCOUNT_ID--trueACTIVE周杰伦--
CNChinaBeijing Apple and Orange Company91111111ABCXYZ1234---321872160000ACCOUNT_IDBICABOCCNBJtrueACTIVEBeijing Apple and Orange Company--
FRFranceAtelier CoFR12949982110---FR7616958000019430150570683IBAN--trueACTIVEAtelier Co--
IDIndonesiaFIRA DIYANKA----1122334455ACCOUNT_IDBICCENAIDJAtrueACTIVEFIRA DIYANKA--
IDIndonesiaJAKARTA CONSTRUCTION----9988776655ACCOUNT_IDBICBRINIDJAtrueACTIVEJAKARTA CONSTRUCTION--
INIndiaDUMMY BENEFICIARY NAME----123456789007ACCOUNT_IDCLEARING_IDALLA0211480trueACTIVEDUMMY BENEFICIARY NAME--
INIndiaNATIONAL CRICKET CLUB----987654321002ACCOUNT_IDCLEARING_IDYESB0000002trueACTIVENATIONAL CRICKET CLUB--
ITItalyPizza HutIT12949982110---IT60X0542811101000000123456IBAN--trueACTIVEPizza Hut--
KRSouth Korea송혜교----11112222321ACCOUNT_IDBICCZNBKRSEtrueACTIVE송혜교--
KRSouth KoreaSONG HYE KYO----11112222321ACCOUNT_IDCLEARING_ID004trueACTIVESONG HYE KYO--
MXMexicoINAKI GODOY----999000000000000505ACCOUNT_ID--trueACTIVEINAKI GODOY--
NGNigeriaDAVID OYELOWO----1234567890ACCOUNT_IDBICGTBINGLAtrueACTIVEDAVID OYELOWO--
NLNetherlandsFinance CoNL234556778B15---NL91ABNA0417164389IBAN--trueACTIVEFinance Co--
NPNepalANIL GURUNG----1234567891234001ACCOUNT_IDBICNICENPKAtrueACTIVEANIL GURUNG--
PKPakistanHASSAN IQBAL----03097524704ACCOUNT_IDBICEASYPAISAtrueACTIVEHASSAN IQBAL--
PKPakistanKAMALA KHAN----PK35HABB0001111222212345IBANBICHABBPKKAtrueACTIVEKAMALA KHAN--
PLPolandStar CoffeePL2246689915---PL63109010160300071219812876IBAN--trueACTIVEStar Coffee--
UGUgandaWINNIE NWAGI----9030012345678ACCOUNT_IDBICEQBLUGKAtrueACTIVEWINNIE NWAGI--
USUnited StatesMELANIE DANIELS----781245633ACCOUNT_IDCLEARING_ID101000019trueACTIVEMELANIE DANIELS--
USUnited StatesDANIEL DANIELS----781245634ACCOUNT_IDCLEARING_ID101000019trueACTIVEMELANIE DANIELS--
VNVietnamPHAM QUYNH----12345678900000ACCOUNT_IDBICVTCBVNVXtrueACTIVEPHAM QUYNH--
VNVietnamHANOI BUSINESS COMPANY----98765432100000ACCOUNT_IDBICVTCBVNVXtrueACTIVEHANOI BUSINESS COMPANY--
MYMalaysiaMICHELLE YEOH----123456789098ACCOUNT_IDBICMBBEMYKLtrueACTIVEMICHELLE YEOH--
UYUruguayGEORGE HILTON----23456789ACCOUNT_IDCLEARING_ID001trueACTIVEGEORGE HILTON--
UYUruguayGERMAINE HILTON----23456790ACCOUNT_IDBICBROUUYMMtrueACTIVEGERMAINE HILTON--
PEPeruSILVANA ARIAS----12345678909876543212ACCOUNT_ID--trueACTIVESILVANA ARIAS--
TRTurkeyHALET CAMBEL----TR480001002110000028685254IBAN--trueACTIVEHALET CAMBEL--
ZASouth AfricaCHAD LE CLOS----9999978653ACCOUNT_IDCLEARING_ID198765trueACTIVECHAD LE CLOS--
SASaudi ArabiaABBAS AL-SHEIKH-1234567890--SA2810000011100000461309IBAN--trueACTIVEABBAS AL-SHEIKH--
SASaudi ArabiaHALIMA AL-SHEIKH--2345682234-SA2810100011100000461311IBAN--trueACTIVEHALIMA AL-SHEIKH--
SASaudi ArabiaAHMED MUSTAPHA---1234631235SA2810100011100000461317IBAN--trueACTIVEAHMED MUSTAPHA--
SASaudi Arabia--1106972886--SA2810000011100000461309IBAN--trueACTIVEAdam Ahmed--
SASaudi Arabia---1010093978-SA2810000011100000461309IBAN--trueACTIVEBusiness Owner--
SASaudi Arabia----7112233445SA2810000011100000461309IBAN--trueACTIVEUnified Business--
SASaudi Arabia--1106972886--SA1300GQO2OTVMEJ3885Y3TOIBAN--falseBLOCKEDAdam Ahmed--
SASaudi Arabia---1010093978-SA45449TBAYLQRPN96LSXPI4IBAN--falseBLOCKEDBusiness Owner--
SASaudi Arabia---1010032264-SA2810000011100000461309IBAN--trueACTIVEAnother Business--
SASaudi Arabia--1234567890--SA3076747147122249133391IBAN--falseCLOSEDClosed Account Holder--
SASaudi Arabia--1234567890--SA4576615857476891197381IBAN--falseIN_LIQUIDATIONLiquidation Account Holder--
SASaudi Arabia--1234567890--SA7665000000124A60749002IBAN-----LEAN_ERRORSystem error occurred
SASaudi Arabia--1234567890--SA82550000000M1795800177IBAN-----BANK_ISSUEBank temporarily unavailable
SASaudi Arabia--1234567890--SA0405000068201235335000IBAN-----UNSUPPORTED_BY_BANKBank verification not supported
SASaudi Arabia--1234567890--SA5080000146608010554454IBAN-----DISABLED_BY_LEANVerification temporarily disabled
AEUnited Arab EmiratesADAM AHMED----AE420260001015819612801IBAN--trueACTIVEADAM AHMED--
AEUnited Arab EmiratesADAM STARK----AE420260001015819612801IBAN--falseACTIVEADAM AHMED--
AEUnited Arab EmiratesADAM SOMETHING----AE420260001015819612801IBAN--trueACTIVEADAM AHMED--
AEUnited Arab EmiratesLYNNA GRAIG TOY----AE970424090886582129014IBAN--trueACTIVELYNNA GRAIG TOY--
AEUnited Arab EmiratesIMA ELINORE SPINKA----AE340176545036785802838IBAN--trueACTIVEIMA ELINORE SPINKA--
AEUnited Arab Emirates--784196710121542--AE620030012285049920001IBAN--trueACTIVEADAM AHMED--
AEUnited Arab Emirates--784-1967-1012154-2--AE620030012285049920001IBAN--trueACTIVEADAM AHMED--
AEUnited Arab Emirates--PN11223344--AE620030012285049920001IBAN--trueACTIVEADAM AHMED--
AEUnited Arab EmiratesABC LIMITED----AE620030012285049920001IBAN--trueACTIVEABC LIMITED--
AEUnited Arab EmiratesABC SOMETHING----AE620030012285049920001IBAN--falseACTIVEABC LIMITED--
AEUnited Arab EmiratesABC LIMIT----AE620030012285049920001IBAN--trueACTIVEABC LIMITED--
AEUnited Arab Emirates---TLCL4206-AE620030012285049920001IBAN--trueACTIVEABC LIMITED--
AEUnited Arab Emirates---TL000004778-AE620030012285049920001IBAN--trueACTIVEABC LIMITED--
AEUnited Arab EmiratesBLOCKED USER----AE810030012459313920001IBAN--falseBLOCKEDBLOCKED USER--
AEUnited Arab EmiratesERROR TEST----AE380030012459313810001IBAN-----LEAN_ERRORSystem error occurred
AEUnited Arab EmiratesBANK ERROR TEST----AE160030011522789920001IBAN-----BANK_ISSUEBank temporarily unavailable
AEUnited Arab EmiratesUNSUPPORTED TEST----AE420500000000028645064IBAN-----UNSUPPORTED_BY_BANKBank verification not supported
AEUnited Arab EmiratesDISABLED TEST----AE100500000000028538649IBAN-----DISABLED_BY_LEANVerification temporarily disabled

Example request showing India:

curl --location 'https://sandbox.sa.leantech.me/verifications/v1/accounts' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'Authorization: Bearer YOUR_JWT' \
--data '{
		"type": "PERSONAL",
    "account_details": {
        "type": "ACCOUNT_ID",
        "value": "123456789007"
    },
    "identifications": [
        {
            "type": "FULL_NAME",
            "value": "DUMMY BENEFICIARY NAME"
        }
    ],
    "bank_identifier": {
        "type": "CLEARING_ID",
        "value": "ALLA0211480"
    },
    "country_code": "IN"
}'

For all example responses by country please refer to the API reference