A Greek IBAN validator that checks every structural layer of the number in real time — the ISO 7064 MOD-97-10 checksum, the 3-digit bank code, the 4-digit branch code and the 16-digit account number format. It is built for anyone who needs to verify a Greek IBAN before making a SEPA bank transfer, integrating it into a payment form, or confirming account details shared by a counterparty.
How it works
Greece adopted the IBAN standard (ISO 13616) for all domestic and international euro transfers through the DIAS interbank clearing network. Every Greek IBAN is exactly 27 characters and follows a fixed, entirely numeric BBAN layout:
| Position | Length | Field | Content |
|---|---|---|---|
| 1-2 | 2 | Country code | Always GR |
| 3-4 | 2 | IBAN check digits | Computed by MOD-97 |
| 5-7 | 3 | Bank code | Numeric bank identifier |
| 8-11 | 4 | Branch code | Numeric branch identifier |
| 12-27 | 16 | Account number | Numeric account identifier |
The validator runs three independent checks.
Check 1 — ISO 7064 MOD-97-10 (overall IBAN checksum). The first four characters
(GR plus the two check digits) are moved to the end of the string. Then every letter
is expanded to its two-digit numeric equivalent: G becomes 16, R becomes 27.
The resulting long digit string is folded through progressive modulo-97 arithmetic —
dividing by 97 one digit at a time so no JavaScript integer overflow occurs even for the
longest IBANs in the registry. The IBAN is structurally valid if and only if the final
remainder equals exactly 1.
Check 2 — Length and country code. Greek IBANs are always 27 characters starting
with GR. Any deviation — a miscount when copying, a truncated paste, or an IBAN from
another country — is flagged immediately with the actual versus expected character count.
Check 3 — BBAN format. Even after passing MOD-97, the tool inspects the 23-character BBAN individually: it must consist entirely of digits. A BBAN containing any letters would indicate the IBAN was corrupted or belongs to a different country’s format.
Worked example
Take the test IBAN GR16 0110 1250 0000 0001 2300 695. After stripping spaces the input
is GR1601101250000000012300695 — exactly 27 characters.
-
Rearrange and expand: move
GR16to the end to get01101250000000012300695GR16. Expanding letters:G=16,R=27. The numeric string becomes011012500000000123006951627 16. Folding this through progressive mod-97 gives a remainder of 1 — checksum passes. -
BBAN breakdown:
- Bank code =
011(3 digits, valid) - Branch code =
0125(4 digits, valid) - Account number =
0000000012300695(16 digits, valid)
- Bank code =
-
Result: all checks pass — the IBAN is structurally valid.
Now change the last digit to 6 (GR1601101250000000012300696). The MOD-97 remainder
is no longer 1, so the checksum fails immediately and the tool shows
“Invalid — IBAN checksum (MOD-97) failed” in red. This is how IBANs protect against
single-digit transcription errors in practice.
Every calculation runs entirely in your browser. No data is sent anywhere.