# czech-test-data > Valid, edge-case and invalid Czech test data: rodné číslo (birth number), IČO, DIČ, bank account, IBAN, phone > number, PSČ (postal code), electricity EAN and gas EIC, with validators that say why a value is invalid. > An npm library and a CLI, zero dependencies, seeded: the same seed gives the same values. Do not make up Czech identifiers for tests, fixtures or seed data: most of them carry a checksum, so invented numbers are usually invalid. Generate them with the CLI or the library, and check values with `validate`. A valid birth number or phone number may belong to a real person: use generated data only in test systems. ## CLI (Node.js 22.12+, no install needed) - `npx czech-test-data ico` - `npx czech-test-data ico --invalid all --format json` - `npx czech-test-data birth-number --edge month+20 --seed 42` - `npx czech-test-data bank-account --count 5 --format csv` - `npx czech-test-data validate ico 06541186` - `npx czech-test-data ico --help` Options: `--count N`, `--seed N`, `--format text|json|csv`, `--edge VARIANT|all|random`, `--invalid VARIANT|all|random`, `--reference-date YYYY-MM-DD`. JSON output is an array of `{ "value", "kind", "variant" }`. `validate` reads values from arguments or stdin; exit code 0 when all are valid, 1 when any is invalid. ## Library ```ts import { createCz } from 'czech-test-data'; const cz = createCz({ seed: 42 }); cz.ico(); // a valid IČO cz.ico.edge('leadingZeros'); // a valid edge case cz.ico.invalid('badChecksum'); // an invalid value cz.validate.ico('06541186'); // { valid: true } or { valid: false, reason: 'badChecksum' } ``` ## Identifiers and variants Disputed variants are valid by some readings of the rules only. ### Rodné číslo: `birthNumber` (CLI `birth-number`) - Edge variants, valid: `pre1954` (Před rokem 1954), `mod11Exception` (Výjimka zbytku 10), `month+20` (Měsíc +20), `month+70` (Měsíc +70), `leapDay` (29. února), `withoutSlash` (Bez lomítka) - Invalid variants: `badChecksum` (Špatný součet), `impossibleDate` (Neexistující datum), `wrongLength` (Špatná délka), `letters` (Písmeno), `futureDate` (Datum v budoucnu) ### IČO: `ico` (CLI `ico`) - Edge variants, valid: `leadingZeros` (Nula na začátku), `checkDigitZero` (Kontrolní 0), `checkDigitOne` (Kontrolní 1) - Invalid variants: `badChecksum` (Špatný součet), `wrongLength` (Špatná délka), `letters` (Písmeno) ### DIČ: `dic` (CLI `dic`) - Edge variants, valid: `fromIco` (Z IČO), `fromBirthNumber` (Z rodného čísla), `lowercasePrefix` (Malé cz, disputed), `pre1954` (RČ před rokem 1954), `vatGroup` (Skupina DPH) - Invalid variants: `missingPrefix` (Bez CZ), `foreignPrefix` (Cizí předpona), `badInnerChecksum` (Špatný součet) ### Číslo účtu: `bankAccount` (CLI `bank-account`) - Edge variants, valid: `withPrefix` (S předčíslím), `maxLength` (Nejdelší), `minLength` (Nejkratší), `withLeadingZeros` (S nulami), `zeroPrefix` (Předčíslí 000000) - Invalid variants: `badChecksumPrefix` (Špatné předčíslí), `badChecksumNumber` (Špatné číslo), `unknownBankCode` (Neznámá banka), `wrongLength` (Špatná délka), `letters` (Písmeno), `zeroNumber` (Samé nuly) ### IBAN: `iban` (CLI `iban`) - Edge variants, valid: `withSpaces` (S mezerami), `lowercase` (Malá písmena, disputed), `withPrefix` (S předčíslím), `checkDigitsLeadingZero` (Kontrolní s nulou) - Invalid variants: `badChecksum` (Špatný součet), `wrongCountry` (Slovenský), `wrongLength` (Špatná délka), `letters` (Písmeno), `badChecksumPrefix` (Špatné předčíslí), `badChecksumNumber` (Špatné číslo účtu), `zeroNumber` (Samé nuly), `unknownBankCode` (Neznámá banka) ### Telefon: `phone` (CLI `phone`) - Edge variants, valid: `withoutSpaces` (Bez mezer), `withoutCountryCode` (Bez +420), `digitsOnly` (Jen číslice), `prefix00` (00420), `newMobileRange` (Mobil 71x), `voip` (VoIP 910) - Invalid variants: `wrongLength` (Špatná délka), `letters` (Písmeno), `wrongCountryCode` (Cizí předvolba), `unknownPrefix` (Nepřidělená řada), `specialPrefix` (Linka 800 a 900) ### PSČ: `postalCode` (CLI `postal-code`) - Edge variants, valid: `withoutSpace` (Bez mezery), `nonGeographic` (Neadresné) - Invalid variants: `wrongLength` (Špatná délka), `letters` (Písmeno), `badFormat` (Špatný tvar), `foreignRange` (Slovenské) ### EAN (elektřina): `ean` (CLI `ean`) - Edge variants, valid: `checkDigitZero` (Kontrolní 0), `lds` (Lokální soustava) - Invalid variants: `badChecksum` (Špatný součet), `wrongLength` (Špatná délka), `letters` (Písmeno), `wrongPrefix` (Cizí prefix) ### EIC (plyn): `eic` (CLI `eic`) - Edge variants, valid: `checkCharacterDigit` (Kontrolní číslice), `lds` (Lokální soustava) - Invalid variants: `badChecksum` (Špatný kontrolní znak), `wrongLength` (Špatná délka), `wrongPrefix` (Jiný typ kódu), `dashCheckCharacter` (Pomlčka na konci) ## Links - [Web tool](https://testovacidata.cz/) (Czech): every identifier with valid, edge and invalid values to copy, and a form-check kit - [README](https://github.com/MareqU/czech-test-data#readme): full API, options of every generator, examples for Playwright, Cypress and Vitest - [Agent skill](https://github.com/MareqU/czech-test-data/blob/main/skills/czech-test-data/SKILL.md): instructions to copy into your project - [npm](https://www.npmjs.com/package/czech-test-data) - [Rules with official sources](https://github.com/MareqU/czech-test-data/tree/main/docs/rules)