Fake IBAN Generator
Generate checksum-valid fake IBANs for 36 European countries — for development, QA, and payment-form testing.
Last updated: June 21, 2026
Find this tool useful? Support the project to keep it free!
Buy me a coffeeWhat Is a Fake IBAN?
IBAN (International Bank Account Number) is an internationally agreed standard for identifying bank accounts across national borders, defined in ISO 13616. An IBAN consists of a 2-letter ISO country code (DE for Germany, GB for United Kingdom, FR for France), a 2-digit check number, and a country-specific BBAN (Basic Bank Account Number) of varying length and format. The check digits are computed using a specific mod-97 algorithm, making IBANs self-validating — software can verify structural validity without connecting to a bank.
When building and testing fintech applications, payment forms, SEPA transfer systems, or banking integrations, developers need syntactically valid IBANs that pass mod-97 checksum validation without using real account data. This tool generates structurally correct fake IBANs for 36 European countries, each passing the universal ISO 13616 mod-97 checksum — and, for countries where this tool also models an additional domestic check-digit scheme (currently Belgium), that check too. These IBANs are randomly generated and not checked against any bank's account records — never submit one to a real payment network.
How to Generate Fake IBANs for Testing
Search or select a country from the dropdown, or use one of the popular-country quick-select chips (Germany, France, UK, Spain, Netherlands, Italy)
Select a quantity — generate a single IBAN or batch-generate up to 500 at once
Click "Generate" to produce checksum-valid fake IBANs for that country, shown in both the standard spaced format (GB29 NWBK 6016 1331 9268 19) and the compact (no spaces) format
Click "Copy" next to any row, or "Copy all formatted"/"Copy all compact" for the whole batch
Click "CSV", "JSON", or "TXT" to export the batch as a file for seeding a QA database or test fixtures
Check the supported countries table below the tool for each country's IBAN length and SEPA status
Common Testing Use Cases
- Testing a SEPA bank transfer form that requires a valid DE/FR/NL IBAN before submission
- Populating a QA database with diverse country IBANs for testing internationalization of a payment system
- Writing automated Cypress or Playwright tests for a bank details input form
- Testing IBAN validation logic in a backend service accepts the correct format for each country
- Creating realistic-looking test data for a fintech product demo without using real customer data
- Testing that an input field correctly formats and spaces an IBAN as the user types
- Generating IBANs for different countries to test country-specific bank code prefix validation
- Testing error states by intentionally providing malformed IBANs to verify rejection logic
Example Input and Output
Sample generated test IBANs for common European countries:
Germany (DE)
United Kingdom (GB)
France (FR)
Netherlands (NL)
Spain (ES)DE → DE89 3704 0044 0532 0130 00 | DE89370400440532013000
GB → GB29 NWBK 6016 1331 9268 19 | GB29NWBK60161331926819
FR → FR76 3000 6000 0112 3456 7890 189 | FR7630006000011234567890189
NL → NL91 ABNA 0417 1643 00 | NL91ABNA0417164300
ES → ES91 2100 0418 4502 0005 1332 | ES9121000418450200051332Fake IBAN vs Real IBAN
| Feature | Fake IBAN (this tool) | Real IBAN |
|---|---|---|
| Origin | Synthetic, randomly generated for testing | Issued by a real bank to a real account holder |
| Typical use | Development, QA, staging, and automated tests | Actual payments and bank transfers |
| Checksum validation | Passes the ISO 13616 mod-97 checksum | Also passes the ISO 13616 mod-97 checksum Checksum-valid only confirms structural format — it does not confirm a real account exists, for either a fake or real IBAN. |
| Account status | Randomly generated; not checked against any bank's account records | Connected to a real bank account |
| Safe for production payments? | No — randomly generated and not checked against bank records; never submit to payment networks | Yes — this is what real IBANs are for |
How IBAN Checksum Validation Works
For each country, the IBAN is constructed by combining the ISO country code with a randomly generated BBAN of the correct length and format for that country (numeric digits for most, alphanumeric for some countries' BBANs). The check digits are then computed using the ISO 13616 mod-97 algorithm: the BBAN and country code are rearranged, letters are replaced with two-digit numbers (A=10...Z=35), and the check digits that result in a mod-97 remainder of 1 are inserted at positions 3-4. The final IBAN is formatted with standard 4-char spaces for display.
Technical Stack
Use Fake IBANs in Playwright Tests
Fill a bank details form with a fake IBAN and assert the field shows a "Valid" status.const testIban = 'DE89 3704 0044 0532 0130 00';
await page.fill('#iban', testIban);
await expect(page.locator('.iban-status')).toContainText('Valid');Use Fake IBANs in Cypress Tests
Test that a payment form accepts a checksum-valid IBAN and submits successfully.const testIban = 'GB29NWBK60161331926819';
cy.get('[data-testid="iban-input"]').type(testIban);
cy.get('[data-testid="submit"]').click();
cy.get('[data-testid="success-banner"]').should('be.visible');Use Fake IBANs as Node.js Test Fixtures
Seed a test fixture with a fake IBAN for a payment API integration test.export const testFixture = {
country: 'DE',
iban: 'DE89370400440532013000',
ibanFormatted: 'DE89 3704 0044 0532 0130 00',
type: 'test-data',
};
// Actual ISO 13616 mod-97 check — rearrange, map letters to numbers
// (A=10..Z=35), and confirm the remainder is 1. This verifies what
// "checksum-valid" actually claims, rather than just a format regex.
function isMod97Valid(iban: string): boolean {
const rearranged = iban.slice(4) + iban.slice(0, 4);
const numeric = rearranged.replace(/[A-Z]/g, (ch) => (ch.charCodeAt(0) - 55).toString());
return BigInt(numeric) % 97n === 1n;
}
test('test fixture IBAN passes the ISO 13616 mod-97 checksum', () => {
expect(isMod97Valid(testFixture.iban)).toBe(true);
});Seed a QA Database with Fake IBANs (SQL)
Insert fake IBAN test rows into a QA database for internationalization testing.INSERT INTO test_accounts (country_code, iban, label) VALUES
('DE', 'DE89370400440532013000', 'TEST_DE_IBAN'),
('FR', 'FR7630006000011234567890189', 'TEST_FR_IBAN'),
('GB', 'GB29NWBK60161331926819', 'TEST_GB_IBAN');Client-Side Processing
All IBAN generation and mod-97 checksum calculation runs locally in your browser. No country, account data, or generated IBANs are sent to our servers.
Never Use in Production
Generated IBANs are strictly for testing environments. Never use them in production code, demo emails, or customer-facing systems. They are randomly generated and not checked against any bank's account records — never submit one to a real payment network. Clearly document in your test fixtures that these values are test-only (e.g., TEST_DE_IBAN = "DE89...").
Domestic Check Digits
Every generated IBAN passes the universal ISO 13616 mod-97 checksum used by all IBAN countries. Some countries additionally embed their own domestic check-digit scheme inside the BBAN itself — this tool currently models Belgium's (the account number's first 10 digits mod 97 must equal its last 2 digits). Other countries with their own domestic schemes (e.g. France's RIB key, Spain's control digits) aren't modeled yet, so a validator that specifically checks those national rules — beyond the universal IBAN-level check — may still flag a generated IBAN for those countries.
SEPA vs SWIFT
SEPA payments — between countries that participate in the SEPA scheme, which includes the EU/EEA, the UK, Switzerland, and several other European countries — only need an IBAN; customers generally don't need to provide a BIC, since banks route the payment via directory lookups rather than deriving it algorithmically from the IBAN. Countries that don't use IBAN at all, like the United States or most of Asia, instead rely on a SWIFT/BIC code paired with a local account-number format. When testing international payment flows, generate country-appropriate IBANs matching the expected payment corridor of your test scenario.
Sources & Verification
Each country's IBAN length and BBAN structure is cross-referenced against the published IBAN country registry (ISO 13616 / SWIFT IBAN Registry) and against Wikipedia's "IBAN formats by country" reference table. Every country is covered by an automated unit test that verifies both the generated length and the mod-97 checksum. This is a best-effort, openly-documented cross-reference rather than a licensed copy of the official SWIFT registry — if you're validating against a specific bank or regulator's requirements, confirm independently.
IBAN Guides
Frequently Asked Questions
Will these IBANs pass validation in payment forms?
What is the IBAN mod-97 checksum algorithm?
What is the difference between IBAN and SWIFT/BIC?
How many characters is an IBAN?
Can I use this tool to validate an existing IBAN?
Are fake IBANs safe to use in automated tests?
Can I generate IBANs in bulk?
Which countries are supported?
Related Tools
Part of a Collection
Posts for This Tool
Broader workflow content that links this tool back into the wider cluster.

How IBAN Checksum Validation Works (mod-97 Explained)
A step-by-step walkthrough of the ISO 13616 mod-97 algorithm used to validate IBAN check digits, with a worked example.

How to Generate Safe Test Data for Payment Forms
A practical guide to building a QA test suite for payment and checkout forms without using real financial data — covering IBANs, card numbers, and billing addresses.

IBAN vs SWIFT/BIC: What Is the Difference?
IBAN and SWIFT/BIC are both used in international transfers but identify different things. Learn the difference and when international payments need both.

