Skip to content
Lira APILira API

Bank Account: Country Requirements

Every country uses the same endpoint (POST /verify/account) and the same response shape; only the inputs differ. This page lists what each country expects: account and bank-code formats, extra required fields, and anything country-specific in the response. For the request/response flow itself, see the Bank Account guide.

CountryCodeAccount numberbankCodeExtra required fields
NigeriaNG10-digit NUBAN6-digit code
GhanaGHStandard3-letter bank code (e.g. GTB)
KenyaKEStandard2-digit bank code (e.g. 01)
ZambiaZMStandard3-digit code
TanzaniaTZStandard3-digit code
EthiopiaETStandard6-digit code
UgandaUGStandardBICaccountName
South AfricaZAStandard6-digit branch codeaccountName (account-existence check)
United KingdomGB8 digits6-digit sort codeaccountName
ChinaCNUnionPay card or corporate accountBIC/SWIFTaccountName, accountHolderType, identifiers (business)
IndiaINStandard11-character IFSCaccountName
IndonesiaIDStandardBICaccountName
VietnamVNStandardBICaccountName
NepalNPStandardBICaccountName
PakistanPKStandardBICaccountName
South KoreaKRStandardBICaccountName
BangladeshBDStandardBICaccountName
MalaysiaMYStandardBICaccountName
ThailandTHStandardBICaccountName (account-existence check)
PhilippinesPHStandardBICaccountName (format/syntax check)
BrazilBRStandard— (IBAN)accountName, CPF/CNPJ
MexicoMXStandard— (CLABE)accountName
ArgentinaARStandard— (CBU)accountName
PeruPEStandard— (CCI)accountName
UruguayUYStandardBICaccountName
ChileCLStandardBIC or local codeaccountName, RUT
ColombiaCOStandardBIC or local codeaccountName, CC/NIT
EcuadorECStandardBIC or local codeaccountName, CC/RUC
Europe (SEPA)AT BE BG HR CY EE FI FR DE GR IE IT LV LT LU MT NL PT SK SI ESIBAN— (IBAN)accountName
United Arab EmiratesAEIBAN— (IBAN)accountName
AustraliaAUStandard6-digit BSBaccountName
United StatesUSStandard9-digit ABA routing numberaccountName

Note

mode: "async" is supported for NG and ZM only. Every other corridor is synchronous only — each request returns the result in the same HTTP response.


Nigeria

10-digit NUBAN account number plus the bank's 6-digit code. The response includes the account holder's name, and may include address.state and address.lga depending on the bank.

JSON
{
  "accountNumber": "0123456789",
  "country": "NG",
  "bankCode": "000014"
}

Warning

The accountNumber must be exactly 10 digits (NUBAN). A request with a shorter or longer account number is rejected with a 422 validation error.

Legacy 3-digit bank codes (e.g. 044) are not accepted either. A request with a 3-digit bankCode is rejected with a 422 validation error. Use the 6-digit code.

Nigeria covers 400+ financial institutions. Fetch the full list at runtime with your API key:

Terminal
curl https://api.uselira.com/api/v1/client/countries/NG/banks \
  -H "X-API-Key: YOUR_API_KEY"

Common codes are listed below.

Common Nigerian bank codes
bankCodeBank
000014Access Bank
000010Ecobank Nigeria
000003First City Monument Bank (FCMB)
000007Fidelity Bank
000016First Bank of Nigeria
000027Globus Bank
000013Guaranty Trust Bank (GTBank)
000006Jaiz Bank
000002Keystone Bank
000029Lotus Bank
000008Polaris Bank
000031PremiumTrust Bank
000023Providus Bank
000012Stanbic IBTC Bank
000021Standard Chartered
000001Sterling Bank
000022SunTrust Bank
000026TAJ Bank
000025Titan Trust Bank
000018Union Bank of Nigeria
000004United Bank for Africa (UBA)
000011Unity Bank
000017Wema Bank
000015Zenith Bank

Sandbox: account 0000000001 with bank code 000014 returns a predictable success.


Ghana

Standard account number plus the bank's 3-letter bankCode (e.g. GTB).

JSON
{
  "accountNumber": "1234567890",
  "country": "GH",
  "bankCode": "GTB"
}

Note

Ghana returns accountName, bankCode, and bankName only, with no address fields (state, lga). mode: "async" is not supported for Ghana; all GH verifications are synchronous.

Fetch the full list at runtime with your API key:

Terminal
curl https://api.uselira.com/api/v1/client/countries/GH/banks \
  -H "X-API-Key: YOUR_API_KEY"

Supported bank codes are listed below.

Supported Ghanaian bank codes
bankCodeBank
ACBAccess Bank
ADBAgricultural Development Bank
BOABank of Africa
BBGAbsa Bank
CALCAL Bank
ECBEcobank
ENEEnergy Bank
FBNFBN Bank
FIDFidelity Bank
FABFirst Atlantic Bank
FNBFirst National Bank
GCBGCB Bank
GTBGuaranty Trust Bank
REPRepublic Bank
NIBNational Investment Bank
PRUPrudential Bank
SOCSociété Générale
STAStanbic Bank
STBStandard Chartered Bank
UBAUnited Bank for Africa
UMBUniversal Merchant Bank
ZENZenith Bank
OMNOmniBSIC Bank
BOGBank of Ghana
ARBARB Apex Bank
CBGConsolidated Bank Ghana
GHLGHL Bank

Sandbox: account 1000000001 with bank code GCB returns a predictable success.


Kenya

Standard account number plus the bank's 2-digit code (e.g. 01 for KCB). Returns accountName, bankCode, and bankName, with no address fields.

JSON
{
  "accountNumber": "1234567890",
  "country": "KE",
  "bankCode": "01"
}

Note

mode: "async" is not supported for Kenya; all KE verifications are synchronous.

Supported Kenyan banks
bankCodeBank
01KCB
02Standard Chartered Bank
03Absa Bank
04Bank of India
05Bank of Baroda
06NCBA
07Prime Bank
08Co-operative Bank
09National Bank
10M-Oriental
11Citi Bank
12Habib Bank AG Zurich
13Middle East Bank
14Bank of Africa
15Consolidated Bank
16Credit Bank
17Access Bank
18Stanbic Bank
19ABC Bank
20Eco Bank
21SPIRE Bank
22Paramount Bank
23Kingdom Bank
24Guaranty Trust Bank
25Victoria Bank
26Guardian Bank
27I&M Bank
28Development Bank
29SBM
30Housing Finance
31Diamond Trust Bank
32Mayfair Bank
33Sidian Bank
34Equity Bank
35Family Bank
36Gulf African Bank
37First Community Bank
38DIB Bank
39UBA Bank
40KWFT
41Faulu Bank
42Post Bank

Sandbox: account 1000000011 with bank code 01 returns a predictable success (accountName: "Sandbox Wambui").

Kenya also supports M-Pesa verification (Lipa Na M-Pesa and M-Pesa Agent) — see Mobile Money.


Zambia

Standard account number plus the bank's 3-digit code. Returns accountName, bankCode, and bankName, with no address fields.

JSON
{
  "accountNumber": "1234567890",
  "country": "ZM",
  "bankCode": "023"
}
Supported Zambian banks
bankCodeBank
002Absa Bank
003Access Bank
005Access Bank (formerly ATMA)
006Bank of China
007Citibank
008Ecobank
010Indo Zambia Bank
011Investrust Bank
012First Alliance Bank
013First Capital
014FNB
016Stanbic Bank
017Standard Chartered Bank
022United Bank for Africa
023Zanaco
025ZICB
028AB Bank
032Natsave
033Access Bank
036Bayport
037Zambia National Building Society

Tanzania

Standard account number plus the institution's 3-digit code. Tanzania routes through the national interoperability hub covering 16 banks and 5 mobile-money operators.

JSON
{
  "accountNumber": "2000000001",
  "country": "TZ",
  "bankCode": "003"
}

Note

mode: "async" is not supported for Tanzania; all TZ verifications are synchronous.

The response may include an identity object when the hub has it: typically a TIN for personal accounts, TIN or NIN for business accounts. Some business accounts omit this field.

Supported Tanzanian institutions
bankCodeInstitution
003CRDB Bank
004NMB Bank
013Exim Bank
015NBC Bank
006Stanbic Bank
011Diamond Trust Bank
009Bank of Africa
020ABSA Bank
021I&M Bank
040Ecobank Tanzania
046Amana Bank
031Azania Bank
024DCB Commercial Bank
034BancABC
039Mkombozi Bank
048TPB Bank

Ethiopia

Standard account number plus the institution's 6-digit code. Ethiopia routes through the national interoperability hub covering 43 financial institutions (banks, microfinance institutions, and mobile wallets).

JSON
{
  "accountNumber": "1000000000001",
  "country": "ET",
  "bankCode": "231402"
}

Note

mode: "async" is not supported for Ethiopia; all ET verifications are synchronous.

Ethiopia uses corridor-specific error codes: INVALID_ACCOUNT (account not found at the bank) and UNKNOWN_BANK (bankCode not in the supported list), in place of the generic ACCOUNT_NOT_FOUND / INVALID_BANK_CODE.

Sandbox:

accountNumberbankCodeResult
1000000000001231402Success: accountName: "Sandbox Bekele"
1000000000002231402error.code: "ACCOUNT_NOT_FOUND"
1000000000003231402error.code: "PROVIDER_ERROR"
Supported Ethiopian institutions (43)
bankCodeInstitution
231416Abay Bank
231417Addis Bank
231431Ahadu Bank
231448Amhara Bank
231443Anbesa Int. Bank
231404Awash Bank
231415Berhan International Bank
231414Bunna Bank
231439CBE BIRR
231402Commercial Bank of Ethiopia
231410Cooperative Bank of Oromia
231405Dashen Bank
231476Dedebit MFI
231451DIRE MFI
231419Enat Bank
231457Gadaa Bank
231418Global Bank Ethiopia s.c
231444Goh Betoch
231455H-Cash Wallet
231463HALAL PAY
231408Hibret Bank
231427Hijra Bank
231438KAAFI Micro Finance
231442Kacha
231409Nib Bank
231475Nisir Microfinance Institution S.C
231441One MFI
231460Oromia Bank
231467Rammis Bank
231426Rays Micro Finance Institution
231462SAHAL MICROFINANCE
231436Shabelle Bank
231461Sidama Bank
231430Siinqee Bank
231459Siket Bank
231421Somali Micro Finanace
231456Tsedey Bank
231432TSEHAY BANK
231465Vision Fund Micro Finance
231407Wegagen Bank
231466YaYa PII
231428ZamZam Bank
231412Zemen Bank

Uganda

Uganda is a name-match corridor: supply the account number, the bank BIC as bankCode, and the accountName to match.

JSON
{ "country": "UG", "accountNumber": "9030012345678", "bankCode": "EQBLUGKA", "accountName": "Sandbox Nakato" }

A successful match returns status: "success" with verified: true. A mismatch or not-found returns status: "success" with verified: false — branch on verified, not on status.

Sandbox: account 1400000001 with bank code EQBLUGKA returns a predictable success.


South Africa

South Africa is an account-existence corridor. It confirms whether the account exists; it does not perform a name match. Supply the account number, the 6-digit branch code as bankCode, and the accountName (sent for a consistent request shape).

JSON
{ "country": "ZA", "accountNumber": "9999978653", "bankCode": "198605", "accountName": "Sandbox van der Merwe" }

verified: true means the account exists. The response does not include a match_score.

Sandbox: account 2500000001 with bank code 250655 returns a predictable existence confirmation.


United Kingdom

The UK is a name-match corridor: you supply the 8-digit account number, the 6-digit sort code (digits only, no dashes), and the name you expect on the account. The bank confirms whether the account exists and whether the name matches. It never discloses the registered name.

JSON
{
  "country": "GB",
  "accountNumber": "12345678",
  "bankCode": "200000",
  "accountName": "Jane Doe"
}
  • verified: true: the name matched. The accountName in the response is the name you submitted, confirmed against the bank's record.
  • verified: false: the account was not found or the name did not match. accountName is omitted.

Warning

A failed name-match still returns HTTP 200 with status: success. The check itself ran successfully. Branch on verified, not on status.


China

China is a name-match corridor. Set accountHolderType to INDIVIDUAL and supply a UnionPay card number (16–19 digits, starting with 62).

JSON
{
  "country": "CN",
  "accountHolderType": "INDIVIDUAL",
  "accountNumber": "6228480402564890018",
  "bankCode": "CN-INDIV",
  "accountName": "王明"
}

Warning

Business accounts are not currently supported for China. A request with accountHolderType: "BUSINESS" returns VALIDATION_ERROR. Only INDIVIDUAL accounts are supported.

Missing or unsupported accountHolderType returns VALIDATION_ERROR.

Warning

As with the UK, a failed name-match returns HTTP 200 with status: success and verified: false. Branch on verified.


India

India is a name-match corridor. Supply the account number, the 11-character IFSC code as bankCode, and the accountName.

JSON
{ "country": "IN", "accountNumber": "1001000001", "bankCode": "HDFC0000001", "accountName": "Arjun Kumar" }

A successful match returns status: "success" with verified: true; branch on verified, not status.


Indonesia

Indonesia is a name-match corridor: supply the account number, the bank BIC as bankCode, and the accountName to match.

JSON
{ "country": "ID", "accountNumber": "2002000001", "bankCode": "BMRIIDJA", "accountName": "Budi Santoso" }

A successful match returns status: "success" with verified: true. A mismatch or not-found returns status: "success" with verified: false — branch on verified, not on status.


Vietnam

Vietnam is a name-match corridor: supply the account number, the bank BIC as bankCode, and the accountName to match.

JSON
{ "country": "VN", "accountNumber": "3003000001", "bankCode": "BFTVVNVX", "accountName": "Nguyen Van A" }

A successful match returns status: "success" with verified: true. A mismatch or not-found returns status: "success" with verified: false — branch on verified, not on status.


Nepal

Nepal is a name-match corridor: supply the account number, the bank BIC as bankCode, and the accountName to match.

JSON
{ "country": "NP", "accountNumber": "4004000001", "bankCode": "NABLNPKA", "accountName": "Ram Bahadur" }

A successful match returns status: "success" with verified: true. A mismatch or not-found returns status: "success" with verified: false — branch on verified, not on status.


Pakistan

Pakistan is a name-match corridor: supply the account number, the bank BIC as bankCode, and the accountName to match.

JSON
{ "country": "PK", "accountNumber": "5005000001", "bankCode": "HABBPKKA", "accountName": "Ali Raza" }

A successful match returns status: "success" with verified: true. A mismatch or not-found returns status: "success" with verified: false — branch on verified, not on status.


South Korea

South Korea is a name-match corridor: supply the account number, the bank BIC as bankCode, and the accountName to match.

JSON
{ "country": "KR", "accountNumber": "6006000001", "bankCode": "CZNBKRSE", "accountName": "Kim Min Jun" }

A successful match returns status: "success" with verified: true. A mismatch or not-found returns status: "success" with verified: false — branch on verified, not on status.


Bangladesh

Bangladesh is a name-match corridor: supply the account number, the bank BIC as bankCode, and the accountName to match.

JSON
{ "country": "BD", "accountNumber": "7007000001", "bankCode": "MTBLBDDH", "accountName": "Rahim Uddin" }

A successful match returns status: "success" with verified: true. A mismatch or not-found returns status: "success" with verified: false — branch on verified, not on status.


Malaysia

Malaysia is a name-match corridor: supply the account number, the bank BIC as bankCode, and the accountName to match.

JSON
{ "country": "MY", "accountNumber": "8008000001", "bankCode": "MBBEMYKL", "accountName": "Tan Wei Ming" }

A successful match returns status: "success" with verified: true. A mismatch or not-found returns status: "success" with verified: false — branch on verified, not on status.


Thailand

Thailand is an account-existence corridor. It confirms whether the account exists; it does not perform a name match. accountName is still sent for a consistent request shape, but verified: true means the account exists, not that the name matched.

JSON
{ "country": "TH", "accountNumber": "9009000001", "bankCode": "BKKBTHBK", "accountName": "Somchai P" }

Philippines

Philippines is a format/syntax corridor. It validates the structure of the account; it does not confirm ownership or match a name. verified: true means the account format is valid.

JSON
{ "country": "PH", "accountNumber": "1010000001", "bankCode": "BOPIPHMM", "accountName": "Jose Cruz" }

Brazil

Brazil is a name-match corridor. Supply the IBAN as accountNumber, the holder's tax ID in identifiers — a CPF (individuals) or CNPJ (companies) — and the accountName. No bankCode is required; the routing is embedded in the IBAN.

JSON
{ "country": "BR", "accountNumber": "BR850000000000000000000000001", "accountName": "Maria Silva", "identifiers": [{ "type": "CPF", "value": "00000000000" }] }

A successful match returns status: "success" with verified: true. A mismatch or not-found returns status: "success" with verified: false — branch on verified, not on status.


Mexico

Mexico is a name-match corridor. Supply the 18-digit CLABE as accountNumber and the accountName. No bankCode is required; the CLABE encodes the destination bank.

JSON
{ "country": "MX", "accountNumber": "000000000000000013", "accountName": "Juan Perez" }

A successful match returns status: "success" with verified: true; branch on verified, not on status.


Argentina

Argentina is a name-match corridor. Supply the 22-digit CBU as accountNumber and the accountName. No bankCode is required; the CBU encodes the destination bank.

JSON
{ "country": "AR", "accountNumber": "0000000000000000000000", "accountName": "Ana Gomez" }

A successful match returns status: "success" with verified: true; branch on verified, not on status.


Peru

Peru is a name-match corridor. Supply the 20-digit CCI (Código de Cuenta Interbancario) as accountNumber and the accountName. No bankCode is required.

JSON
{ "country": "PE", "accountNumber": "00000000000000000020", "accountName": "Luis Diaz" }

A successful match returns status: "success" with verified: true; branch on verified, not on status.


Uruguay

Uruguay is a name-match corridor. Supply the account number, the bank BIC as bankCode, and the accountName to match.

JSON
{ "country": "UY", "accountNumber": "UY0000000001", "bankCode": "BROUUYMM", "accountName": "Sofia Sosa" }

A successful match returns status: "success" with verified: true; branch on verified, not on status.


Chile

Chile is a name-match corridor. Supply the account number, the bank's BIC or local clearing code as bankCode, the holder's RUT in identifiers, and the accountName.

JSON
{ "country": "CL", "accountNumber": "CL0000000001", "bankCode": "BCHICLRM", "accountName": "Maria Soto", "identifiers": [{ "type": "RUT", "value": "000000000" }] }

A successful match returns status: "success" with verified: true; branch on verified, not on status.


Colombia

Colombia is a name-match corridor. Supply the account number, the bank's BIC or local clearing code as bankCode, the holder's CC (individuals) or NIT (companies) in identifiers, and the accountName.

JSON
{ "country": "CO", "accountNumber": "CO0000000001", "bankCode": "COLOCOBM", "accountName": "Carlos Ruiz", "identifiers": [{ "type": "NIT", "value": "900000000" }] }

A successful match returns status: "success" with verified: true; branch on verified, not on status.


Ecuador

Ecuador is a name-match corridor. Supply the account number, the bank's BIC or local clearing code as bankCode, the holder's CC or RUC in identifiers, and the accountName.

JSON
{ "country": "EC", "accountNumber": "EC0000000001", "bankCode": "PICHECEQ", "accountName": "Pedro Mora", "identifiers": [{ "type": "RUC", "value": "0000000000001" }] }

A successful match returns status: "success" with verified: true; branch on verified, not on status.


Europe (SEPA)

Europe is a single name-match corridor covering 21 SEPA / Eurozone countries: Austria (AT), Belgium (BE), Bulgaria (BG), Croatia (HR), Cyprus (CY), Estonia (EE), Finland (FI), France (FR), Germany (DE), Greece (GR), Ireland (IE), Italy (IT), Latvia (LV), Lithuania (LT), Luxembourg (LU), Malta (MT), Netherlands (NL), Portugal (PT), Slovakia (SK), Slovenia (SI), and Spain (ES).

Supply the IBAN as accountNumber, the country (the IBAN's country), and the accountName to match. No bankCode is required — the IBAN carries the routing. EUR accounts only.

JSON
{ "country": "DE", "accountNumber": "DE89370400440532013000", "accountName": "Erika Mustermann" }

A strong name match returns status: "success" with verified: true; a partial/weak match or a not-found account returns status: "success" with verified: false — branch on verified, not on status. On verified: true the response echoes back the accountName you submitted; this corridor does not disclose a separately sourced account name. Every SEPA corridor is synchronous only (mode: "async" is not supported).


United Arab Emirates

The UAE is a name-match corridor. Supply the IBAN as accountNumber, the country (AE), and the accountName to match. No bankCode is required — the IBAN carries the routing. AED accounts only.

JSON
{ "country": "AE", "accountNumber": "AE070331234567890123456", "accountName": "Ahmed Al Mansoori" }

A successful match returns status: "success" with verified: true; branch on verified, not on status. On verified: true the response echoes back the accountName you submitted — this corridor does not disclose a separately sourced account name. The UAE corridor is synchronous only (mode: "async" is not supported).


Australia

Australia is a name-match corridor. Supply the account number, the 6-digit BSB (Bank State Branch code) as bankCode, and the accountName to match. AUD accounts only.

JSON
{ "country": "AU", "accountNumber": "123456789", "bankCode": "062000", "accountName": "Emily Chen" }

A successful match returns status: "success" with verified: true; branch on verified, not on status. On verified: true the response echoes back the accountName you submitted — this corridor does not disclose a separately sourced account name. The Australia corridor is synchronous only (mode: "async" is not supported).


United States

The United States is a name-match corridor. Supply the account number, the 9-digit ABA routing number as bankCode, and the accountName to match. USD accounts only.

JSON
{ "country": "US", "accountNumber": "123456789012", "bankCode": "021000021", "accountName": "Jane Smith" }

A successful match returns status: "success" with verified: true; branch on verified, not on status. On verified: true the response echoes back the accountName you submitted — this corridor does not disclose a separately sourced account name. The United States corridor is synchronous only (mode: "async" is not supported).

Sandbox: account 20000001 with ABA routing number 123456789 returns a predictable success.


Next steps