IBAN & SWIFT/BIC Validator

Checks the mod-97 digits and the length and character layout the country actually uses — so a missing character is reported as a missing character, not as a failed checksum. Paste a SWIFT/BIC instead and it is recognised by its shape; both numbers sit on the same payment instruction, and getting either wrong stops the money.

🔒 Your data never leaves your browser.

A valid IBAN is not a real account

The check digits prove the characters are internally consistent. They say nothing about whether the account exists, who owns it, or whether your money will arrive.

This is worth being blunt about, because there is one situation where people reach for an IBAN validator more than any other: an invoice has arrived with different bank details than last time. A green tick here is not reassurance in that situation. Phone the supplier on a number you already had.

Why the length check matters more than the checksum

Most validators only run mod-97. When it fails they can say "invalid" and nothing else, which leaves you re-reading twenty-two characters looking for the wrong one.

Every country has exactly one IBAN length, so checking that first turns the same failure into a diagnosis: Germany is 22 characters and you have 21 — a truncated field. Or character 9 must be a digit here — a letter typed into the account number. That is a different quality of answer.

Some countries simply do not have IBANs

The United States, Canada, Australia, Japan, China and India are not IBAN countries. If someone has asked you for "the IBAN" of a US account, the honest answer is that there is no such thing — what they need is the ABA routing number, the account number, and a SWIFT/BIC code. This page says that rather than reporting "invalid", because "invalid" is the wrong answer to that question.

Where the country data comes from

The authoritative list is the SWIFT IBAN Registry, published under ISO 13616 — a paid standard behind a download that blocks automated access. This project does not have it and does not pretend to. Instead the table here was built by cross-checking two independent transcriptions of that registry and keeping only the 89 countries where both agree and the country's own example IBAN passes mod-97. 22 entries were dropped rather than guessed at; for those countries this page checks the digits but says nothing about length.

The BIC problem nobody sees: test codes

A 0 in the second position of the location code marks a BIC as being for testing rather than the live network. It looks exactly like a normal BIC — DEUTDEF0 beside DEUTDEFF — and nothing about it reads as wrong until a payment fails.

And the one that gets valid codes rejected: XK

SWIFT assigned XK to Kosovo, which has no ISO 3166-1 country code of its own. Any checker that insists the country segment be an ISO code will refuse a perfectly good Kosovan BIC — and several do. This page carries the exception explicitly.

Where the BIC structure comes from

ISO 9362 is a paid standard, and both iso.org and swift.com refuse anonymous automated requests, so this project could not obtain the primary document. The structure cited here is a public transcription of it — said plainly rather than dressed up as a specification we hold. The one part verified independently is the country segment, checked against this project's own ISO 3166 dataset.

SWIFT/BIC checks (10 rules)

BIC-L01 A BIC is 8 or 11 characters

Four letters for the institution, two for the country, two for the location, and optionally three more for a branch. There is no other valid length — a 9 or 10 character value has lost or gained something.

Source: ISO 9362 (BIC) — structure, as transcribed by Wikipedia

BIC-F01 Wrong kind of character in a fixed position

The institution and country segments are letters only. Digits are permitted in the location and branch segments and nowhere else, so a digit in the first six characters means the value is not a BIC.

Source: ISO 9362 (BIC) — structure, as transcribed by Wikipedia

BIC-C01 Country segment is not a country

Characters five and six are an ISO 3166-1 alpha-2 country code. If they are not one, the value cannot be routed — the country is how the network finds the institution.

Source: ISO 9362 (BIC) — structure, as transcribed by Wikipedia

BIC-C02 XK is a SWIFT assignment, not an ISO country code

SWIFT assigned XK to Kosovo, which has no ISO 3166-1 code of its own. A checker that insists the country segment be an ISO code will reject a perfectly valid Kosovan BIC — and several do.

Source: ISO 9362 (BIC) — structure, as transcribed by Wikipedia

BIC-T01 This is a test BIC, not a live one

A "0" as the second character of the location code marks the code as being for testing rather than the live network. It looks exactly like a normal BIC, so this is invisible until a payment fails — which is precisely why it is worth checking.

Fix: Ask the beneficiary for their live BIC.

Source: ISO 9362 (BIC) — structure, as transcribed by Wikipedia

BIC-P01 Passive participant

A "1" as the second character of the location code marks a passive SWIFT participant. Such a party may not be able to receive messages directly.

Source: ISO 9362 (BIC) — structure, as transcribed by Wikipedia

BIC-R01 Reverse billing

A "2" as the second character of the location code typically indicates reverse billing — the recipient pays for the message rather than the sender.

Source: ISO 9362 (BIC) — structure, as transcribed by Wikipedia

BIC-B01 Eight characters means the primary office

The branch segment is optional. Where it is absent the code refers to the primary office, which is written explicitly as XXX when the eleven-character form is used.

Source: ISO 9362 (BIC) — structure, as transcribed by Wikipedia

BIC-M01 Format only — this is not a directory lookup

A well-formed BIC is not necessarily a registered one, and a registered one may not accept the payment you are about to send. Whether the code exists and is connected is a question for the SWIFT directory or your bank.

Source: ISO 9362 itself is a paid standard, and both iso.org and swift.com refuse anonymous automated requests, so this project could not obtain the primary document. The structure cited here is a public transcription of that standard, not the standard itself — said plainly rather than dressed up. The one part verified independently is the country code position, which is checked against this project’s own ISO 3166 dataset.

BIC-V01 Well-formed BIC

Right length, right character kinds, and a recognised country segment.

Source: ISO 9362 (BIC) — structure, as transcribed by Wikipedia

Structure only, from a public transcription of ISO 9362 — never a directory lookup.

Every check this tool runs (10 rules)

IBAN-M01 A valid IBAN is not a real account

The check digits prove the characters are internally consistent — nothing more. Whether the account exists, whose name is on it, and whether it can receive your payment are questions only the bank can answer. This matters most in the one situation where people reach for a validator: an invoice arriving with changed bank details. A passing check is not reassurance there.

Source: Structure and length per country come from cross-checking two independent transcriptions of the SWIFT IBAN Registry (ISO 13616), keeping only countries where both agree AND the country’s own example IBAN passes the ISO 7064 mod-97 check. The registry itself is behind a paid standard and a bot-blocked download, so this project does not claim to hold the primary document. The mod-97 algorithm is ISO 7064 MOD 97-10 and is implemented here directly.

IBAN-C01 Check digits do not match

Positions three and four are check digits over the whole rest of the IBAN, using ISO 7064 mod-97. A mismatch means at least one character is wrong. The correct check digits for the remaining characters are given, which tells you whether the error is in the check digits themselves or somewhere in the account number.

Fix: Compare against the IBAN printed on a bank statement — do not simply substitute the expected check digits, since that would hide an error in the account number.

Source: Structure and length per country come from cross-checking two independent transcriptions of the SWIFT IBAN Registry (ISO 13616), keeping only countries where both agree AND the country’s own example IBAN passes the ISO 7064 mod-97 check. The registry itself is behind a paid standard and a bot-blocked download, so this project does not claim to hold the primary document. The mod-97 algorithm is ISO 7064 MOD 97-10 and is implemented here directly.

IBAN-L01 Wrong length for this country

Every country has one fixed IBAN length. This is the most useful thing a validator can tell you, because a length error points at exactly what happened — a truncated field, a dropped character, a doubled paste — whereas a bare "checksum failed" sends you re-reading all 22 characters.

Source: Structure and length per country come from cross-checking two independent transcriptions of the SWIFT IBAN Registry (ISO 13616), keeping only countries where both agree AND the country’s own example IBAN passes the ISO 7064 mod-97 check. The registry itself is behind a paid standard and a bot-blocked download, so this project does not claim to hold the primary document. The mod-97 algorithm is ISO 7064 MOD 97-10 and is implemented here directly.

IBAN-K01 That country does not use IBAN

IBAN is not universal. The United States, Canada, Australia, Japan and China are among the countries that do not use it — payments there run on their own national schemes (a routing number and account number in the US, a BSB in Australia). Asking for "the IBAN" of a US account is a request that cannot be satisfied.

Fix: Ask for the country’s own identifiers instead — for the US, the ABA routing number, the account number and the SWIFT/BIC code.

Source: Structure and length per country come from cross-checking two independent transcriptions of the SWIFT IBAN Registry (ISO 13616), keeping only countries where both agree AND the country’s own example IBAN passes the ISO 7064 mod-97 check. The registry itself is behind a paid standard and a bot-blocked download, so this project does not claim to hold the primary document. The mod-97 algorithm is ISO 7064 MOD 97-10 and is implemented here directly.

IBAN-F01 Contains characters an IBAN cannot

An IBAN is letters A–Z and digits 0–9 only, and always begins with two letters. Punctuation, or a first pair that is not letters, means the value is not an IBAN at all — often a local account number that was pasted into the wrong field.

Source: Structure and length per country come from cross-checking two independent transcriptions of the SWIFT IBAN Registry (ISO 13616), keeping only countries where both agree AND the country’s own example IBAN passes the ISO 7064 mod-97 check. The registry itself is behind a paid standard and a bot-blocked download, so this project does not claim to hold the primary document. The mod-97 algorithm is ISO 7064 MOD 97-10 and is implemented here directly.

IBAN-B01 A character is the wrong kind for its position

Each country fixes which positions hold digits, which hold letters and which hold either. A letter where the country requires a digit will usually fail the check digits too, but naming the position turns "something is wrong" into "character 9 should be a digit".

Source: Structure and length per country come from cross-checking two independent transcriptions of the SWIFT IBAN Registry (ISO 13616), keeping only countries where both agree AND the country’s own example IBAN passes the ISO 7064 mod-97 check. The registry itself is behind a paid standard and a bot-blocked download, so this project does not claim to hold the primary document. The mod-97 algorithm is ISO 7064 MOD 97-10 and is implemented here directly.

IBAN-T01 Looks like an O/0 or I/1 transcription slip

The check failed, and the value contains characters that are commonly confused when an IBAN is read off paper or out of a PDF. Swapping them is worth trying before assuming the number is wrong.

Source: Own engineering rule, not part of ISO 13616: derived from how IBANs actually get mistyped.

IBAN-S01 Spaces belong on paper, not in the field

IBANs are printed in groups of four for readability and stored as one unbroken string. Systems generally cope with both, but the two forms are different strings, so the same account can arrive looking like two.

Fix: Store the unspaced form; show the grouped form.

Source: Structure and length per country come from cross-checking two independent transcriptions of the SWIFT IBAN Registry (ISO 13616), keeping only countries where both agree AND the country’s own example IBAN passes the ISO 7064 mod-97 check. The registry itself is behind a paid standard and a bot-blocked download, so this project does not claim to hold the primary document. The mod-97 algorithm is ISO 7064 MOD 97-10 and is implemented here directly.

IBAN-U01 No structure carried for this country

The two-letter prefix is a real country code, but this tool holds no verified IBAN structure for it — either the country is not in the registry, or the two sources cross-checked here disagreed and the entry was dropped rather than guessed at. The check digits are still verified; the length is not.

Source: Structure and length per country come from cross-checking two independent transcriptions of the SWIFT IBAN Registry (ISO 13616), keeping only countries where both agree AND the country’s own example IBAN passes the ISO 7064 mod-97 check. The registry itself is behind a paid standard and a bot-blocked download, so this project does not claim to hold the primary document. The mod-97 algorithm is ISO 7064 MOD 97-10 and is implemented here directly.

IBAN-V01 Structurally valid

Right length for the country, right character kinds, and the mod-97 check passes.

Source: Structure and length per country come from cross-checking two independent transcriptions of the SWIFT IBAN Registry (ISO 13616), keeping only countries where both agree AND the country’s own example IBAN passes the ISO 7064 mod-97 check. The registry itself is behind a paid standard and a bot-blocked download, so this project does not claim to hold the primary document. The mod-97 algorithm is ISO 7064 MOD 97-10 and is implemented here directly.

Carrying verified structures for 89 countries. Structure only — never existence, ownership or reachability.