๐ฆ IBAN Validator
Check whether a bank account number is structurally valid before you send money to it. The test is the official ISO 13616 mod-97 checksum plus the expected length for the country, and it runs entirely in your browser โ the number is never sent anywhere.
How the IBAN check digits work, and what they cannot tell you
An IBAN carries its own error detection. The two digits after the country code are a checksum calculated from everything else, so a single mistyped character almost always makes the whole number fail a simple arithmetic test. That test is defined in ISO 13616 and it is what this page runs โ locally, in your browser, without the number leaving your device.
Move the first 4 characters to the end → letters to numbers (A=10 … Z=35) → mod 97 must equal 1
The mod-97 scheme was chosen because it catches every single-character error and almost every transposition of two adjacent characters, which are the two mistakes people actually make when copying an account number by hand.
What an IBAN is made of
| Part | Value | Meaning |
|---|---|---|
| Country | ES | Spain, ISO 3166 code |
| Check digits | 91 | Calculated from the rest |
| Bank | 2100 | National bank identifier |
| Branch | 0418 | Branch code |
| National check | 45 | Spain's own domestic check digits |
| Account | 0200051332 | The account number itself |
Only the first four characters are standard across countries. Everything after them is the national account number in whatever structure that country already used, padded to a fixed length. That is why the total length varies: 15 characters in Norway, 24 in Spain, 31 in Malta.
Length by country
| Country | Length | Country | Length |
|---|---|---|---|
| Norway | 15 | Spain | 24 |
| Belgium | 16 | Portugal | 25 |
| Netherlands | 18 | Iceland | 26 |
| Austria | 20 | France | 27 |
| Croatia | 21 | Italy | 27 |
| Germany | 22 | Hungary | 28 |
| United Kingdom | 22 | Poland | 28 |
| Ireland | 22 | Malta | 31 |
Checking the length first is worth doing, because a wrong length is almost always a missing or duplicated character and is easier to spot than a checksum failure. If the country code is not in the list, this tool still runs the checksum and says so rather than guessing.
What a valid IBAN does not prove
This is the important limitation, and it is the reason invoice fraud works. A valid IBAN means the number is internally consistent. It does not mean the account exists, it does not mean it is open, and above all it does not mean it belongs to the person you think you are paying. A fraudster who changes the bank details on an invoice will supply a perfectly valid IBAN โ their own.
No offline check can tell you the account holder. Some countries now run confirmation-of-payee services where the bank compares the name you type against the name on the account, and in the EU the instant payments regulation requires this verification for euro transfers. Where it exists, use it. Where it does not, phone the supplier on a number you already had โ not one printed on the invoice โ before paying new details.
The single most effective habit: treat any email that changes payment details as suspect until confirmed by voice. Checksum validity is reassurance about typing, not about trust.
BIC, SWIFT and why you often no longer need one
A BIC, also called a SWIFT code, identifies the bank rather than the account: 8 or 11 characters covering the institution, country, location and optionally the branch. For transfers within the SEPA area the BIC has not been required since 2016, because the IBAN already contains the bank identifier. Outside SEPA, it is usually still needed.
A BIC cannot be meaningfully validated offline beyond its format, because there is no checksum in it โ the only real check is against the official registry.
A worked example
Take ES91 2100 0418 4502 0005 1332. Move ES91 to the end, giving 210004184502000513 32ES91, then replace E with 14 and S with 28. The resulting number divided by 97 leaves a remainder of 1, so the IBAN is structurally valid. Change the final 2 to a 3 and the remainder becomes something else, and the check fails โ which is exactly what you want it to do.
If the number here raised another question, it is probably one of these: the currency converter or the invoice generator.
Frequently Asked Questions (FAQs)
How is an IBAN validated?
Move the first four characters to the end, convert each letter to a number with A as 10 through Z as 35, then take the whole thing modulo 97. A valid IBAN leaves a remainder of exactly 1. The length must also match the country's published figure.
Does a valid IBAN mean the account exists?
No. It means the number is internally consistent and has probably not been mistyped. Only the bank can confirm the account exists and who it belongs to, which is why invoice fraud is not prevented by this check.
Is my IBAN sent anywhere when I check it?
No. The calculation runs entirely in your browser in JavaScript. Nothing is uploaded, logged or stored, which is the main reason to use an offline checker rather than a service that posts the number to a server.
Why do IBANs have different lengths?
Because each country kept its existing national account number format and simply added the country code and check digits in front. Norway's is 15 characters and Malta's is 31, and both are correct for their country.
What is the difference between IBAN and BIC?
The IBAN identifies the account; the BIC, or SWIFT code, identifies the bank. Within SEPA the BIC has not been required since 2016 because the IBAN already contains the bank identifier, though it is often still needed outside Europe.
My IBAN fails the check but I copied it correctly
Check for a character that looks like another: a capital O against a zero, or a capital I against a 1. Also check the length against the country's expected figure, since a missing character is the most common cause. If it still fails, ask the account holder to confirm the number.
Can I validate a UK sort code and account number this way?
Not with this method, which needs the IBAN form. A UK IBAN is 22 characters and embeds the sort code and account number, so converting first lets you run the check.