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
GhanaGHStandardSort/routing code (e.g. GH010100)
KenyaKENot supported: use M-Pesa
ZambiaZMStandard3-digit code
TanzaniaTZStandard3-digit code
EthiopiaETStandard6-digit code
United KingdomGB8 digits6-digit sort codeaccountName
ChinaCNUnionPay card or corporate accountBIC/SWIFTaccountName, accountHolderType, identifiers (business)

Note

mode: "async" is supported for NG, GH, and ZM only. Tanzania, Ethiopia, the United Kingdom, and China are synchronous: every 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

Legacy 3-digit bank codes (e.g. 044) are not accepted. 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 current list at runtime:

Terminal
curl https://api.lira.com/api/v1/client/countries/NG/banks \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
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 sort/routing code (e.g. GH010100).

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

Note

Ghana returns accountName, bankCode, and bankName only, with no address fields (state, lga).


Kenya

Standard bank account verification is not supported for Kenya. Use the M-Pesa endpoints instead:

VerificationEndpoint
Lipa Na M-Pesa (paybill / till)POST /verify/lipa-na-mpesa
M-Pesa AgentPOST /verify/mpesa-agent

See Mobile Money for the full guide.


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

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 also a name-match corridor and supports two account types via accountHolderType:

  • INDIVIDUAL: a UnionPay card number (16–19 digits, starting with 62)
  • BUSINESS: a corporate account; the identifiers array must include a BUSINESS_REGISTRATION entry carrying the company's 18-character Uniform Credit Code

bankCode is the bank's BIC/SWIFT code (8 or 11 characters).

JSON
{
  "country": "CN",
  "accountHolderType": "INDIVIDUAL",
  "accountNumber": "6228480402564890018",
  "bankCode": "ABOCCNBJ",
  "accountName": "王明"
}
JSON
{
  "country": "CN",
  "accountHolderType": "BUSINESS",
  "accountNumber": "321872160000",
  "bankCode": "ABOCCNBJ",
  "accountName": "Beijing Apple and Orange Company",
  "identifiers": [
    { "type": "BUSINESS_REGISTRATION", "value": "91111111ABCXYZ123" }
  ]
}

Missing required fields (accountHolderType, or the BUSINESS_REGISTRATION identifier on a business account) return VALIDATION_ERROR.

Warning

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


Next steps