BDBank Routing

Bangladesh · BEFTN

Bank routing numbers, with the receipts.

Look up any BD routing number — or check that the one you already store is real, payable, and actually belongs to the bank whose name sits next to it. Every row here is traceable to the page it was read from and the date it was read.

Institutions
Branches
Districts
Read from the bank itself
Dataset

Lookup

Resolve a routing number, or find a branch

Have the number? Type it and watch it come apart into bank, district and branch. Don’t have it? Pick your bank, district and branch instead — a BD routing number is those three things, so it works in either direction.

Nine digits resolves a branch. Letters search 11,426 branch names.

Optional. We say so if it disagrees with the routing.

Try

Why a lookup is the boring part

What it catches

Each of these reached a live payroll product before it was found. Every example below runs in the box above.

The name disagrees with the routing

A record read CITIBANK N.A; the employee banked at CITY BANK PLC. Two banks, four characters apart. The first three digits settle it — nobody else would have.

It is not a branch at all

TRUNCATION POINT, RTGS-*, CLEARING HOUSE, AGENT BANKING sit in the official table and look exactly like branches in a dropdown. A salary cannot be paid into any of them. 96 were selectable.

The institution takes no salaries

Bangladesh Bank's clearing points and the Controller General of Accounts' ministry units are real routing numbers nobody holds an account at. Carried here, flagged, so a lookup answers instead of shrugging.

A bank publishing another bank's prefix

UCB's own locator prints 215761333 for its Kashinathpur branch. 215 is Standard Chartered. The district digits are right, so the branch is real and only the prefix is wrong — and the obvious repair appears in no source, so it is not here.

Coverage

Every institution, and where its rows came from

Select a row to list its branches. Two banks are carried but flagged unpayable — they are real routing numbers that no salary can reach.

Sorted by routing prefix. Select any row to expand its branches.
Status

Provenance

Where every row came from

Two kinds of source, recorded per bank rather than blurred into one number.

Source mix

The BACH table — the consolidated routing list dated 26.06.2025, published by Dhaka Bank PLC — is used additively, for banks that publish no routing numbers themselves. It is a snapshot, so it is never treated as authority for a branch being absent.

Corroboration

Cross-checking the whole set against that table: 99.4% corroborated, zero contradictions — no routing is filed here under a different bank than the table files it under.

The 0.6% are branches opened since June 2025, or published by a bank and not yet in the consolidated list. Absence from a snapshot is not evidence.

What is deliberately missing

An invented routing number does not fail. It is well-formed, passes every structural check, and pays a real account belonging to someone else. So where the evidence runs out, the row is left out:

  • 11 branches a bank lists without publishing a routing
  • 1 branch whose bank prints another bank's prefix
  • 1 routing no source can name
  • 3 scheduled banks with no published routings at all

Each one is named, with what would close it →

On staleness. Banks open, close and rename branches. This is a snapshot, and every bank above shows the date it was checked so you can judge for yourself. It does not promise a freshness nobody is maintaining.

Questions

Bangladesh routing numbers, answered

The things people actually need to know before they trust a nine-digit number.

What is a bank routing number in Bangladesh?

A Bangladeshi routing number is a nine-digit code that identifies one specific bank branch for BEFTN and EFT transfers. It is issued by Bangladesh Bank and is not the same as a SWIFT or BIC code, which identifies a bank internationally rather than a branch.

How many digits is a Bangladesh routing number?

Nine. The structure is bank (3 digits) + district (2 digits) + branch (3 digits) + a check digit. For example 225150135 is City Bank PLC (225), Chattogram district (15), branch 013, check digit 5.

How do I find my bank's routing number?

It is printed on the bottom of a cheque leaf, and most banks publish a branch list with routing numbers on their own website. You can also search this site by bank or branch name, or open the page for your bank to see every branch it has.

Do the first three digits of a routing number mean anything?

Yes — the first three digits are the bank itself, and digits 4 and 5 are the district. That makes a routing number checkable: if a record stores CITIBANK N.A next to a routing number starting 225, the record is wrong, because 225 is City Bank PLC.

Is a routing number the same as a branch code or SWIFT code?

No. A routing number is a nine-digit domestic code used for BEFTN and RTGS inside Bangladesh. A SWIFT/BIC code is 8 or 11 characters and is used for international transfers. Some banks also use their own internal branch codes, which are different again.

Can every routing number receive a salary?

No. Some entries in the official routing table are settlement endpoints such as TRUNCATION POINT, CLEARING HOUSE, RTGS and CARD DIVISION, and Bangladesh Bank's own clearing points and the Controller General of Accounts' ministry units are real routing numbers nobody holds an account at. This site flags all of them.

Use it

Two packages, one dataset

Python and JavaScript are thin wrappers over the same canonical JSON, so they cannot drift on behaviour and the data cannot drift at all.

# Python
pip install bd-bank-routing

import bdbanks

bdbanks.lookup("225150135")
# Branch(routing='225150135', name='Agrabad Branch',
#        district='CHATTOGRAM', bank_code='225',
#        bank_name='CITY BANK PLC', payable=True)

bdbanks.check("225150135", bank_name="Citibank N.A").ok
# False
// JavaScript / TypeScript
npm install bd-bank-routing

import { lookup, check } from "bd-bank-routing";

lookup("225150135")?.bankName;
// "CITY BANK PLC"

check("225150135", "Citibank N.A").ok;
// false
Or take data/banks.json and use it however you like — it is the same file both packages ship, it has no dependencies, and the data is CC0. Code is MIT.