If you are building or testing software that handles German bank details, sooner or later you need a test IBAN for Germany that actually passes validation. Hardcoding DE00123... will fail any serious validator, and using a colleague’s real IBAN in a test fixture is a data-protection problem waiting to happen. The clean solution is a structurally valid, clearly non-real DE IBAN generated on demand.
What makes a German test IBAN valid
A German IBAN is exactly 22 characters: the country code DE, two check digits, then an 18-digit BBAN consisting of an 8-digit Bankleitzahl (bank routing code) and a 10-digit account number. Validators typically check three things: the length, the all-numeric BBAN format, and the ISO 7064 mod-97-10 check digits. Germany does not add a separate nationwide check digit inside the BBAN (individual banks use their own internal account-check methods), so for testing purposes the mod-97 check is the gate you need to pass.
The generator on this page produces IBANs that satisfy all of these rules. It uses documented example bank codes by default, the same kind you see in the official registry example DE89 3704 0044 0532 0130 00, and every result is marked with a TEST label. Everything runs entirely in your browser: no IBAN is sent to a server, logged, or stored.
Where developers actually use these
Typical uses in a German-market codebase: unit tests for a checkout form’s IBAN field, Playwright or Cypress scripts that fill a SEPA mandate form end to end, seeding a payment sandbox with plausible customer records, or reproducing a bug report without touching production data. A one-line fixture like const iban = "DE89370400440532013000" in a Jest test keeps CI deterministic; when you need variety, generate a fresh value here.
Responsible use
Test IBANs are for software testing only. Formal validity does not mean the account exists, and since Verification of Payee checks came into force in the EU, banks actively compare the IBAN against the account holder name. Never use generated IBANs for real transfers, invoices, or to misrepresent bank details.