Fake IBAN Generator

Generate structurally valid test IBANs with correct ISO 7064 Mod 97-10 check digits for banking integration testing

Generating Test IBANs for Banking Integration Development

IBAN (International Bank Account Number) validation is critical for banking integrations β€” SEPA transfers, payment processing, and account verification all require correctly formatted IBANs with valid check digits. Testing these integrations requires IBANs that pass structural validation without corresponding to real bank accounts. The Fake IBAN Generator creates structurally valid IBANs using ISO 7064 Mod 97-10 check digit calculation for 10 European countries, with synthetic account numbers that are not associated with any real banking institution.

Select a country, generate one or multiple IBANs, and use them to test your IBAN validation logic, payment form fields, and banking integration workflows. Each generated IBAN has correct length for its country, valid check digits, and a proper BBAN (Basic Bank Account Number) structure β€” but uses synthetic bank codes that do not correspond to real financial institutions. All generation happens client-side with zero data transmission.

IBAN Structure and Check Digit Calculation

Every IBAN follows a standardized structure defined by ISO 13616:

  • Country code: Two-letter ISO 3166 country identifier (DE, FR, ES, GB, etc.)
  • Check digits: Two numeric digits calculated using ISO 7064 Mod 97-10 algorithm
  • BBAN: Basic Bank Account Number β€” country-specific format containing bank code, branch code, and account number

The check digit calculation involves: moving the first four characters to the end, converting letters to numbers (A=10, B=11... Z=35), computing the remainder when divided by 97, and subtracting from 98. This detects single-character errors and most transposition errors with 97% probability.

Supported Countries and Formats

The generator produces IBANs in correct format for each country:

  • Germany (DE): 22 characters β€” DE + check + 8-digit bank code + 10-digit account
  • France (FR): 27 characters β€” FR + check + 5-digit bank + 5-digit branch + 11-digit account + 2-digit key
  • Spain (ES): 24 characters β€” ES + check + 4-digit bank + 4-digit branch + 2-digit control + 10-digit account
  • United Kingdom (GB): 22 characters β€” GB + check + 4-letter bank + 6-digit sort code + 8-digit account
  • Italy (IT): 27 characters β€” IT + check + 1-letter CIN + 5-digit bank + 5-digit branch + 12-digit account
  • And more: Netherlands (NL), Portugal (PT), Belgium (BE), Austria (AT), Switzerland (CH)

Testing IBAN Validation Logic

Generated IBANs enable testing various validation scenarios:

  • Happy path: Valid IBAN passes all checks β€” length, country format, check digits
  • Check digit verification: Modify one digit in a valid IBAN to test that your validation detects the alteration
  • Country format: Test that your system accepts IBANs from all countries you support
  • Display formatting: IBANs should be displayed in groups of 4 characters for readability (DE89 3704 0044 0532 0130 00)
  • Storage: IBANs should be stored without spaces as a continuous string for programmatic use

Remember: passing IBAN validation only confirms format correctness β€” it does not verify the account exists or belongs to the expected holder. Real banking integrations require additional verification steps.

Code Examples

IBAN Validation with Mod 97-10 Check

// Validate IBAN check digits using ISO 7064 Mod 97-10
function validateIBAN(iban) {
  // Remove spaces and convert to uppercase
  const cleaned = iban.replace(/\s/g, '').toUpperCase();

  // Move first 4 chars to end
  const rearranged = cleaned.slice(4) + cleaned.slice(0, 4);

  // Convert letters to numbers (A=10, B=11, ..., Z=35)
  const numeric = rearranged.replace(/[A-Z]/g, (char) =>
    (char.charCodeAt(0) - 55).toString()
  );

  // Calculate mod 97 (handle large numbers with chunking)
  let remainder = numeric;
  while (remainder.length > 2) {
    const chunk = remainder.slice(0, 9);
    remainder = (parseInt(chunk) % 97).toString() + remainder.slice(9);
  }

  return parseInt(remainder) % 97 === 1;
}

// Generated test IBANs pass validation:
console.log(validateIBAN('DE89370400440532013000')); // true
console.log(validateIBAN('GB29NWBK60161331926819')); // true
console.log(validateIBAN('FR7630006000011234567890189')); // true

Standards & Specifications

Frequently Asked Questions

Are these IBANs linked to real bank accounts?

No. This tool generates synthetic account numbers with valid checksums but they do not correspond to any real bank account. The bank codes and account numbers are randomly generated for testing purposes only.

What is ISO 7064 Mod 97-10?

ISO 7064 Mod 97-10 is the checksum algorithm used to validate IBANs. It rearranges the IBAN (moving the country code and check digits to the end), converts all letters to numbers (A=10, B=11, ..., Z=35), and verifies that the result modulo 97 equals 1. This tool calculates correct check digits using this algorithm.

Can I use these IBANs for testing SEPA payment integrations?

These IBANs are suitable for testing client-side IBAN validation logic, format checking, and country-specific length validation. For end-to-end payment gateway testing, use your payment provider's official test IBANs as they are recognized by the banking sandbox environment.

Why do different countries have different IBAN lengths?

Each country defines its own BBAN (Basic Bank Account Number) format, which includes bank codes, branch codes, and account numbers of varying lengths. For example, German IBANs are 22 characters (8-digit bank code + 10-digit account), while French IBANs are 27 characters (5-digit bank + 5-digit branch + 11-character account + 2-digit check).