ValidateFin
Back to blog
IBAN13 min readBy Eliel Nicaise

IBAN Format by Country: Complete Reference Guide for All 36 SEPA Countries

A complete reference table of IBAN formats for all 36 SEPA countries and beyond: country codes, lengths, structure, example IBANs, and mod-97 validation. Essential for finance professionals and developers working with European payments.

What is IBAN and Why Does the Format Vary by Country?

IBAN (International Bank Account Number) is an international standard (ISO 13616) for identifying bank accounts across national borders. It consists of a 2-letter country code, 2 check digits, and a country-specific BBAN (Basic Bank Account Number) of varying length. The total IBAN length varies from 15 characters (Norway) to 34 characters (Malta) depending on the country's BBAN structure.

The check digits (positions 3-4) are calculated using the mod-97 algorithm: the entire IBAN is rearranged (BBAN + country code + check digits replaced by 00), converted to a numeric string, and divided by 97. A valid IBAN yields a remainder of 1. This checksum catches the majority of data entry errors including transposed digits and wrong country codes.

IBAN is mandatory for all SEPA credit transfers and direct debits. The 36 SEPA member countries (27 EU members plus Norway, Iceland, Liechtenstein, Switzerland, UK, Monaco, San Marino, Andorra, Vatican) all use IBAN. Many non-SEPA countries (Middle East, North Africa, Caribbean) have also adopted IBAN for international payment routing.

IBAN Format Reference Table (Top 10 SEPA Countries)

The following table shows IBAN formats for the 10 largest SEPA economies by payment volume. For a complete 36-country reference, see the SWIFT IBAN Registry.

CountryFormatLengthExample
Germany (DE)DE + 2 check + 8 BLZ + 10 account22DE89370400440532013000
France (FR)FR + 2 check + 10 bank/branch + 11 account + 2 national check27FR7630006000011234567890189
Netherlands (NL)NL + 2 check + 4 bank code + 10 account18NL91ABNA0417164300
Belgium (BE)BE + 2 check + 3 bank + 7 account + 2 national check16BE68539007547034
Spain (ES)ES + 2 check + 4 bank + 4 branch + 2 control + 10 account24ES9121000418450200051332
Italy (IT)IT + 2 check + 1 CIN + 5 ABI + 5 CAB + 12 account27IT60X0542811101000000123456
Poland (PL)PL + 2 check + 8 bank/branch + 16 account28PL61109010140000071219812874
UK (GB)GB + 2 check + 4 BIC bank + 6 sort code + 8 account22GB29NWBK60161331926819
Switzerland (CH)CH + 2 check + 5 bank + 12 account21CH9300762011623852957
Austria (AT)AT + 2 check + 5 bank + 11 account20AT611904300234573201

Common IBAN Validation Rules Across All Countries

All IBANs share four universal validation rules: (1) the country code must be a valid ISO 3166-1 alpha-2 code for a country that has adopted IBAN; (2) the total length must match the expected length for that country (e.g., 22 for DE, 27 for FR); (3) the BBAN must contain only the character types valid for that country (digits only for most, or alphanumeric for some); and (4) the mod-97 checksum must yield a remainder of 1.

Length validation is the quickest check: if a claimed German IBAN has 23 characters instead of 22, it is immediately invalid without needing to run the mod-97 calculation. Country-specific BBAN structure validation adds a further layer — for example, French IBANs have specific rules about which characters are allowed in the bank/branch and account number positions.

ValidateFin's IBAN validator performs all four checks — country code recognition, length validation, character set validation, and mod-97 checksum — entirely in your browser. It supports IBANs from all 36 SEPA countries and many non-SEPA IBAN countries. No data is sent to any server.

IBAN in SEPA Payments and E-invoicing

IBAN is a mandatory field in all SEPA payment instruments. In pain.001 (Customer Credit Transfer Initiation), the creditor's IBAN appears in CdtrAcct/Id/IBAN. In pain.008 (Customer Direct Debit Initiation), the debtor's IBAN appears in DbtrAcct/Id/IBAN. Both fields are mandatory — a SEPA file without valid IBANs is rejected by the bank.

In e-invoicing (UBL/Peppol and Factur-X), the seller's IBAN appears in the payment instructions section (UBL: cbc:PaymentID / cac:PayeeFinancialAccount, CII: CreditorSpecifiedDebtorFinancialInstitution). Including a valid IBAN in the invoice enables buyers to process payment directly from the invoice data, supporting straight-through processing.

ValidateFin validates IBANs within SEPA XML files (pain.001, pain.008, camt.053) as part of the file validation process. Each IBAN in the file is checked against the mod-97 algorithm and the expected format for its country code. Errors are reported with the specific element path so you can locate and fix them quickly.

Validate IBANs Instantly with ValidateFin

ValidateFin's IBAN validator checks any IBAN against all country formats and the mod-97 checksum instantly in your browser. Validate individual IBANs or batch-check IBANs within your SEPA XML files.

Validate IBAN now

Frequently Asked Questions

How long is a German IBAN?

German IBANs (DE) are always 22 characters: DE + 2 check digits + 8-digit Bankleitzahl (BLZ) + 10-digit account number. Example: DE89370400440532013000.

How long is a French IBAN?

French IBANs (FR) are always 27 characters: FR + 2 check digits + 5-digit bank code + 5-digit branch code + 11-character account number + 2-digit national check. Example: FR7630006000011234567890189.

How do I validate an IBAN?

IBAN validation requires four steps: (1) check the country code is a valid IBAN-adopting country; (2) check the total length matches the expected length for that country; (3) check the BBAN contains only valid characters for that country; (4) verify the mod-97 checksum: rearrange as BBAN + country code + '00', convert letters to numbers (A=10, B=11, etc.), divide by 97, and verify the remainder is 1.

Is IBAN the same as account number?

No. IBAN is an international format that includes the country code, check digits, and the domestic account number (BBAN). The BBAN includes the bank code and account number components specific to each country. IBAN is always used for cross-border SEPA payments; domestic transfers may use shorter national formats in some countries.

How many countries use IBAN?

Approximately 79 countries have adopted IBAN. The 36 SEPA countries (EU member states plus Norway, Iceland, Liechtenstein, Switzerland, UK, and some micro-states) use IBAN for all SEPA payment instruments. Many Middle Eastern, North African, and Caribbean countries have also adopted IBAN.

What is the IBAN check digit for?

The 2-digit check digit (positions 3-4 of the IBAN) is calculated using the mod-97 algorithm and serves as an error detection mechanism. It catches approximately 98% of single-digit errors, all transpositions of adjacent digits, and many other common data entry mistakes.

Can an IBAN have letters?

The country code positions (1-2) are always letters. Some countries include letters in their BBAN — for example, UK IBANs include the 4-letter BIC bank code, and some other countries encode the bank identifier as alphanumeric. Most continental European IBANs (DE, FR, NL, BE, ES) have numeric-only BBANs.

What is BBAN?

BBAN (Basic Bank Account Number) is the domestic account number component of the IBAN, without the country code and check digits. Each country defines its own BBAN structure — for Germany it is the 18-character combination of BLZ and account number, for France it is the 23-character bank/branch/account/national-check combination.

Are spaces allowed in IBAN?

Spaces are used for human readability (printed format) but must be removed for electronic transmission. The electronic format uses no spaces: DEXXXXXXXXXXXXXXXXXX. SEPA XML files and e-invoices must use the electronic format without spaces.

Why is my IBAN rejected despite looking correct?

Common causes of IBAN rejection: (1) wrong country code (e.g., FR instead of BE); (2) incorrect length (one digit too many or too few); (3) transposed digits; (4) spaces included in the electronic format; (5) the IBAN is from a non-SEPA country and the target bank does not support it. Use ValidateFin's IBAN validator to identify the specific error.