stdnum.be.ssn¶
SSN, INSZ, NISS (Belgian social security number).
The Belgian social security identification number, also known as the INSZ number (Identificatienummer van de sociale zekerheid), NISS number (Numéro d’identification de la sécurité sociale) or ENSS number (Erkennungsnummer der sozialen Sicherheit), is the unique identification number of a person working in or covered for social benefits in Belgium.
For Belgian residents, the number is identical to their Belgian National Number (Rijksregisternummer, Numéro National). For non-residents, the number is identical to their Belgian BIS number.
Both numbers consists of 11 digits and encode a person’s date of birth and gender. It encodes the date of birth in the first 6 digits in the format YYMMDD. The following 3 digits represent a counter of people born on the same date, separated by sex (odd for male and even for females respectively). The final 2 digits form a check number based on the 9 preceding digits.
More information:
https://www.socialsecurity.be/site_nl/employer/applics/belgianidpro/index.htm
https://overheid.vlaanderen.be/personeel/regelgeving/insz-nummer
https://www.ksz-bcss.fgov.be/nl/project/rijksregisterksz-registers
>>> compact('85.07.30-033 28')
'85073003328'
>>> compact('98.47.28-997.65')
'98472899765'
>>> validate('85 07 30 033 28')
'85073003328'
>>> validate('98 47 28 997 65')
'98472899765'
>>> validate('17 07 30 033 84')
'17073003384'
>>> validate('01 49 07 001 85')
'01490700185'
>>> validate('12345678901')
Traceback (most recent call last):
...
InvalidChecksum: ...
>>> guess_type('85.07.30-033 28')
'nn'
>>> guess_type('98.47.28-997.65')
'bis'
>>> format('85073003328')
'85.07.30-033.28'
>>> get_birth_date('85.07.30-033 28')
datetime.date(1985, 7, 30)
>>> get_birth_year('85.07.30-033 28')
1985
>>> get_birth_month('85.07.30-033 28')
7
>>> get_gender('85.07.30-033 28')
'M'
>>> format('98472899765')
'98.47.28-997.65'
>>> get_birth_date('98.47.28-997.65')
datetime.date(1998, 7, 28)
>>> get_birth_year('98.47.28-997.65')
1998
>>> get_birth_month('98.47.28-997.65')
7
>>> get_gender('98.47.28-997.65')
'M'
- stdnum.be.ssn.compact(number: str) str ¶
Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.
- stdnum.be.ssn.format(number: str) str ¶
Reformat the number to the standard presentation format.
- stdnum.be.ssn.get_birth_date(number: str) date | None ¶
Return the date of birth.
- stdnum.be.ssn.get_birth_month(number: str) int | None ¶
Return the month of the birth date.
- stdnum.be.ssn.get_birth_year(number: str) int | None ¶
Return the year of the birth date.
- stdnum.be.ssn.get_gender(number: str) str | None ¶
Get the person’s gender (‘M’ or ‘F’).
- stdnum.be.ssn.guess_type(number: str) str | None ¶
Return the Belgian SSN type for which this number is valid.
- stdnum.be.ssn.is_valid(number: str) bool ¶
Check if the number is a valid Belgian SSN number.
- stdnum.be.ssn.validate(number: str) str ¶
Check if the number is a valid Belgian SSN. This searches for the proper sub-type and validates using that.