Italian IBAN Validator

Validate any Italian IBAN instantly — CIN, ABI, CAB and MOD-97 checksum checked.

Ad placeholder (leaderboard)
Enjoying the tools? Go Pro for £4.99 (one-time) and remove all ads — forever, on this device. Remove ads — £4.99

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:

PositionLengthFieldContent
1-22Country codeAlways IT
3-42Check digitsComputed by MOD-97
51CINInternal control letter, A-Z
6-105ABIBank identifier, all digits
11-155CABBranch identifier, all digits
16-2712AccountAlphanumeric 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.

  1. Rearrange and expand: move IT60 to the end, expand all letters. The CIN X becomes 33, I becomes 18, T becomes 29. Building the numeric string and folding mod 97 gives a remainder of 1 — checksum passes.

  2. BBAN breakdown:

    • CIN = X (a valid uppercase letter)
    • ABI = 05428 (5 digits, valid)
    • CAB = 11101 (5 digits, valid)
    • Account = 000000123456 (12 alphanumeric, valid)
  3. 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.

Ad placeholder (rectangle)