A test IBAN for every one of the 89 IBAN countries, with the result the IBAN Validation API gives for it. Each country has a valid IBAN and up to six variants that break one thing at a time: the check digits, the length, the structure, the characters, the national account check digit and the bank identifier. Every expected code on this page was measured against the live API, not predicted. Pick a country for its full set, or keep all countries and switch the case types on and off. Every row shows the six validation codes the API returns, so you can assert on them in your test suite.
Three more cases that are not tied to a country: spaces and lower-case letters, the two most common input variations, and a mathematically correct IBAN for a country that does not use IBAN, which is rejected with 207.
IBAN
Test case
Expected validation codes
Bank data
Reading the expected codes
The API answers with a validations object of six named checks. Each cell in the codes column is one of them, in the order chars, iban, length, structure, account, country. Green is a success code, red a failure code. All six codes of every row were recorded from the API on 16 October 2026, including the account code of rows that fail an earlier check, which is the API's answer for that input as it stands.
Check
Success
Failure
chars
006 – IBAN does not contain illegal characters
206 – IBAN contains illegal characters
iban
001 – IBAN check digit is correct
202 – IBAN check digit not correct
length
003 – IBAN length is correct
203 – IBAN length is not correct
structure
005 – IBAN structure is correct
205 – IBAN structure is not correct
account
002 – Account number check digit is correct 004 – Account number check digit is not performed for this bank or branch
201 – Account number check digit not correct
country
007 – Country supports IBAN standard
207 – Country does not support IBAN standard
How the set is built
The valid IBAN of each country is its example from the IBAN registry, the same one shown on the IBAN structure & examples page. All 89 examples resolve to a bank in our directory, mostly with placeholder account numbers; the bank-data column records what the directory returned for every row.
Variants are derived from the valid IBAN: the check-digit case changes the two check digits; the length case appends a digit; the structure case puts a letter where the country's format requires a digit (or a digit where it requires a letter); the characters case replaces the last character with !. In the length, structure, account and bank-unknown cases the IBAN check digits are recomputed, so the check-digit test still passes; the length case fails the length and the structure test (203 and 205), the other cases fail only the check they are meant to fail, with the exceptions below.
In the characters case the API reports 206, drops the illegal character and validates the remaining string, which is one character short: length and structure fail (203, 205) and so do the check digits (202), except for FO and GB, whose shortened strings happen to pass MOD 97-10 (001). The account code of that row is the API's answer for the shortened number.
The account-check case exists for the 32 countries where the API reports 201 for a changed digit; Account check in the country summary marks them. One account digit is changed so the IBAN still passes MOD 97-10 but the national check fails. Two countries need a different digit: for DE the registry example's bank (51210800) has no check-digit method (Bundesbank method 09), so the case uses an account at bank 12030000 (method 00), with the valid counterpart given in the row; for PL a changed account digit is not reported, so the case breaks the check digit of the 8-digit bank/branch number instead. AT, CH, DK, FI, IE, LI and NL have no account-check case: the API answered 002 or 004 for every changed digit tried, so there is no failing example. The valid IBANs of AT and FI answer 004 (check not performed for that bank).
Every country has a bank-unknown case: the bank identifier is replaced with nines or Zs – except EE (00), LU (997) and SE (000), where the all-nines code is assigned – which keeps the IBAN valid; the directory fields of bank_data come back empty. The account code of that row is the API's answer for the unknown bank, 004 where the check depends on the bank.
Nine countries have fixed IBAN check digits (BA 39, DJ 21, ME 25, MR 13, PT 50, RS 35, SI 56, TL 38, TN 59) and their IBAN format includes them, so any other check digits also fail the structure test: the check-digit case answers 202 and 205, and the account and bank-unknown cases, whose check digits are recomputed, answer 205 next to their own result.
In the structure case the replaced character is the first one the format constrains to digits or to letters. For most countries that position lies inside the bank identifier, so no bank is identified. For the 14 countries whose alphabetic bank identifier is followed directly by digits (BY, DO, FK, GE, HN, JO, LC, MU, NI, NL, QA, SC, SV, VG) the identifier is intact and the API still returns bank_data together with the 205; for BG, GB, IE and MT the letter lands in the branch code and the directory fields come back empty.
Expected codes and bank-data flags are the API's own answers for each IBAN, recorded on 16 October 2026.