# stdnum.ch.uid

UID (Unternehmens-Identifikationsnummer, Swiss business identifier).

The Swiss UID is used to uniquely identify businesses for taxation purposes. The number consists of a fixed “CHE” prefix, followed by 9 digits that are protected with a simple checksum.

This module only supports the “new” format that was introduced in 2011 which completely replaced the “old” 6-digit format in 2014.

More information:

- https://www.uid.admin.ch/

- https://de.wikipedia.org/wiki/Unternehmens-Identifikationsnummer

    >>> validate('CHE-100.155.212')
    'CHE100155212'
    >>> validate('CHE-100.155.213')
    Traceback (most recent call last):
        ...
    InvalidChecksum: ...
    >>> format('CHE100155212')
    'CHE-100.155.212'

stdnum.ch.uid.calc_check_digit(number)

  Calculate the check digit for organisations. The number passed should not have the check digit included.

stdnum.ch.uid.check_uid(number, timeout=30)

  Look up information via the Swiss Federal Statistical Office web service.

  This uses the UID registry web service run by the the Swiss Federal Statistical Office to provide more details on the provided number.

  Returns a dict-like object for valid numbers with the following structure:

      {
          'organisation': {
              'organisationIdentification': {
                  'uid': {'uidOrganisationIdCategorie': 'CHE', 'uidOrganisationId': 113690319},
                  'OtherOrganisationId': [
                      {'organisationIdCategory': 'CH.ESTVID', 'organisationId': '052.0111.1006'},
                  ],
                  'organisationName': 'Staatssekretariat für Migration SEM Vermietung von Parkplätzen',
                  'legalForm': '0220',
              },
              'address': [
                  {
                      'addressCategory': 'LEGAL',
                      'street': 'Quellenweg',
                      'houseNumber': '6',
                      'town': 'Wabern',
                      'countryIdISO2': 'CH',
                  },
              ],
          },
          'uidregInformation': {
              'uidregStatusEnterpriseDetail': '3',
              ...
          },
          'vatRegisterInformation': {
              'vatStatus': '2',
              'vatEntryStatus': '1',
              ...
          },
      }

  See the following document for more details on the GetByUID return value https://www.bfs.admin.ch/bfs/en/home/registers/enterprise-register/enterprise-identification/uid-register/uid-interfaces.html

stdnum.ch.uid.compact(number)

  Convert the number to the minimal representation. This strips surrounding whitespace and separators.

stdnum.ch.uid.format(number)

  Reformat the number to the standard presentation format.

stdnum.ch.uid.is_valid(number)

  Check if the number is a valid UID.

stdnum.ch.uid.validate(number)

  Check if the number is a valid UID. This checks the length, formatting and check digit.