IBAN Validator: Check International Bank Account Numbers
Validate IBAN numbers instantly. Check format, country code, check digits, and bank identifier. Supports all 80+ IBAN countries with length verification.
SEPA transfers take up to 1 business day and SWIFT wires take 1-5 days. Spark transfers are instant and free. Learn more
What Is an IBAN?
An IBAN (International Bank Account Number) is a standardized format for identifying bank accounts across national borders. Developed by the European Committee for Banking Standards and adopted as ISO 13616, the IBAN system was created to simplify and speed up cross-border payments by providing a single, globally recognized account number format. Today, more than 80 countries use IBANs as part of their banking infrastructure.
Before IBANs existed, each country had its own account numbering system. A German bank account number looked nothing like a British one, and routing international payments required manual interpretation of local formats. This led to frequent errors, rejected payments, and costly delays. The IBAN solves this by wrapping each country's domestic account number in a standardized envelope that includes a country code and check digits for automatic validation.
IBANs are mandatory for bank transfers in the European Union, the European Economic Area, and most of the Middle East, Africa, and the Caribbean. While the United States and Canada do not use IBANs domestically (relying instead on routing and account numbers), they frequently encounter IBANs when sending or receiving international payments. If you do business across borders through the traditional banking system, understanding IBANs is essential.
IBAN Format Explained
Every IBAN follows a consistent structure, regardless of country. The format consists of three main components:
| Component | Position | Description | Example |
|---|---|---|---|
| Country Code | Characters 1-2 | ISO 3166-1 alpha-2 country code | GB (United Kingdom) |
| Check Digits | Characters 3-4 | Two-digit checksum for validation | 29 |
| BBAN | Characters 5+ | Basic Bank Account Number (country-specific) | NWBK60161331926819 |
The BBAN (Basic Bank Account Number) is the domestic portion of the IBAN. Its structure varies by country: it typically includes a bank code, branch code, and account number, but the exact layout and length depend on each country's banking conventions. For example, a UK BBAN contains a 4-character bank code and a 14-digit account identifier, while a German BBAN contains an 8-digit bank code (Bankleitzahl) followed by a 10-digit account number.
A complete example: GB29 NWBK 6016 1331 9268 19. Here, GB is the country code (United Kingdom), 29 is the check digit pair, NWBK is the bank identifier (NatWest), and the remaining digits form the account number. The spaces are for readability only: IBANs are transmitted electronically without spaces.
How IBAN Validation Works
IBAN validation uses a mathematical checksum based on the mod-97 algorithm defined in ISO 7064. This makes it possible to detect typos, transposed digits, and other common input errors before a payment is even submitted. The validation process has three steps:
- Move the first four characters (country code and check digits) to the end of the string. For
GB29NWBK60161331926819, this producesNWBK60161331926819GB29. - Convert every letter to a number: A = 10, B = 11, C = 12, and so on through Z = 35. The string becomes a long sequence of digits.
- Compute the remainder when dividing this number by 97. If the remainder is exactly 1, the IBAN is valid. Any other result means the IBAN contains an error.
This check catches over 98% of single-character errors and virtually all transposition errors. Banks perform this validation automatically, but you can use the tool above to verify an IBAN before submitting a payment. In addition to the mod-97 check, proper validation also confirms that the IBAN length matches the expected length for the specified country.
IBAN by Country
Each country that supports IBANs defines a specific length for its account numbers. The table below lists IBAN lengths for 20 commonly used countries. If the length of an IBAN does not match the expected length for its country code, the IBAN is invalid regardless of whether the checksum passes.
| Country | Code | IBAN Length | Example Format |
|---|---|---|---|
| Germany | DE | 22 | DEkk BBBB BBBB CCCC CCCC CC |
| United Kingdom | GB | 22 | GBkk BBBB SSSS SSCC CCCC CC |
| France | FR | 27 | FRkk BBBB BGGG GGCC CCCC CCCC CKK |
| Spain | ES | 24 | ESkk BBBB GGGG KKCC CCCC CCCC |
| Italy | IT | 27 | ITkk XBBB BBGG GGGC CCCC CCCC CCC |
| Netherlands | NL | 18 | NLkk BBBB CCCC CCCC CC |
| Belgium | BE | 16 | BEkk BBBC CCCC CCKK |
| Austria | AT | 20 | ATkk BBBB BCCC CCCC CCCC |
| Switzerland | CH | 21 | CHkk BBBB BCCC CCCC CCCC C |
| Portugal | PT | 25 | PTkk BBBB SSSS CCCC CCCC CCCK K |
| Poland | PL | 28 | PLkk BBBS SSSK CCCC CCCC CCCC CCCC |
| Sweden | SE | 24 | SEkk BBBC CCCC CCCC CCCC CCCC |
| Norway | NO | 15 | NOkk BBBB CCCC CCK |
| Denmark | DK | 18 | DKkk BBBB CCCC CCCC CC |
| Finland | FI | 18 | FIkk BBBC CCCC CCCC CK |
| Ireland | IE | 22 | IEkk AAAA BBBB BBCC CCCC CC |
| Luxembourg | LU | 20 | LUkk BBBC CCCC CCCC CCCC |
| Saudi Arabia | SA | 24 | SAkk BBCC CCCC CCCC CCCC CCCC |
| UAE | AE | 23 | AEkk BBBC CCCC CCCC CCCC CCC |
| Turkey | TR | 26 | TRkk BBBB BRCC CCCC CCCC CCCC CC |
In the format column, B represents bank code digits, S represents branch/sort code, C represents account number, K represents check digits, and kk represents the IBAN check digits. The exact meaning of each position varies by country, which is why the BBAN portion of an IBAN is always country-specific.
IBAN vs SWIFT
IBANs and SWIFT codes are both used in international banking, but they serve different purposes. Understanding the difference prevents confusion when setting up cross-border payments.
| Feature | IBAN | SWIFT/BIC |
|---|---|---|
| Identifies | A specific bank account | A financial institution |
| Length | 15-34 characters (varies by country) | 8 or 11 characters |
| Contains | Country code, check digits, bank + account number | Bank code, country code, location, branch |
| Used for | Routing to the correct account | Routing to the correct bank |
| Required for | SEPA and most European/international transfers | SWIFT wire transfers globally |
| Validation | Mod-97 checksum (ISO 7064) | Format check only |
For most international wire transfers, you need both: the SWIFT code tells the sending bank which institution to route the payment to, and the IBAN tells the receiving bank which account to credit. Within the SEPA zone (EU/EEA), only the IBAN is required because the bank identifier is embedded in the IBAN itself. Outside SEPA, both pieces of information are typically needed.
IBAN and Crypto: Why It Matters
The IBAN system was a significant improvement over the fragmented account numbering schemes it replaced. But even with IBANs, traditional cross-border payments remain slow and expensive compared to what modern payment technology makes possible.
| Method | Speed | Typical Cost | Availability |
|---|---|---|---|
| SEPA (IBAN-based) | 1 business day | Free to ~1 EUR | EU/EEA business hours |
| SWIFT wire (IBAN + BIC) | 1-5 business days | $25-50+ | Business hours only |
| Stablecoin (USDC/USDT) | Seconds to minutes | <$5 | 24/7/365 |
| Spark | Instant | Free | 24/7/365 |
SEPA transfers within Europe are relatively fast and cheap, but they still operate only during business hours and can take a full day to settle. SWIFT wires to destinations outside the SEPA zone involve intermediary banks, currency conversion fees, and multi-day delays. Neither system operates on weekends or holidays.
Stablecoins bypass the correspondent banking network entirely. A USDC transfer from Berlin to Singapore settles in seconds, costs under a dollar, and works at any hour. There are no intermediaries deducting fees along the way and no business-hour restrictions.
Spark takes this further by enabling instant, free transfers with full self-custody. Built on Bitcoin, Spark provides the speed and cost advantages of modern crypto rails without the complexity of managing gas fees or choosing between networks. For developers and businesses building global payment applications, Spark offers a simpler alternative to navigating IBAN requirements, SWIFT codes, and correspondent banking fees. Learn more at docs.spark.money.
Frequently Asked Questions
What is an IBAN number?
An IBAN (International Bank Account Number) is a standardized account identifier used for international bank transfers. It consists of a two-letter country code, two check digits, and a country-specific bank account number (the BBAN). The format was created by the European Committee for Banking Standards and is defined by ISO 13616. More than 80 countries use IBANs, and they are mandatory for transfers within the EU, EEA, and many other regions.
How do I find my IBAN?
Your IBAN can typically be found on your bank statements, in your online banking portal, or on your debit card in some countries. You can also call your bank or visit a branch to request it. Many banks display the IBAN prominently in the account details section of their app or website. If your country does not use IBANs (such as the US or Canada), your bank will not have one to provide.
Does the United States use IBANs?
No. The United States does not use the IBAN system. US banks use routing numbers (ABA numbers) to identify the bank and standard account numbers to identify individual accounts. When receiving international payments, US banks require a SWIFT code and the domestic routing/account number combination instead of an IBAN. Similarly, Canada uses transit numbers and institution numbers rather than IBANs.
Can I validate an IBAN before sending money?
Yes. The IBAN includes a two-digit checksum that allows mathematical validation using the mod-97 algorithm. The tool at the top of this page performs this check instantly. A valid checksum confirms that the number is structurally correct, meaning there are no typos or transposed digits. However, it does not confirm that the account exists or belongs to the intended recipient.
What happens if I use the wrong IBAN?
If the IBAN fails the mod-97 checksum, the bank will reject the transfer before it is sent. If the IBAN passes validation but points to a different account than intended, the payment may be credited to the wrong person. Recovering misdirected funds is difficult and not guaranteed. Always double-check the IBAN with the recipient before sending money, especially for large amounts.
What is the difference between IBAN and account number?
A domestic account number identifies your account within your bank's internal system. An IBAN wraps that account number in a standardized international format by adding a country code and check digits. The IBAN contains your domestic account information plus additional metadata that allows international routing. Think of it as your local account number in a globally readable envelope.
Are IBANs the same length everywhere?
No. IBAN length varies by country, from 15 characters (Norway) to 34 characters (Saint Lucia). Each country defines a fixed length for its IBANs based on its domestic account numbering system. For example, German IBANs are always 22 characters, UK IBANs are always 22 characters, and French IBANs are always 27 characters. An IBAN that does not match the expected length for its country code is invalid.
Are stablecoins faster than IBAN transfers?
Yes. Even the fastest IBAN-based transfers (SEPA Instant) take up to 10 seconds and are limited to the EU/EEA. Standard SEPA transfers take one business day, and SWIFT wires using IBANs take 1 to 5 business days. Stablecoins settle in seconds on public blockchains and operate globally 24/7. Spark enables instant, free transfers built on Bitcoin, with no banking infrastructure required. For cross-border payments, crypto rails offer a fundamentally faster alternative to the IBAN and SWIFT systems.
This tool is for informational purposes only. IBAN validation confirms structural correctness using the mod-97 algorithm but does not verify account existence or ownership. Always confirm account details directly with the recipient before initiating a transfer.
Build with Spark
Integrate bitcoin, Lightning, and stablecoins into your app with a few lines of code.
Read the docs →
