IBAN Check Digits Explained (and What "Check Digit Is Incorrect" Means)

By IBANtool · Updated October 12, 2026 · 8 min read

What the check digits are and where they sit

An IBAN starts with a two-letter country code. The next two characters — positions 3 and 4 — are the check digits. On DE89370400440532013000 the country code is DE and the check digits are 89. Everything after that is the domestic account structure, and its length depends on the country. Germany uses 18 characters there, so the whole IBAN is 22.

Those two digits are not a bank code and they are not part of the account number. They are a checksum, there to stop a mistyped account before the payment is created. "Check digit is incorrect" means the checksum does not match the rest of the string. It does not say which character is wrong, and it does not say whether an account exists.

How MOD-97 works, step by step

The check is called MOD-97. You only need the remainder when the rearranged IBAN, written as one integer, is divided by 97. Four steps, in this order:

  1. Strip the spaces and convert the whole IBAN to upper case. Spaces are for reading. They are not part of the value. DE89 3704 0044 0532 0130 00 and DE89370400440532013000 are the same input.
  2. Move the first four characters — the country code and the check digits — as one block to the end. Do not reorder the four. DE89 moves together.
  3. Replace every letter with two digits, A = 10 through Z = 35. A is 10, B is 11, C is 12, so D is 13 and E is 14. Digits stay digits.
  4. Divide that integer by 97 and keep the remainder. If the remainder is 1, the IBAN is valid. Any other remainder means the check digits do not match the rest of the string.

The letter table is the step people skip. The country code has to become digits or there is nothing to divide. D and E are not left as letters. They become 13 and 14, written one after the other, so DE becomes 1314. The check digits are already numbers, so 89 stays 89. The same rule covers every letter: O, the letter, is 24, which is why it is not the digit 0.

Worked example: DE89370400440532013000

Start with DE89370400440532013000. Step 1 changes nothing: it is already upper case and it has no spaces. Step 2 moves DE89 to the end, so the domestic part comes first: 370400440532013000, followed by the country code and the check digits.

Step 3 converts the letters only. D becomes 13 and E becomes 14, so DE becomes 1314, and the check digits 89 stay as they are. Join the pieces: 370400440532013000 + 1314 + 89 = 370400440532013000131489.

Step 4: 370400440532013000131489 mod 97 = 1. Remainder 1 means this IBAN is valid. If you run the division and get any other remainder, the arithmetic slipped. The example did not.

The check digits are produced by a small twist on the same sum. Replace positions 3–4 of DE89 with 00 and convert again, which gives 370400440532013000131400. That number mod 97 is 9. Then 98 − 9 = 89, which is exactly the original check digits. The bank does this when the IBAN is issued. You only need it if you are reconstructing a check digit, not if you were given one to verify.

Length and shape are a separate question from the checksum, and both have to pass. The German IBAN format page shows DE, two check digits, and 18 characters of domestic detail. MOD-97 then tells you whether this particular string is consistent, or a neighbour of it that a typo produced. A string can be 22 characters and still fail the remainder. A string can pass neither.

The five typos that break the check digit

A check-digit rejection is almost always one of these. None of them require the account to be wrong at the bank. They require the string in the form to differ from the string that was issued.

  • One character missing, or one extra. A German IBAN is 22 characters once the spaces are gone. Drop a zero, or keep one from the line above, and the number changes, so the remainder is no longer 1. The same failure is the first row in common IBAN validation errors. A re-count of the characters catches it before you touch anything else.
  • A letter changed while someone was "fixing" the case. Step 1 uppercases the string, so de89 and DE89 produce the same number. What breaks the check is changing which letter is there — usually while a person cleans up a screenshot by hand and substitutes a character instead of only changing its case.
  • The letter O read as the digit 0, or the letter I read as the digit 1. In a lot of fonts they are the same width. O is a letter, so it becomes 24 under A = 10. The digit 0 stays 0. One substitution changes the integer and the remainder. I is 18, and the digit 1 is 1. Same kind of slip, same result.
  • The copy was cut off. Selecting an IBAN in a PDF, a chat thread or a spreadsheet cell often drops the last group. What remains can still look like an account number. The check fails because the tail of the number — including the country code after it has been moved — is incomplete.
  • A mark that is not a space. A conforming check removes spaces. It does not remove hyphens, dots, slashes or a currency word stuck to the end. DE89-3704-0044-0532-0130-00 is a different string from the IBAN, because the hyphens are extra characters. Delete the marks, then check. Do not delete a digit to make the length look right.

Check an IBAN without doing the math

You do not have to divide a 24-digit number by 97 to decide whether the string is worth sending. The IBAN validator runs the country check, the length check and the MOD-97 remainder in your browser. Nothing is uploaded. If the remainder is not 1, correct the string before you create the payment.

If you are looking at a format rather than an account a person sent you — a template, a test file, a blank you want to match — the IBAN generator builds an example whose check digits already pass. Use a generated example to see the shape of a country's IBAN. Use the validator on the IBAN you were actually given. Do not send a payment to an example.

A passing remainder clears the typo test and only the typo test. Confirm the account name with the person you are paying. If the form also wants a BIC, take it from the bank or from the IBAN, not from memory of a previous invoice.

FAQ

What does "check digit is incorrect" mean?
The two digits in positions 3 and 4 do not match the rest of the IBAN under MOD-97. The string fails its internal checksum. The message does not mean the bank has closed the account, and it does not point at the character that is wrong.
Where do the check digits sit in an IBAN?
They are characters 3 and 4, immediately after the two-letter country code. In DE89370400440532013000 the country code is DE and the check digits are 89. They are not the bank code. The bank code sits further along, and its position depends on the country.
Can I repair a rejected IBAN by editing the check digits until the form accepts?
Only to restore the IBAN the account holder actually gave you. Inventing new check digits so a wrong string passes will produce a different IBAN, which may belong to someone else or to nobody. Re-copy the original, then check it.
Does a passing check digit prove the account exists?
No. Remainder 1 means the country code, the check digits and the rest of the string are consistent. The account can still be closed, the name can still be wrong, and the bank can still refuse the payment for a reason the checksum cannot see.
Why does the same IBAN fail in one form and pass in another?
One form is usually keeping a character the other one drops — a hyphen, a line break, or a label such as the word IBAN copied along with the number. Remove allowed display whitespace and uppercase letters. Reject other symbols rather than deleting them silently; compare against the original bank instruction. If it still fails, the characters themselves differ.

Country, length and MOD-97, calculated on this page. Paste the IBAN that was rejected and read the result before you send.

Validate an IBAN in your browser →

This article is for general information and does not constitute financial advice. Always confirm bank details with your institution before initiating a transfer.