An Italian IBAN validator that checks every structural layer of the number in real time — the ISO 7064 MOD-97-10 checksum, the CIN control character, the ABI bank code, the CAB branch code and the 12-character account number format. It is aimed at anyone who needs to verify a codice IBAN before making a bank transfer, integrating it into a form, or sharing it with a payroll system.
How it works
Italy adopted the IBAN standard (ISO 13616) for all domestic and international bank transfers. Every Italian IBAN is exactly 27 characters and follows a fixed layout:
| Position | Length | Field | Content |
|---|---|---|---|
| 1-2 | 2 | Country code | Always IT |
| 3-4 | 2 | Check digits | Computed by MOD-97 |
| 5 | 1 | CIN | Internal control letter, A-Z |
| 6-10 | 5 | ABI | Bank identifier, all digits |
| 11-15 | 5 | CAB | Branch identifier, all digits |
| 16-27 | 12 | Account | Alphanumeric account number |
The validator runs three independent checks.
Check 1 — ISO 7064 MOD-97-10 (overall IBAN checksum). The first four characters are moved to the end, then every letter is expanded to its two-digit numeric equivalent (A = 10, B = 11 … Z = 35). The resulting number is divided by 97 using progressive remainder arithmetic (so no overflow occurs even for long IBANs). The IBAN is structurally valid if and only if the remainder equals exactly 1.
Check 2 — Length and country code. Italian IBANs are always 27 characters. Any deviation — a miscount when copying, a truncated paste, or an IBAN from another country — is flagged immediately with the actual versus expected length.
Check 3 — BBAN sub-field formats. Even after passing MOD-97, the tool inspects each field individually: the CIN position must be a single letter A-Z, the ABI and CAB fields must each be exactly 5 digits, and the account number must be exactly 12 alphanumeric characters. This catches malformed IBANs that happen to pass the checksum by coincidence.
Worked example
Suppose you receive the IBAN IT60 X054 2811 1010 0000 0123 456 (a well-known test value
used in Italian banking documentation). After stripping spaces the input is
IT60X054281110100000123456 — 27 characters.
-
Rearrange and expand: move
IT60to the end, expand all letters. The CINXbecomes33,Ibecomes18,Tbecomes29. Building the numeric string and folding mod 97 gives a remainder of 1 — checksum passes. -
BBAN breakdown:
- CIN =
X(a valid uppercase letter) - ABI =
05428(5 digits, valid) - CAB =
11101(5 digits, valid) - Account =
000000123456(12 alphanumeric, valid)
- CIN =
-
Result: every check passes — the IBAN is structurally valid.
Now change the last digit to 7 (IT60X054281110100000123457). The MOD-97 remainder is no
longer 1, so the checksum fails immediately — you see “Invalid — MOD-97 checksum failed”
in red. This is exactly how IBANs protect against single-digit transcription errors.
Every calculation runs in your browser. No data is sent anywhere.