Sending money internationally used to be a mess. Different countries had different account number formats, different routing systems, and different ways of identifying banks. Transfers got lost, delayed, or sent to the wrong account — with depressing regularity.
The IBAN fixed that. Or at least, it tried to.
What Is an IBAN?
IBAN stands for International Bank Account Number. It is a standardized format for identifying bank accounts across national borders. Think of it as a universal account number that works the same way whether you are in Germany, Brazil, or Saudi Arabia.
An IBAN is not a new account number — it is a wrapper around your existing account details. It takes your country code, bank identifier, and account number, adds a verification check, and packages everything into a single string that any bank in the world can parse.
The standard was created by the European Committee for Banking Standards (ECBS) and formalized as ISO 13616. It has been adopted by over 80 countries.
IBAN Format: How to Read One
Every IBAN follows the same structure:
CC KK BBBB XXXX XXXX XXXX XXXX XX
│ │ │ └────────────────────── Account number (variable length)
│ │ └─────────────────────────── Bank/branch identifier
│ └────────────────────────────── Check digits (2 digits)
└───────────────────────────────── Country code (2 letters)
Example: German IBAN
DE89 3704 0044 0532 0130 00
│ │ │ └──────────── Account number (0532013000)
│ │ └──────────────────── Bank code (37040044 = Commerzbank)
│ └─────────────────────── Check digits (89)
└────────────────────────── Country (DE = Germany)
Example: Spanish IBAN
ES91 2100 0418 4502 0005 1332
│ │ │ │ └────────────── Account number
│ │ │ └────────────────── Branch code
│ │ └─────────────────────── Bank code (2100 = CaixaBank)
│ └────────────────────────── Check digits (91)
└───────────────────────────── Country (ES = Spain)
Example: UK IBAN
GB29 NWBK 6016 1331 9268 19
│ │ │ │ └──────────── Account number (31926819)
│ │ │ └────────────────── Sort code (601613)
│ │ └─────────────────────── Bank code (NWBK = NatWest)
│ └────────────────────────── Check digits (29)
└───────────────────────────── Country (GB = United Kingdom)
IBAN Length by Country
IBANs are not all the same length. Each country defines its own IBAN format within the ISO 13616 standard:
| Country | Code | Length | Example |
|---|---|---|---|
| Germany | DE | 22 | DE89 3704 0044 0532 0130 00 |
| Spain | ES | 24 | ES91 2100 0418 4502 0005 1332 |
| United Kingdom | GB | 22 | GB29 NWBK 6016 1331 9268 19 |
| France | FR | 27 | FR76 3000 6000 0112 3456 7890 189 |
| Netherlands | NL | 18 | NL91 ABNA 0417 1643 00 |
| Italy | IT | 27 | IT60 X054 2811 1010 0000 0123 456 |
| Switzerland | CH | 21 | CH93 0076 2011 6238 5295 7 |
| Saudi Arabia | SA | 24 | SA03 8000 0000 6080 1016 7519 |
| Brazil | BR | 29 | BR18 0036 0305 0000 1000 9795 493C 1 |
| Norway | NO | 15 | NO93 8601 1117 947 |
Norway has the shortest at 15 characters. Brazil and some Middle Eastern countries have the longest at 29-30 characters.
How IBAN Validation Works
The two check digits after the country code are not arbitrary — they are calculated using modular arithmetic (mod 97), defined in ISO 7064.
The Validation Algorithm:
- Move the first 4 characters (country code + check digits) to the end
- Convert all letters to numbers: A=10, B=11, ..., Z=35
- Calculate the remainder when divided by 97
- If the remainder is 1, the IBAN is valid
Example Validation:
IBAN: GB29 NWBK 6016 1331 9268 19
Step 1: Move first 4 to end
NWBK 6016 1331 9268 19 GB29
Step 2: Convert letters to numbers
N=23, W=32, B=11, K=20, G=16, B=11
→ 2332112060161331926819161129
Step 3: 2332112060161331926819161129 mod 97 = 1
Result: Valid ✓
This algorithm catches:
- Single-digit errors (typing 3 instead of 8)
- Most transposition errors (swapping two adjacent digits)
- The detection rate is approximately 98.9% for random errors
You can validate any IBAN using Random IBAN's validator.
IBAN vs. SWIFT/BIC
People often confuse IBAN and SWIFT codes. They are different things:
| IBAN | SWIFT/BIC | |
|---|---|---|
| Identifies | A specific bank account | A specific bank |
| Length | 15-34 characters | 8 or 11 characters |
| Format | Country code + check + account | Bank + country + location + branch |
| Example | DE89 3704 0044 0532 0130 00 | COBADEFFXXX |
| Used for | Routing payments to an account | Identifying the bank in the network |
For international wire transfers, you typically need both:
- The IBAN tells the system which account to send money to
- The SWIFT/BIC tells the system which bank to route through
Some modern payment systems (like SEPA in Europe) only require the IBAN — the bank identification is extracted from the IBAN itself.
Which Countries Use IBAN?
IBAN is used in over 80 countries, but adoption is not universal:
Mandatory IBAN Countries
- All European Union member states
- All European Economic Area countries
- Switzerland, Monaco, San Marino, Vatican City
- Most Middle Eastern countries (UAE, Saudi Arabia, Qatar, etc.)
- Brazil, Pakistan, Turkey, Tunisia, Mauritius
Countries That Do NOT Use IBAN
- United States — uses ABA routing numbers + account numbers
- Canada — uses routing/transit numbers
- Australia — uses BSB + account numbers
- India — uses IFSC codes
- China — uses CNAPS codes
- Japan — uses Zengin codes
The US is the most notable holdout. Despite being the world's largest economy, American banks have not adopted IBAN — largely because the existing domestic system (Fedwire, ACH) works well enough, and the cost of transitioning would be enormous.
IBAN for SEPA Transfers
In Europe, the Single Euro Payments Area (SEPA) made the IBAN the default standard for all euro-denominated transfers. Since 2014, all EU bank transfers — domestic and cross-border — use IBAN.
SEPA transfers using IBAN are:
- Fast: Usually same-day or next-day
- Cheap: Domestic and cross-border fees must be equal within SEPA
- Standardized: Same format regardless of which EU country you are in
This means sending €500 from Spain to Germany is as easy (and cheap) as sending it to another Spanish bank.
Generating Test IBANs
Developers building banking software, payment integrations, and financial forms need valid IBAN numbers for testing. Real IBANs cannot be used — that would be a security and compliance nightmare.
Random IBAN Generator creates structurally valid IBANs that:
- Follow the correct format for any supported country
- Pass mod-97 check digit validation
- Use realistic bank codes
- Are not connected to any real bank account
This is essential for:
- Testing payment form validation
- Populating test databases with realistic data
- Building IBAN validation features
- QA testing for banking applications
FAQ
Is my IBAN the same as my account number?
No. Your IBAN contains your account number, but it also includes your country code, check digits, and bank identifier. Think of IBAN as a superset — your account number plus routing information, wrapped in a standardized format.
Can someone steal money with just my IBAN?
No. An IBAN alone cannot be used to withdraw money from your account. It can only be used to send money to your account. Sharing your IBAN for receiving payments is safe and standard practice in international banking.
Do I need an IBAN for domestic transfers?
In SEPA countries (EU + EEA), yes — IBAN is required for all transfers since 2014. In non-IBAN countries like the US, Canada, and Australia, you use domestic routing numbers instead.
Why does the US not use IBAN?
The US banking system predates IBAN and uses its own routing system (ABA routing numbers for wire transfers, ACH for electronic payments). Transitioning 10,000+ US banks to IBAN would be extremely costly, and the existing system handles domestic transactions effectively. For international transfers, US banks use SWIFT codes paired with account numbers.
How do I find my IBAN?
Check your bank statement, online banking portal, or banking app — most display your IBAN prominently. You can also ask your bank directly. In many countries, you can calculate your IBAN from your existing bank code and account number using an IBAN calculator.
Can an IBAN be wrong even if it passes validation?
Yes, technically. The mod-97 check catches about 98.9% of random errors, but it is mathematically possible for an incorrect IBAN to pass validation. Additionally, an IBAN can be structurally valid but refer to a non-existent account. Full verification requires checking with the actual bank.