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

  1. Take the first 7 digits of the IČO as the payload; the 8th digit is the check digit to be computed.
  2. 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).
  3. Multiply each payload digit by its weight and sum all seven products.
  4. Compute base = sum mod 11.
  5. Compute raw = 11 - base (the 11-complement). raw ranges from 1 to 11.
  6. Reduce with mod-10: checkDigit = raw mod 10. So raw 11 -> 1, raw 10 -> 0, and any raw 1..9 -> itself.
  7. 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IČO numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn an IČO with a deliberately wrong mod-11 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national IČO or VAT).
digitsstringThe canonical, unprefixed 8-digit IČO.

Other generators for Czechia

See all generators for Czechia →

The same kind of identifier elsewhere

Try it

Generate a live example below — every response is valid by format and entirely synthetic.