Germany · Bundesbank methods

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.

144 check digit methods
The gap it closes

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:

IBAN
DE59 3704 0044 0532 0310 00
Bank code
37040044, method 13
IBAN checksum
Passes
Bundesbank method
Fails
{ "result": 400, "message": "Invalid IBAN Number", "validations": [ { "result": 200, "message": "Valid IBAN length" }, { "result": 200, "message": "Valid IBAN Checksum" }, { "result": 200, "message": "Valid IBAN Structure" }, { "result": 411, "message": "Invalid Account Number Checksum" } ], // data: bank, BIC and branch details as usual }
What we check

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.

1. Bank code
Read the Bankleitzahl from the IBAN
2. Method
Look up the bank's assigned method
3. Variants
Apply its variants and exceptions
4. Result
Pass or fail, in the same response

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.

FAQ

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.