# stdnum.eu.oss

OSS (European VAT on e-Commerce - One Stop Shop).

This covers number that have been issued under the non-union scheme and the import scheme of the European VAT on e-Commerce one stop shop. Numbers under the non-union scheme are assigned to foreign companies providing digital services to European Union consumers. Numbers under the import scheme are assigned for importing goods from a third country (through an intermediary).

This is also called MOSS (mini One Stop Shop) and VoeS (VAT on e-Services). The number under the import scheme is also called IOSS (Import One Stop Shop) number.

Numbers under the non-union scheme are in the format EUxxxyyyyyz. For the import scheme the format is IMxxxyyyyyyz. An intermediary will also get an number in the format INxxxyyyyyyz but that may not be used as VAT identification number.

There appears to be a check digit algorithm but the FITSDEV2-SC12-TS-Mini1SS (Mini-1SS – Technical Specifications) document that describes the algorithm appears to not be publicly available.

More information:

- https://vat-one-stop-shop.ec.europa.eu/one-stop-shop/register-oss_en

- https://europa.eu/youreurope/business/taxation/vat/vat-digital-services-moss-scheme/index_en.htm

- https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32002L0038

    >>> validate('EU 372022452')
    'EU372022452'

stdnum.eu.oss.ISO_3166_1_MEMBER_STATES = ('040', '056', '100', '191', '196', '203', '208', '233', '246', '250', '276', '300', '348', '372', '380', '428', '440', '442', '470', '528', '616', '620', '642', '703', '705', '724', '752', '900')

  The collection of member state codes (for MSI) that may make up a VAT number.

stdnum.eu.oss.compact(number: str) → str

  Compact European VAT Number

stdnum.eu.oss.is_valid(number: str) → bool

  Check if the number is a valid VAT number. This performs the country-specific check for the number.

stdnum.eu.oss.validate(number: str) → str

  Validate European VAT Number