Razorpay IFSC
App · Payments & Billing · 7 actions
Look up any Indian bank branch from its IFSC code, using Razorpay's free copy of the Reserve Bank's directory. Turn a code into the bank, branch, address, phone number, MICR and SWIFT codes, and which of NEFT, RTGS, IMPS and UPI the branch is enabled for, so a workflow can show somebody where a payment is going or check that a transfer method will work before attempting it. Check a whole column of codes before a payout run and get the bad rows back by name, with a code that is mistyped kept apart from one that names a branch which no longer exists. Or work the other way and find the code: search by bank, state and city, or narrow a bank down through the states, districts and branches it actually has. Every action reads: nothing here changes anything. No account or API key required.
Actions
| Action | What it does |
|---|---|
| Check an IFSC code | Answer yes or no for one IFSC code, and say why when the answer is no. Nothing fails this step: it is meant to be pointed at whatever somebody typed into a form or a spreadsheet, so an empty field or a line of nonsense is a result rather than an error. |
| Check several IFSC codes | Check a whole column of bank details in one step, and get back the bad rows by name. |
| Find branches | Search the directory for branches when you have the bank and the place but not the code: every HDFC branch in Bangalore, or the one branch of a co-operative bank in a particular city. |
| List a bank's branches in a district | The names of every branch one bank has in one district. |
| List a bank's districts in a state | The districts one bank has branches in, inside one state. |
| List the states a bank is in | Find out where a bank operates: every state and union territory it has a branch in. |
| Look up an IFSC code | Turn an IFSC code into the branch it names: the bank, the branch, its address, its phone number, its MICR and SWIFT codes, and which of NEFT, RTGS, IMPS and UPI it is enabled for. |
Check an IFSC code
Answer yes or no for one IFSC code, and say why when the answer is no. Nothing fails this step: it is meant to be pointed at whatever somebody typed into a form or a spreadsheet, so an empty field or a line of nonsense is a result rather than an error. It keeps the two ways of being wrong apart, which the directory's own API cannot: a code that is misspelled, checked offline against the format the Reserve Bank defines, and a code that is spelled perfectly for a branch that is not there. The reason it gives back is written to be shown to whoever typed it. When the code is good it also comes back with the bank, branch and city, which is what a confirmation screen needs. No account or API key required.
Inputs
- IFSC code
ifsctextRequired - The code to check, exactly as it was given to you. It does not have to be well formed, or even present: this step is here to tell you whether it is.
Outputs
banktext- The bank, when the code is valid.
bank_codetext- The bank's four-letter code, when the code is valid.
branchtext- The branch name, when the code is valid.
citytext- The city, when the code is valid.
existstrue/false- Whether the directory has a branch with this code.
giventext- The code exactly as typed.
ifsctext- The code that was checked, cleaned of spacing.
reasontext- Why it is not valid, in words that can be shown to whoever typed it. Empty when it is valid.
statetext- The state, when the code is valid.
summarytext- The bank, branch and city in one line, to show somebody confirming the account.
validtrue/false- True only when the code is well formed and the directory has the branch. This is the field to branch on.
well_formedtrue/false- Whether it is spelled like an IFSC code at all: eleven characters, four letters, then a '0', then six more.
Example output
{
"bank": "HDFC Bank",
"bank_code": "HDFC",
"branch": "TULSIANI CHMBRS - NARIMAN PT",
"city": "GREATER MUMBAI",
"exists": true,
"given": "HDFC 0000001",
"ifsc": "HDFC0000001",
"reason": "",
"state": "MAHARASHTRA",
"summary": "HDFC Bank - TULSIANI CHMBRS - NARIMAN PT, GREATER MUMBAI",
"valid": true,
"well_formed": true
}Check several IFSC codes
Check a whole column of bank details in one step, and get back the bad rows by name. This is the pre-flight before a payout run, a vendor import or a payroll upload: paste the codes, one a line, and the step reports how many are good, which are not IFSC codes at all, and which are spelled correctly for branches that do not exist. No single bad code can fail it, and 'all valid' is there to branch on so a workflow can stop before it moves money. A code repeated down the list is looked up once. If the directory itself cannot be reached the step does fail, deliberately: marking a hundred accounts 'not found' because a service is down is the one wrong answer here. No account or API key required.
Inputs
- IFSC codes
ifsc_codeslistRequired - The codes to check, one on each line, or a list from an earlier step. Up to 100 in a step; each one is its own request to the directory, so a longer list belongs in a loop. Spacing, hyphens and lower case are all fine.
Outputs
all_validtrue/false- True when every code was found. The field to branch on before a payout run.
checkednumber- How many codes were checked.
found_countnumber- How many were found in the directory.
invalid_codeslist- The codes that are not IFSC codes, as they were given.
invalid_countnumber- How many are not IFSC codes at all.
missing_codeslist- The well-formed codes the directory does not have.
missing_countnumber- How many were spelled correctly but are not in the directory.
resultslist- One row per code, in the order they were given.
Example output
{
"all_valid": false,
"checked": 3,
"found_count": 2,
"invalid_codes": [
"HDFC000001"
],
"invalid_count": 1,
"missing_codes": [],
"missing_count": 0,
"results": [
{
"branch": {
"address": "101-104 TULSIANI CHAMBERS FREE PRESS JOURNAL MARG NARIMAN POINT MUMBAI MAHARASHTRA 400 021",
"bank": "HDFC Bank",
"bank_code": "HDFC",
"branch": "TULSIANI CHMBRS - NARIMAN PT",
"centre": "MUMBAI",
"city": "GREATER MUMBAI",
"contact": "+919890603333",
"district": "MUMBAI",
"ifsc": "HDFC0000001",
"ifsc_bank_code": "HDFC",
"imps": true,
"is_sublet": false,
"micr": "400240003",
"neft": true,
"payment_systems": [
"NEFT",
"RTGS",
"IMPS",
"UPI"
],
"rtgs": true,
"state": "MAHARASHTRA",
"state_code": "IN-MH",
"summary": "HDFC Bank - TULSIANI CHMBRS - NARIMAN PT, GREATER MUMBAI",
"swift": "HDFCINBB",
"upi": true
},
"found": true,
"given": "HDFC0000001",
"ifsc": "HDFC0000001",
"reason": "",
"valid": true,
"well_formed": true
},
{
"branch": {
"address": "720, NEAR GHANTAGHAR, SUBZI MANDI, DELHI - 110007",
"bank": "Delhi Nagrik Sehkari Bank",
"bank_code": "DENS",
"branch": "Delhi Nagrik Sehkari Bank IMPS",
"centre": "DELHI",
"city": "MUMBAI",
"contact": "+919560344685",
"district": "DELHI",
"ifsc": "YESB0DNB002",
"ifsc_bank_code": "YESB",
"imps": true,
"is_sublet": true,
"micr": "110196002",
"neft": true,
"payment_systems": [
"NEFT",
"RTGS",
"IMPS",
"UPI"
],
"rtgs": true,
"state": "MAHARASHTRA",
"state_code": "IN-MH",
"summary": "Delhi Nagrik Sehkari Bank IMPS, MUMBAI",
"swift": "",
"upi": true
},
"found": true,
"given": "YESB0DNB002",
"ifsc": "YESB0DNB002",
"reason": "",
"valid": true,
"well_formed": true
},
{
"branch": {
"address": "",
"bank": "",
"bank_code": "",
"branch": "",
"centre": "",
"city": "",
"contact": "",
"district": "",
"ifsc": "",
"ifsc_bank_code": "",
"imps": false,
"is_sublet": false,
"micr": "",
"neft": false,
"payment_systems": [],
"rtgs": false,
"state": "",
"state_code": "",
"summary": "",
"swift": "",
"upi": false
},
"found": false,
"given": "HDFC000001",
"ifsc": "HDFC000001",
"reason": "'HDFC000001' is 10 characters long once spacing is removed, and an IFSC code is 11: four letters for the bank, a '0', then six for the branch, as in HDFC0000001.",
"valid": false,
"well_formed": false
}
]
}Find branches
Search the directory for branches when you have the bank and the place but not the code: every HDFC branch in Bangalore, or the one branch of a co-operative bank in a particular city. Each result is a full branch record with its IFSC code on it, so this is the step that produces the code the other actions consume. Results come back a page at a time, up to a hundred, and the result says how many matched in total and what to set 'Skip' to for the next page. The directory matches these filters exactly, which is a trap worth knowing about: it stores every city and district in capitals, so a city typed in ordinary case matches nothing at all. This step folds them for you, and takes a state as a name, a code or a two-letter abbreviation. A branch name is the one filter that cannot be folded, because some are genuinely mixed case; take those from 'List a bank's branches in a district'. No account or API key required.
Inputs
- Bank
bank_codetext - The bank, as the four letters its IFSC codes start with, or any whole IFSC code from that bank. Leave it empty to search every bank.
- State
statetext - Only branches in this state or union territory. 'Karnataka', 'KA' and 'IN-KA' all work. Leave it empty for the whole country.
- City
citytext - Only branches in this city. The directory matches it exactly, so this has to be the city it files the branch under rather than the one you would say out loud: HDFC's Nariman Point branch is in 'GREATER MUMBAI', and its AGS Employees branch is in 'BANGALORE URBAN', not 'BANGALORE'. Case does not matter. A search that comes back empty is usually this.
- Branch name
branchtext - Only the branch with exactly this name. Case matters here and nowhere else in this step, because 1,298 branch names are not in capitals. Take the name from 'List a bank's branches in a district', which spells them the way the directory does.
- How many branches
limitnumber - How many branches to return, from 1 to 100. Twenty five by default. The directory will not send more than a hundred at once; use 'Skip' to page past them.From 1 to 100. Default:
25. - Skip
offsetnumber - How many matching branches to skip before returning any, for paging through a bank with more branches than one step can hold. Each result carries the value to use for the next page.At least 0. Default:
0.
Outputs
bank_codetext- The bank filtered to, if any.
branchtext- The branch name filtered to.
brancheslist- The branches this page returned.
citytext- The city filtered to, in the capitals the directory uses.
countnumber- How many branches came back.
filteredtrue/false- Whether any filter was applied. False means this is simply the front of the whole directory.
filters_usedlist- Which filters were applied, as names.
has_moretrue/false- Whether there are more branches behind this page.
limitnumber- How many branches were asked for.
matched_countnumber- How many branches matched the filters in total, before the page was taken.
next_offsetnumber- The 'Skip' value that returns the next page.
offsetnumber- How many were skipped.
statetext- The state filtered to, if any.
state_codetext- That state's ISO code, which is what was sent.
Example output
{
"bank_code": "HDFC",
"branch": "",
"branches": [
{
"address": "101-104 TULSIANI CHAMBERS FREE PRESS JOURNAL MARG NARIMAN POINT MUMBAI MAHARASHTRA 400 021",
"bank": "HDFC Bank",
"bank_code": "HDFC",
"branch": "TULSIANI CHMBRS - NARIMAN PT",
"centre": "MUMBAI",
"city": "GREATER MUMBAI",
"contact": "+919890603333",
"district": "MUMBAI",
"ifsc": "HDFC0000001",
"ifsc_bank_code": "HDFC",
"imps": true,
"is_sublet": false,
"micr": "400240003",
"neft": true,
"payment_systems": [
"NEFT",
"RTGS",
"IMPS",
"UPI"
],
"rtgs": true,
"state": "MAHARASHTRA",
"state_code": "IN-MH",
"summary": "HDFC Bank - TULSIANI CHMBRS - NARIMAN PT, GREATER MUMBAI",
"swift": "HDFCINBB",
"upi": true
}
],
"city": "GREATER MUMBAI",
"count": 1,
"filtered": true,
"filters_used": [
"bank",
"state",
"city"
],
"has_more": false,
"limit": 25,
"matched_count": 1,
"next_offset": 1,
"offset": 0,
"state": "MAHARASHTRA",
"state_code": "IN-MH"
}List a bank's branches in a district
The names of every branch one bank has in one district. The last step of narrowing a branch down, and the one that makes 'Find branches' usable: the names come back spelled exactly as the directory spells them, which is what its branch filter needs and what nobody can guess, since some are in capitals and some are not. Pick a name here, pass it to Find branches, and you have the IFSC code. No account or API key required.
Inputs
- Bank
bank_codetextRequired - The bank, as the four letters its IFSC codes start with: HDFC, SBIN, ICIC, UTIB for Axis, KKBK for Kotak. Nobody memorises these, so any whole IFSC code from the bank works too and the four letters are taken from it. One caution: on a sublet branch those four letters name the bank whose code is being borrowed rather than the bank using it, so YESB0DNB002 asks about YES Bank. Look the code up first if you need the bank that actually holds the account.
- State
statetextRequired - The state or union territory. The list offers the ones this bank actually has branches in, and anything can be typed instead: 'Maharashtra', 'MH' and 'IN-MH' all name the same state. The directory itself filters on the ISO code only, so a name typed straight into its API matches nothing; here either spelling works.
- District
districttextRequired - The district, as the directory spells it. The list offers the districts this bank is in within the chosen state, and any other can be typed. Case does not matter.
Outputs
bank_codetext- The bank that was asked about.
brancheslist- The branch names, alphabetically, spelled exactly as the directory does so they can be passed straight to Find branches.
countnumber- How many came back.
districttext- The district that was asked about.
statetext- The state that was asked about.
state_codetext- That state's ISO code.
Example output
{
"bank_code": "AUBL",
"branches": [
"AB Road Indore",
"Barlai Jagir",
"INDORE JAWAHAR MARG",
"MG ROAD INDORE"
],
"count": 4,
"district": "INDORE",
"state": "MADHYA PRADESH",
"state_code": "IN-MP"
}List a bank's districts in a state
The districts one bank has branches in, inside one state. The second step of narrowing a branch down: pick the bank, pick the state, and this is what is left to choose from. The state can be given as a name, a code or a two-letter abbreviation, and the dropdown offers the states this particular bank is actually in rather than all 36. No account or API key required.
Inputs
- Bank
bank_codetextRequired - The bank, as the four letters its IFSC codes start with: HDFC, SBIN, ICIC, UTIB for Axis, KKBK for Kotak. Nobody memorises these, so any whole IFSC code from the bank works too and the four letters are taken from it. One caution: on a sublet branch those four letters name the bank whose code is being borrowed rather than the bank using it, so YESB0DNB002 asks about YES Bank. Look the code up first if you need the bank that actually holds the account.
- State
statetextRequired - The state or union territory. The list offers the ones this bank actually has branches in, and anything can be typed instead: 'Maharashtra', 'MH' and 'IN-MH' all name the same state. The directory itself filters on the ISO code only, so a name typed straight into its API matches nothing; here either spelling works.
Outputs
bank_codetext- The bank that was asked about.
countnumber- How many came back.
districtslist- The districts, alphabetically, in capitals.
statetext- The state that was asked about.
state_codetext- That state's ISO code.
Example output
{
"bank_code": "AUBL",
"count": 3,
"districts": [
"INDORE",
"RATLAM",
"UJJAIN"
],
"state": "MADHYA PRADESH",
"state_code": "IN-MP"
}List the states a bank is in
Find out where a bank operates: every state and union territory it has a branch in. This is the first step of narrowing down a branch when all you have is the bank, and it is how you tell a bank with 22 states behind it from a co-operative that only exists in one district. Each state comes back twice over, as the name the directory prints and as the ISO code its own filters require. The two are not interchangeable, and passing the name back to the directory returns an empty list rather than an error, which is why this drill-down is easy to get wrong by hand. No account or API key required.
Inputs
- Bank
bank_codetextRequired - The bank, as the four letters its IFSC codes start with: HDFC, SBIN, ICIC, UTIB for Axis, KKBK for Kotak. Nobody memorises these, so any whole IFSC code from the bank works too and the four letters are taken from it. One caution: on a sublet branch those four letters name the bank whose code is being borrowed rather than the bank using it, so YESB0DNB002 asks about YES Bank. Look the code up first if you need the bank that actually holds the account.
Outputs
bank_codetext- The bank that was asked about.
countnumber- How many came back.
giventext- What was typed into the bank field.
state_codeslist- Just the codes, ready to loop over.
state_nameslist- Just the names, for a message or a list.
stateslist- The states, alphabetically, each with both spellings.
Example output
{
"bank_code": "AUBL",
"count": 3,
"given": "AUBL",
"state_codes": [
"IN-GJ",
"IN-KA",
"IN-MH"
],
"state_names": [
"GUJARAT",
"KARNATAKA",
"MAHARASHTRA"
],
"states": [
{
"code": "IN-GJ",
"name": "GUJARAT"
},
{
"code": "IN-KA",
"name": "KARNATAKA"
},
{
"code": "IN-MH",
"name": "MAHARASHTRA"
}
]
}Look up an IFSC code
Turn an IFSC code into the branch it names: the bank, the branch, its address, its phone number, its MICR and SWIFT codes, and which of NEFT, RTGS, IMPS and UPI it is enabled for. This is the step behind showing somebody which account they are about to pay, filling a vendor record from one field, or checking that a transfer method will work before attempting it. The code can be pasted however it was written down, in any case and with spaces or hyphens in it. Two things worth knowing: a code that is not an IFSC code at all fails the step, because a lookup with nothing to look up has nothing to report, so point 'Check an IFSC code' at anything typed by hand; and one branch in a thousand is a sublet, where a small bank operates on a large bank's code, in which case the bank named here is the one holding the account and not the one the code begins with. No account or API key required.
Inputs
- IFSC code
ifsctextRequired - The eleven-character code for the branch, such as HDFC0000001. Spacing, hyphens and lower case are all fine: 'hdfc 0000001' and 'HDFC-0000001' name the same branch.
Outputs
branchobject- The branch, or a record of empty fields when there was none.
foundtrue/false- Whether the directory has this branch.
giventext- The code exactly as typed.
ifsctext- The code that was looked up, cleaned of spacing and separators.
Example output
{
"branch": {
"address": "101-104 TULSIANI CHAMBERS FREE PRESS JOURNAL MARG NARIMAN POINT MUMBAI MAHARASHTRA 400 021",
"bank": "HDFC Bank",
"bank_code": "HDFC",
"branch": "TULSIANI CHMBRS - NARIMAN PT",
"centre": "MUMBAI",
"city": "GREATER MUMBAI",
"contact": "+919890603333",
"district": "MUMBAI",
"ifsc": "HDFC0000001",
"ifsc_bank_code": "HDFC",
"imps": true,
"is_sublet": false,
"micr": "400240003",
"neft": true,
"payment_systems": [
"NEFT",
"RTGS",
"IMPS",
"UPI"
],
"rtgs": true,
"state": "MAHARASHTRA",
"state_code": "IN-MH",
"summary": "HDFC Bank - TULSIANI CHMBRS - NARIMAN PT, GREATER MUMBAI",
"swift": "HDFCINBB",
"upi": true
},
"found": true,
"given": "hdfc0000001",
"ifsc": "HDFC0000001"
}