Ukraine RNOKPP Validator

Verify a Ukrainian tax number and decode its embedded birth date, gender and checksum.

Ad placeholder (leaderboard)
Enjoying the tools? Go Pro for £4.99 (one-time) and remove all ads — forever, on this device. Remove ads — £4.99

The RNOKPP (Реєстраційний номер облікової картки платника податків — the registration number of the taxpayer’s account card) is Ukraine’s 10-digit personal tax identification number, issued by the State Tax Service. It is also widely called the IPN (Ідентифікаційний номер платника податків). Every employed, banking or property-owning resident needs one. What makes the RNOKPP especially interesting from a data-science perspective is that it is not a random serial: it encodes the holder’s exact date of birth, a daily sequential serial, and a gender indicator — all verifiable with arithmetic alone, entirely in your browser.

How it works

An RNOKPP is exactly 10 decimal digits with a precise internal layout:

PositionsFieldMeaning
1 – 5Day countDays elapsed since 31 December 1899
6 – 8Daily serialSequence number within the birth date
9Gender digitOdd = male, even = female
10Control digitWeighted MOD-11 check digit

Date of birth is recovered by treating the first five digits as a day count with base date 31 December 1899, so day 00001 is 1 January 1900, day 36524 is 31 December 1999, and so on. The tool converts this count to a full calendar date using standard UTC arithmetic — no lookup tables required.

Gender is a single-bit flag embedded in digit nine: any odd digit (1, 3, 5, 7, 9) means male; any even digit (0, 2, 4, 6, 8) means female.

The checksum formula

The control digit in position ten is produced by a weighted MOD-11 algorithm specified in the official DPS registration documentation:

W = [−1, 5, 7, 9, 4, 6, 10, 5, 7]

sum = d1 × (−1) + d2 × 5 + d3 × 7 + d4 × 9 + d5 × 4

  • d6 × 6 + d7 × 10 + d8 × 5 + d9 × 7

control = (sum mod 11) mod 10

The intermediate mod 11 prevents an impossible single-digit result (the raw sum can be negative or large). The final mod 10 collapses any value of 10 — which cannot appear as a single decimal digit — to zero.

Worked example

Take the obviously-fake number 3104700111:

  • Digits 1–5: 31047 → 31,047 days after 31 Dec 1899 = 1 January 1985
  • Digits 6–8: 001 → serial 001 within that day
  • Digit 9: 1 (odd) → Male
  • Checksum:
PosDigitWeightProduct
13−1−3
2155
3070
44936
57428
6060
70100
8155
9177
Sum78

78 mod 11 = 1 → 1 mod 10 = 1 — matches digit ten, so the checksum passes.

This number was constructed specifically for this demonstration and does not correspond to any real person.

Privacy note

Everything in this tool runs locally inside your browser using JavaScript. No number you enter is transmitted, logged or stored anywhere. Tax identification numbers are sensitive personal data — this tool is designed so you never have to share yours with a third party just to check its structure.

Ad placeholder (rectangle)