Ukrainian tax number (RNOKPP / ІПН) validator
The RNOKPP (Реєстраційний номер облікової картки платника податків — the registration number of the taxpayer’s account card), historically called the ІПН or identification number, is the personal tax number issued by Ukraine’s State Tax Service. It is required for employment, banking, property and most official dealings. Unusually, the number is not a random serial: it embeds the holder’s date of birth and gender, both of which this tool decodes alongside a checksum verification — entirely in your browser.
The RNOKPP structure and checksum
An RNOKPP is exactly 10 digits:
- Digits 1–5 encode the date of birth as the number of days since
31 December 1899 (so
00001= 1 January 1900). The tool adds that day count to the base date to reconstruct the full date. - Digit 9 encodes gender: odd = male, even = female.
- Digit 10 is a weighted check digit.
The checksum multiplies the first nine digits by the fixed weights
[-1, 5, 7, 9, 4, 6, 10, 5, 7], sums the products, and computes
control = (sum mod 11) mod 10. The number is valid only if this control equals
the tenth digit.
Example
Take 3000607994. Digits 1–5 are 30006, i.e. 30,006 days after 31 December
1899, which resolves to a date of birth in 1982. Digit 9 is 9 (odd), so the
gender is male. Applying the weights to the first nine digits and reducing
(sum mod 11) mod 10 produces a control that matches the final digit 4, so the
checksum is valid.
| Position | Field | Meaning |
|---|---|---|
| 1–5 | Date of birth | Days since 1899-12-31 |
| 6–8 | Serial | Sequence within the day |
| 9 | Gender | Odd = male, even = female |
| 10 | Check digit | Weighted mod-11 control |
Why the date-of-birth encoding is unusual
Most national tax or ID numbers either randomise the serial or embed the birth date
as a readable YYYYMMDD. Ukraine’s RNOKPP instead stores a day count since
31 December 1899 — the same epoch several older accounting systems used. The decode is
therefore a single addition rather than a field split, which is why two people born a
day apart have consecutive leading digits. Because the count carries no century marker
beyond its own range, the scheme comfortably covers births from 1900 well into the
current century within the five-digit field.
What a passing checksum does and does not prove
- It proves the ten digits are mutually consistent — the control digit was computed from the first nine using the official weights, so a single typo or transposition almost always breaks it.
- It does not prove the number was ever issued, is currently registered, or belongs to the person presenting it. Only the State Tax Service of Ukraine (DPS) register is authoritative for that, and it is not exposed to offline tools.
Use this validator as a fast, private first pass — for KYC, invoicing or contract review — and confirm registration status through official DPS channels when it matters.
Handling INNs in databases and forms
Three engineering notes save real cleanup work later. Store the INN as a string, never an integer — the code can begin with 0 for the oldest birth dates, and integer storage silently strips it, corrupting the number. Accept and strip spaces on input: documents frequently print the number in grouped form. And when a batch import shows a cluster of check-digit failures, look for a column shift or an OCR pass on scanned documents before blaming the data source — a systematic failure pattern almost always means the digits were transformed somewhere upstream, not that dozens of counterparties supplied bad numbers.
Why the weighted checksum catches what the eye misses
The INN’s control digit is computed with positional weights, which means the same digits in a different order produce a different expected check digit — so the algorithm catches transposed neighbours (typing 34 for 43), the single most frequent human keying error, as well as any single-digit typo. What no checksum can catch is a valid but wrong number: a typo that happens to land on another real person’s INN passes every mathematical test. That residual risk is why batch imports should pair the checksum gate with a name-match against source documents for any record that matters financially.
Sources
- State Tax Service of Ukraine (Державна податкова служба, DPS) — tax.gov.ua — the authority that issues and administers the RNOKPP/ІПН.
This tool decodes the structure and verifies the control digit only. It never queries the register of the State Tax Service of Ukraine, and nothing is uploaded — your number stays on your device. For authoritative registration checks, use the tax service’s own e-services or the Diia platform.