(Note · · 5 min read)
How to read a Bangladesh bank routing number
A routing number tells BEFTN which bank and branch an account belongs to. Payroll, HR and fintech products store one for every person they pay. I built an open dataset of 63 institutions and 11,426 branch routing numbers — this is what reading all of them taught me.
By Md. Habibur Rahman Shohel, full-stack developer in Dhaka
The nine digits
A Bangladesh routing number is always nine digits, and each part means something. You can read most of it without looking anything up:
routing 225150135
└─┬─┘└┬┘└┬┘│
│ │ │ └── check digit
│ │ └──── branch
│ └─────── district (15 = Chattogram)
└─────────── bank (225 = City Bank PLC)- Digits 1–3: the bank. 225 is City Bank PLC.
- Digits 4–5: the district the branch is in. 15 is Chattogram.
- Digits 6–8: the branch inside that bank.
- Digit 9: a check digit.
Because the first three digits are the bank, a routing number settles which bank an account is at — even when the bank name stored beside it says something else.
Check it before you pay
Looking a number up is the easy part. These are the problems that cost money, found in a real payroll product:
- The name disagrees with the routing. A record said CITIBANK N.A; the person banked at CITY BANK PLC. Two different banks, four characters apart. The routing number is the one to trust.
- It isn't a branch at all. Entries such as TRUNCATION POINT, RTGS, CLEARING HOUSE, AGENT BANKING, REMITTANCE and CARD DIVISION sit in the official routing table and look like branches in a dropdown — but a salary can't be paid into any of them.
- The institution can't hold a salary account. Bangladesh Bank's 35 clearing points and the Controller General of Accounts' 11 ministry units have real routing numbers, but no employee has an account there.
- Lookalike banks. City Bank, Citibank and Citizens Bank are three different banks.
- Old names. A bank that has been renamed (The Farmers Bank is now Padma Bank) should still be found by either name.
An invented routing number does not fail — it pays a real account belonging to someone else.
Where the numbers come from
Every bank in the dataset records the page it was read from and the date. 31 banks were read from their own websites. The other 32 come from the consolidated BACH routing table (26 June 2025, published by Dhaka Bank PLC). Checked against that table, 99.4% of numbers agree and none are filed under a different bank.
Banks open, close and rename branches, so any list goes out of date. Look at the date a bank was checked before you rely on it, and prefer the bank's own branch page when they disagree.
Look one up, or check them in code
The free lookup site splits any routing number into bank, district, branch and check digit, and shows where it came from. For software, the same data ships as a Python and a JavaScript package:
pip install bd-bank-routing
npm install bd-bank-routing
# Python
import bdbanks
bdbanks.lookup("225150135") # City Bank PLC, Agrabad Branch, Chattogram
bdbanks.check("225150135", bank_name="Citibank N.A").problems
// JavaScript
import { lookup, check } from "bd-bank-routing";
check("225150135", "Citibank N.A").ok; // false