The Netherlands IBAN (Internationaal Bankrekeningnummer) is the standard Dutch bank account identifier used for all SEPA credit transfers, direct debits, and international wire payments. Every Dutch IBAN is exactly 18 characters long and carries a built-in four-layer structure that makes it possible to detect transcription errors before a payment is submitted. This validator applies all four checks — country code, total length, BBAN composition, and ISO 7064 MOD-97 checksum — entirely inside your browser. No data ever leaves your device.
The anatomy of a Dutch IBAN
A Netherlands IBAN is assembled from four mandatory sections placed one after another without separators (spaces are cosmetic only):
| Section | Length | Content | Example |
|---|---|---|---|
| Country code | 2 letters | Always “NL” | NL |
| Check digits | 2 digits | ISO 7064 MOD-97 protection value | 91 |
| Bank code | 4 letters | BIC-derived bank identifier | ABNA |
| Account number | 10 digits | Domestic account reference | 0417164300 |
Put together: NL91 ABNA 0417 1643 00 — one of the two canonical Dutch test IBANs published in the SWIFT IBAN registry. The grouped-of-four display is convention only; the 18 underlying characters are what actually matter.
How the MOD-97 checksum works
The ISO 7064 MOD-97-10 algorithm is the same for every IBAN in every country. Starting from the full 18-character Dutch IBAN, the steps are:
- Move the first four characters (NL + the two check digits) to the end of the string, giving a 18-character rearranged sequence that starts with the bank code.
- Replace every letter with its numeric equivalent: A becomes 10, B becomes 11, all the way to Z which becomes 35. Because “NL” maps to “2321”, the digit string expands slightly beyond 18 characters.
- Treat the entire digit string as one large integer and divide by 97. A structurally correct IBAN will always leave a remainder of exactly 1.
To avoid floating-point overflow the validator processes the digit string one character at a time, updating a running remainder: r = (r * 10 + digit) mod 97. This keeps the working value between 0 and 96 throughout.
The BBAN bank code
Positions 5 to 8 of the IBAN hold a four-letter bank identifier derived from the bank’s BIC (Bank Identifier Code). The validator recognises 14 major Dutch institutions including ABN AMRO (ABNA), Rabobank (RABO), ING Bank (INGB), bunq (BUNQ), Triodos Bank (TRIO), and Knab (KNAB). When the code is recognised the bank name is shown alongside the letters. If the code is structurally valid — four uppercase letters — but not in the display list, the IBAN is still fully validated; the list is illustrative, not exhaustive, because smaller banks and new entrants can register any available four-letter code from the SWIFT BIC registry.
Worked example
Validate NL91 ABNA 0417 1643 00:
- Strip spaces:
NL91ABNA0417164300(18 characters — correct) - Bank code
ABNA— four uppercase letters (passes BBAN check) - Account
0417164300— ten digits (passes BBAN check) - Rearrange: move
NL91to the end —ABNA0417164300NL91 - Expand letters: A=10, B=11, N=23, A=10, N=23, L=21 giving the digit string
101110041716430023211… followed by 91 - Compute the full string mod 97 progressively — result is 1 (passes)
The result is a valid Dutch IBAN. The check digits 91 were specifically chosen when the account was issued so that this final remainder works out to 1.
What this validator does NOT check
Structural validity is not the same as account existence. The four checks in this tool confirm the IBAN is correctly formed — they detect the majority of transcription errors, swapped digits, and mistyped bank codes. They cannot tell you whether the account is open, whether the named bank still operates, or whether the IBAN has been closed. For payment confirmation, contact your bank or use SEPA’s pre-validation API (available to payment service providers through the ECB’s payment processing framework).