Nigerian bank codes: the complete reference for developers
Every Nigerian bank code, SWIFT/BIC, and USSD shortcode in one place — plus how to query them programmatically via the Mansa API.
Every Nigerian bank transfer, direct debit, and payment routing instruction depends on a three-to-six-digit bank code assigned by the Central Bank of Nigeria (CBN) and administered through the Nigeria Inter-Bank Settlement System (NIBSS). These codes are sometimes called sort codes, bank codes, or NIBSS codes — they all refer to the same thing.
This guide covers every Nigerian bank code in one place, explains the difference between NIBSS codes and SWIFT/BIC codes, and shows you how to query them programmatically using the Mansa API.
What is a Nigerian bank code?
A Nigerian bank code is a numeric identifier assigned to each licensed financial institution operating in Nigeria. It is used by the NIBSS Instant Payment (NIP) system — the rails that power virtually all interbank transfers in Nigeria — to route money to the correct institution.
When you initiate a transfer on any Nigerian banking app and select "GTBank", the app translates that selection into bank code 058. NIBSS uses that code to route the transaction. Without it, the transfer cannot be processed.
Complete list of Nigerian bank codes
The following table covers all licensed commercial banks, microfinance banks, and digital financial institutions currently operating in Nigeria. Data is sourced from NIBSS and kept current via the Mansa API identity suite.
| Bank | NIBSS Code | SWIFT / BIC | USSD | Type |
|---|---|---|---|---|
| Access Bank | 044 | ABNGNGLA | *901# | commercial |
| Citibank Nigeria | 023 | CITINGLA | — | commercial |
| Ecobank Nigeria | 050 | ECOCNGLA | *326# | commercial |
| Fidelity Bank | 070 | FIDTNGLA | *770# | commercial |
| First Bank of Nigeria | 011 | FBNINGLA | *894# | commercial |
| First City Monument Bank (FCMB) | 214 | FCMBNGLA | *329# | commercial |
| Guaranty Trust Bank (GTBank) | 058 | GTBINGLA | *737# | commercial |
| Heritage Bank | 030 | HBCLNGLA | *322# | commercial |
| Jaiz Bank | 301 | JAIZNGLE | *389*301# | non_interest |
| Keystone Bank | 082 | PLNINGLA | *7111# | commercial |
| Kuda Microfinance Bank | 50211 | — | — | microfinance |
| OPay Digital Services | 999992 | — | *955# | fintech |
| PalmPay | 999991 | — | — | fintech |
| Polaris Bank | 076 | SKYNGLA | *833# | commercial |
| Providus Bank | 101 | — | — | commercial |
| Stanbic IBTC Bank | 221 | SBICNGLA | *909# | commercial |
| Standard Chartered Bank | 068 | SCBLNGLA | — | commercial |
| Sterling Bank | 232 | NAMENGLA | *822# | commercial |
| SunTrust Bank | 100 | — | — | commercial |
| Union Bank of Nigeria | 032 | UBNINGLA | *826# | commercial |
| United Bank for Africa (UBA) | 033 | UNAFNGLA | *919# | commercial |
| Unity Bank | 215 | ICITNGLA | *7799# | commercial |
| VFD Microfinance Bank | 566 | — | — | microfinance |
| Wema Bank | 035 | WEMANGLA | *945# | commercial |
| Zenith Bank | 057 | ZEIBNGLA | *966# | commercial |
| Coronation Bank | 559 | — | — | commercial |
| Parallex Bank | 526 | — | — | commercial |
| Globus Bank | 00103 | — | — | commercial |
| Lotus Bank | 303 | — | — | non_interest |
| Moniepoint Microfinance Bank | 50515 | — | *5573# | microfinance |
NIBSS codes vs SWIFT/BIC codes
The distinction matters when you are building payment flows or KYC integrations:
| NIBSS Bank Code | SWIFT / BIC Code | |
|---|---|---|
| Used for | Domestic NIP transfers | International wire transfers |
| Format | 3–6 digits | 8 or 11 characters (XXXXNGLA) |
| Example (GTBank) | 058 | GTBINGLA |
| Required by | All Nigerian apps, fintechs | Foreign bank transfers |
| Who assigns it | CBN / NIBSS | SWIFT network |
For Nigerian retail fintech — transfer apps, wallet providers, payment gateways — you almost always need the NIBSS code. The SWIFT code becomes relevant when your product touches international remittance or cross-border B2B payments.
Neobank and fintech codes
The codes for neobanks and mobile money providers are the ones developers most frequently search for because they are newer, not in old reference lists, and have higher transaction volumes among younger demographics.
| Bank | NIBSS Code | USSD | Note |
|---|---|---|---|
| OPay Digital Services | 999992 | *955# | Highest mobile money volume in Nigeria |
| PalmPay | 999991 | — | Second-largest mobile money provider |
| Moniepoint MFB | 50515 | *5573# | Unicorn — fastest-growing agent banking network |
| Kuda MFB | 50211 | — | Digital-only microfinance bank |
Querying bank codes via API
Hard-coding a bank code list in your app is a maintenance problem. Banks get acquired, codes change, new institutions launch. The Mansa API identity suite gives you a live, maintained bank code reference you can query at runtime.
Get all Nigerian banks
curl "https://mansaapi.com/api/v1/identity/banks?country=NG" \
-H "Authorization: Bearer YOUR_API_KEY"{
"success": true,
"data": [
{
"name": "Access Bank",
"code": "044",
"swift_code": "ABNGNGLA",
"type": "commercial",
"country": "NG",
"mobile_money": false,
"ussd": "*901#"
},
{
"name": "Guaranty Trust Bank (GTBank)",
"code": "058",
"swift_code": "GTBINGLA",
"type": "commercial",
"country": "NG",
"mobile_money": false,
"ussd": "*737#"
}
]
}Get a single bank by code
curl https://mansaapi.com/api/v1/identity/banks/058 \
-H "Authorization: Bearer YOUR_API_KEY"Using the Node.js SDK
import { MansaAPI } from "mansaapi";
const mansa = new MansaAPI({ apiKey: "mansa_live_sk_..." });
// All Nigerian banks
const { data: banks } = await mansa.identity.getBanks({ country: "NG" });
// Single bank by code
const { data: gtbank } = await mansa.identity.getBank("058");
console.log(gtbank.name); // "Guaranty Trust Bank (GTBank)"
console.log(gtbank.swift_code); // "GTBINGLA"
console.log(gtbank.ussd); // "*737#"Install the SDK
npm install mansaapiValidating the bank code in a transfer flow
A common use case: a user enters a destination account number and selects a bank. Before sending the transfer, validate that the bank code exists and is active.
import { MansaAPI, MansaAPIError } from "mansaapi";
const mansa = new MansaAPI({ apiKey: process.env.MANSA_API_KEY });
async function validateBank(bankCode: string) {
try {
const { data: bank } = await mansa.identity.getBank(bankCode);
return { valid: true, bank };
} catch (err) {
if (err instanceof MansaAPIError && err.status === 404) {
return { valid: false, bank: null };
}
throw err;
}
}
// Usage
const result = await validateBank("058");
if (result.valid) {
console.log(`Routing to: ${result.bank.name}`); // "Guaranty Trust Bank"
}Building a bank selector dropdown
For payment forms that need a bank dropdown, fetch the full list once at startup and cache it. Bank codes change infrequently — daily cache is sufficient.
const { data: banks } = await mansa.identity.getBanks({ country: "NG" });
const options = banks
.filter(b => b.type !== "microfinance") // optional: exclude MFBs
.map(b => ({
label: b.name,
value: b.code,
}));Free tool
Need to look up a bank code without writing code? Use the free bank code finder — search any African bank by name, code, or SWIFT, and get the exact API request back.