German bank account validation
Every German bank checks its account numbers with a check digit method assigned by the Deutsche Bundesbank. We run the right method for each bank code on every German IBAN, so a mistyped account number is caught before the payment goes out, not when it comes back.
A valid IBAN can still carry a wrong account number
The IBAN check digits are computed over whatever account number was typed, so swapping two digits produces a new IBAN that passes the checksum. Here is a real example, built from the standard German example IBAN by swapping two digits of the account number:
The bank's own rule, not a generic one
A generic checksum would reject valid accounts at some banks and accept invalid ones at others. The check follows the method the Bundesbank assigns to the bank, including its variants and exceptions.
Every method code from 00 to E4 is implemented and cross-checked against our reference implementation on more than 34,000 test accounts. Try a German IBAN in the checker, or read the API documentation.
Common questions about German account validation
What are the Bundesbank check digit methods?
The Deutsche Bundesbank publishes the check digit calculation methods (Prüfzifferberechnungsmethoden) that German banks use for their account numbers, and assigns one method to every bank code (Bankleitzahl). There are more than a hundred of them, from simple weighted sums to methods with several variants and bank-specific exceptions.
Why isn't the IBAN checksum enough for Germany?
The IBAN check digits are calculated over the whole IBAN, so they are recomputed for any account number, including a mistyped one. A German IBAN built from an account number with two swapped digits still passes the IBAN checksum. Only the bank's own method catches it.
Do I need a separate endpoint or parameter?
No. The check runs automatically on every German IBAN sent to the validate endpoint. Pass account_checksum=NO if you ever need to skip it.
Does a passing check mean the account exists?
No. It means the account number is well-formed for that bank's method. It doesn't confirm the account is open, active or held by a specific person. Only the bank can confirm that.
Is it available self-hosted?
Yes. The self-hosted engine runs the same methods against the same bank data, so both editions return the same answer for every account.