# stdnum.tn.mf

MF (Matricule Fiscal, Tunisia tax number).

The MF consists of 4 parts: the “identifiant fiscal”, the “code TVA”, the “code catégorie” and the “numéro d’etablissement secondaire”.

The “identifiant fiscal” consists of 2 parts: the “identifiant unique” and the “clef de contrôle”. The “identifiant unique” is composed of 7 digits. The “clef de contrôle” is a letter, excluding “I”, “O” and “U” because of their similarity to “1”, “0” and “4”.

The “code TVA” is a letter that tells which VAT regime is being used. The valid values are “A”, “P”, “B”, “D” and “N”.

The “code catégorie” is a letter that tells the category the contributor belongs to. The valid values are “M”, “P”, “C”, “N” and “E”.

The “numéro d’etablissement secondaire” consists of 3 digits. It is usually “000”, but it can be “001”, “002”… depending on the branches. If it is not “000” then “code catégorie” must be “E”.

More information:

- https://futurexpert.tn/2019/10/22/structure-et-utilite-du-matricule-fiscal/

- https://www.registre-entreprises.tn/

    >>> validate('1234567/M/A/E/001')
    '1234567MAE001'
    >>> validate('1282182 W')
    '1282182W'
    >>> validate('121J')
    '0000121J'
    >>> validate('1219773U')
    Traceback (most recent call last):
        ...
    InvalidFormat: ...
    >>> validate('1234567/M/A/X/000')
    Traceback (most recent call last):
        ...
    InvalidFormat: ...
    >>> format('121J')
    '0000121/J'
    >>> format('1496298 T P N 000')
    '1496298/T/P/N/000'

stdnum.tn.mf.compact(number)

  Convert the number to the minimal representation.

  This strips the number of any valid separators, removes surrounding whitespace.

stdnum.tn.mf.format(number)

  Reformat the number to the standard presentation format.

stdnum.tn.mf.is_valid(number)

  Check if the number is a valid Tunisia MF number.

stdnum.tn.mf.validate(number)

  Check if the number is a valid Tunisia MF number.

  This checks the length and formatting.