Generator · Czech data
Czech IČO
Endpoint GET /v1/cz/ico
What it covers
Returns a valid Czech IČO (business identification number) with a correct mod-11 check digit. Use `format=vat` for the `CZ`-prefixed VAT number (DIČ). Set `invalid=true` for an IČO with a deliberately wrong check digit.
How it’s calculated
The Czech IČO's eighth digit is a weighted mod-11 check digit over the first seven digits, using descending weights 8..2, the 11-complement of the sum modulo 11, and a mod-10 reduction of the overflow residues.
Algorithm
- Take the first 7 digits of the IČO as the payload; the 8th digit is the check digit to be computed.
- Assign position weights 8, 7, 6, 5, 4, 3, 2 to payload digits 1 through 7 (leftmost digit gets weight 8, rightmost payload digit gets weight 2).
- Multiply each payload digit by its weight and sum all seven products.
- Compute base = sum mod 11.
- Compute raw = 11 - base (the 11-complement). raw ranges from 1 to 11.
- Reduce with mod-10: checkDigit = raw mod 10. So raw 11 -> 1, raw 10 -> 0, and any raw 1..9 -> itself.
- The single-digit checkDigit is the 8th digit; append it to the 7 payload digits to form the full 8-digit IČO.
Worked example
IČO 1234567? (7 payload digits 1234567, check digit unknown)
Payload digits: 1,2,3,4,5,6,7 with weights 8,7,6,5,4,3,2.
Weighted products: 8*1=8, 7*2=14, 6*3=18, 5*4=20, 4*5=20, 3*6=18, 2*7=14.
Sum = 8+14+18+20+20+18+14 = 112.
base = 112 mod 11 = 2 (since 11*10 = 110, remainder 2).
raw = 11 - 2 = 9.
checkDigit = 9 mod 10 = 9.The check digit is 9, giving the full IČO 12345679.
Edge cases
- Leading-zero IČOs are valid: the first payload digit may be 0, so the number is genuinely 8 characters and must not be parsed as a shorter integer (the edge generator emits these deliberately).
- A check digit of 0 is valid and occurs when raw = 10 (base = 1); the mod-10 rule maps it cleanly to 0.
- The mod-10 overflow rule means no residue is ever 'unissued' for this scheme — every seven-digit payload yields exactly one single-digit check digit (complement raw 11 -> 1, raw 10 -> 0).
Gotchas
- The overflow rule is mod-10, NOT the 'invalid' rule used by DK CVR / FI Y-tunnus / PL NIP: do not treat residue 10 as unissued here. Complement raw 11 maps to 1 and raw 10 maps to 0.
- Weights are applied to the payload only (7 weights for 7 payload digits); the 8th digit is the result, not an input to weightedSum.
- The VAT/DIČ form is the same digits with a 'CZ' prefix (format: 'vat') — the checksum is computed on the 8 digits, not on the prefixed string.
Parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IČO numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 8-digit IČO (default) or the `CZ`-prefixed VAT form. |
| invalid | boolean | Return an IČO with a deliberately wrong mod-11 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Response fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national IČO or VAT). |
| digits | string | The canonical, unprefixed 8-digit IČO. |
Other generators for Czechia
Czech companyCzech company nameCzech email addressCzech IBANCzech personCzech person nameCzech product or service offeringCzech rodné čísloCzech vehicle registration plate
See all generators for Czechia →The same kind of identifier elsewhere
Austrian data · Austrian FirmenbuchnummerAustrian data · Austrian SteuernummerAustrian data · Austrian UIDBelgian data · Belgian OndernemingsnummerBulgarian data · Bulgarian EIKDanish data · Danish CVRDutch data · Dutch btw-idDutch data · Dutch KvK numberDutch data · Dutch RSINEstonian data · Estonian KMKREstonian data · Estonian registrikoodFrench data · French SIRENGerman data · German HandelsregisternummerGerman data · German Personalausweis numberGerman data · German USt-IdNrGerman data · German Wirtschafts-IdNrHungarian data · Hungarian adószámHungarian data · Hungarian cégjegyzékszámIrish data · Irish CRO numberIrish data · Irish VAT numberItalian data · Italian Partita IVALatvian data · Latvian registracijas numursLithuanian data · Lithuanian įmonės kodasLithuanian data · Lithuanian PVM (VAT) numberLuxembourg data · Luxembourg TVAMaltese data · Maltese identity card numberMaltese data · Maltese VAT numberPolish data · Polish driving licence numberPolish data · Polish ID card numberPolish data · Polish KRS numberPolish data · Polish land and mortgage register numberPolish data · Polish NIPPolish data · Polish passport numberPolish data · Polish REGONPortuguese data · Portuguese Cartão de Cidadão numberRomanian data · Romanian CUI/CIFSlovak data · Slovak IČ DPHSlovak data · Slovak IČOSpanish data · Spanish CIFSwedish data · Swedish organisationsnummer
Try it