WebToolsPlanet
Generator Tools

Fake IBAN Generator

Generate checksum-valid fake IBANs for 36 European countries — for development, QA, and payment-form testing.

Last updated: June 21, 2026

Client-Side Processing
Input Data Stays on Device
Instant Local Execution

Find this tool useful? Support the project to keep it free!

Buy me a coffee

What 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

1

Search or select a country from the dropdown, or use one of the popular-country quick-select chips (Germany, France, UK, Spain, Netherlands, Italy)

2

Select a quantity — generate a single IBAN or batch-generate up to 500 at once

3

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

4

Click "Copy" next to any row, or "Copy all formatted"/"Copy all compact" for the whole batch

5

Click "CSV", "JSON", or "TXT" to export the batch as a file for seeding a QA database or test fixtures

6

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:

Country selected
Germany (DE)
United Kingdom (GB)
France (FR)
Netherlands (NL)
Spain (ES)
Generated fake IBAN (formatted + compact)
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  |  ES9121000418450200051332

Fake IBAN vs Real IBAN

FeatureFake IBAN (this tool)Real IBAN
OriginSynthetic, randomly generated for testingIssued by a real bank to a real account holder
Typical useDevelopment, QA, staging, and automated testsActual payments and bank transfers
Checksum validationPasses the ISO 13616 mod-97 checksumAlso 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 statusRandomly generated; not checked against any bank's account recordsConnected to a real bank account
Safe for production payments?No — randomly generated and not checked against bank records; never submit to payment networksYes — 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

Browser-native JavaScriptISO 13616 mod-97 algorithmCountry-specific BBAN formatsClient-side only

Use Fake IBANs in Playwright Tests

Test scenario
Fill a bank details form with a fake IBAN and assert the field shows a "Valid" status.
Playwright (TypeScript)
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 scenario
Test that a payment form accepts a checksum-valid IBAN and submits successfully.
Cypress (TypeScript)
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

Test scenario
Seed a test fixture with a fake IBAN for a payment API integration test.
Node.js (Vitest/Jest)
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)

Test scenario
Insert fake IBAN test rows into a QA database for internationalization testing.
SQL
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?
For structural validation — country pattern and the universal IBAN-level mod-97 checksum: yes. For bank-level validation: no — these are randomly generated and not checked against any bank's account records, so they should never be submitted to a real payment network. This is exactly what you want for testing: validators checking country pattern and IBAN-level mod-97 will pass them, while the number was never checked against any bank's account records. (A validator that also enforces an unmodeled domestic check-digit scheme for a given country may still flag one — see "Domestic Check Digits" below.)
What is the IBAN mod-97 checksum algorithm?
The check digits (positions 3-4 of the IBAN) are calculated by: moving the first 4 characters to the end of the IBAN string, replacing each letter with its numeric equivalent (A=10, B=11, ..., Z=35), interpreting the entire string as an integer, and computing the remainder when divided by 97. A valid IBAN always produces a remainder of 1. This is why the check digits are computed last and embedded at positions 3-4.
What is the difference between IBAN and SWIFT/BIC?
IBAN identifies the individual bank account. SWIFT/BIC (Bank Identifier Code) identifies the bank institution itself (e.g., DEUTDEDB for Deutsche Bank). For SEPA transfers within the EU, customers generally don't need to provide a BIC alongside the IBAN since 2016 — banks route the payment using directory lookups rather than deriving the BIC algorithmically from the IBAN itself. For transfers outside the IBAN zone (e.g. to the US or most of Asia, which don't use IBAN at all), you typically need a BIC plus that country's own account-number format instead.
How many characters is an IBAN?
IBANs vary in length by country. The BBAN portion (the country-specific account number) has different fixed lengths per country. Germany (DE): 22 characters. UK (GB): 22 characters. France (FR): 27 characters. Netherlands (NL): 18 characters. The maximum length is 34 characters. All characters are alphanumeric (A-Z, 0-9); no special characters.
Can I use this tool to validate an existing IBAN?
Yes — switch to the Validate tab above and paste any IBAN to check it: country recognition, declared length, the country-specific account-number character pattern, and the mod-97 checksum, each reported separately so you can see exactly which check failed. If you need the same check outside the browser, most banking libraries (iban.js for JavaScript, python-stdnum for Python) include an equivalent validate() function.
Are fake IBANs safe to use in automated tests?
Yes, and they are the recommended approach for testing payment flows. Using real customer IBANs in non-production environments is a data-minimization risk under data-protection rules like GDPR — this isn't legal advice, so check with your own compliance team for specifics. Fake but structurally valid IBANs let you test form validation, backend processing, and data formatting without touching real customer data. Mark them clearly in your fixtures as "FOR TESTING ONLY".
Can I generate IBANs in bulk?
Yes. Select a quantity from 1 up to 500 and click Generate to produce that many checksum-valid IBANs for the selected country at once. You can copy all results as formatted or compact text, or export the batch as CSV, JSON, or TXT for seeding a QA database or test fixtures.
Which countries are supported?
This tool supports 36 European countries, each with the correct IBAN length and BBAN structure for that country. See the supported countries table below the tool for the full list with IBAN length and SEPA status per country.