Free IBAN API
Turn an IBAN into the bank behind it - name, BIC/SWIFT code, city and address - for 60+ countries. No API key. No sign-up. CORS enabled, so it works from a browser as well as a server.
Resolve an IBAN
Send an array of IBANs. You get one result per IBAN, in the same order.
curl -X POST https://iban-analyzer.com/api/v1/public/analyze \
-H "Content-Type: application/json" \
-d '["DK4890041234567890"]'
Response:
{
"results": [
{
"iban": "DK4890041234567890",
"isValid": true,
"validationBreakdown": {
"ibanCheckDigitValid": true,
"ibanMod97Valid": true,
"lengthValid": true,
"structureValid": true,
"overallValid": true
},
"ibanDetails": {
"iban": "DK4890041234567890",
"countryCode": "DK",
"bankCode": "9004",
"accountNumber": "1234567890"
},
"countryInfo": { "code": "DK", "name": "Denmark", "sepaSupport": true },
"bankDetails": {
"bankName": "SPAR NORD BANK A/S",
"swiftCode": "SPNODK22XXX",
"bankCity": "AALBORG",
"bankAddress": "SKELAGERVEJ 15",
"bankZipCode": "9200"
},
"bankDataAvailable": true
}
]
}
From a browser
const res = await fetch("https://iban-analyzer.com/api/v1/public/analyze", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(["DK4890041234567890"]),
});
const { results } = await res.json();
console.log(results[0].bankDetails.bankName); // SPAR NORD BANK A/S
Supported countries
curl https://iban-analyzer.com/api/v1/public/supported-countries
What you get, and what you don't
Validation is a checksum and works for every IBAN country. Naming the bank behind the account needs reference data, which we compile from national registers - the Deutsche Bundesbank Bankleitzahlen file, Oesterreichische Nationalbank, the National Bank of Ukraine, Banka Slovenije, Banco de España, Narodná banka Slovenska, Banco Central do Brasil, Bits AS, Finanssiala, the Central Bank of Cyprus, and the GLEIF BIC-to-LEI mapping.
Where we hold no bank for an IBAN, bankDataAvailable
is false and
bankDetails is absent. That is
deliberate: an honest gap is more useful than a confident guess when the answer
is going on a transfer form.
Limits
60 lookups an hour per network, free and without a key. That is
meant to be enough to build against, try it out, or run a low-traffic form.
Exceed it and you get 429 with a
retryAfterSeconds field. Every
lookup counts, whether you send one IBAN or fifty in a batch.
For anything with real volume - a product, a payment run, a nightly job - use the metered API. It takes a key, is billed per call, and carries a support contact.
This limit applies only to the API. Checking an IBAN on iban-analyzer.com or in the browser extension is free, needs no account, and has no limit at all. That will not change.
Bank reference data is compiled from the national registers listed above and is accurate to the best of those sources, but it is not a certified payment record. For a payment that must not fail, confirm with the recipient or their bank. Not affiliated with any bank.