# Changes in python-stdnum

## changes from 1.12 to 1.13

- Add modules for the following number formats:
  - ESR, ISR, QR-reference (reference number on Swiss payment slips) (thanks Kurt Keller)
  - ID number (South African Identity Document number)
- Add format function for ISO 11649 numbers (thanks Kurt Keller)
- Add support for Python 3.8 (thanks Sergi Almacellas Abellana)
- Clarify that the Italian Codice Fiscale can also be the IVA for companies (thanks Nicholas Fiorentini)
- Support the new Dutch btw-identificatienummer (thanks Cas Vissers, Jeroen van Heiningen, Jerome Hanke, Nicolas Martinelli, Ronald Portier and Tim Muller)
- Extend test for Argentinian CUIT to check first two digits
- Add more country codes to ISIN (thanks nocluebutalotofit, Anwar Baroudi and alexbond73)

## changes from 1.11 to 1.12

- Add modules for the following number formats:
  - NRT (Número de Registre Tributari, Andorra tax number) (thanks Leandro Regueiro)
  - CPF (Cédula de Persona Física, Costa Rica physical person ID number) (thanks Leandro Regueiro)
  - CPJ (Cédula de Persona Jurídica, Costa Rica tax number) (thanks Leandro Regueiro)
  - CR (Cédula de Residencia, Costa Rica foreigners ID number) (thanks Leandro Regueiro)
  - NIT (Número de Identificación Tributaria, Guatemala tax number) (thanks Leandro Regueiro)
  - Identity Number (Mispar Zehut, מספר זהות, Israeli identity number)
  - CN (法人番号, hōjin bangō, Japanese Corporate Number) (thanks Alan Hettinger)
  - RRN (South Korean resident registration number) (thanks Dimitri Papadopoulos)
  - IRD number (New Zealand Inland Revenue Department (Te Tari Tāke) number) (thanks Leandro Regueiro)
  - CUI (Cédula Única de Identidad, Peruvian identity number)
  - RUC (Registro Único de Contribuyentes, Peruvian company tax number)
  - RUC number (Registro Único de Contribuyentes, Paraguay tax number) (thanks Leandro Regueiro)
  - VKN (Vergi Kimlik Numarası, Turkish tax identification number) (thanks Leandro Regueiro)
  - RUT (Registro Único Tributario, Uruguay tax number) (Leandro Regueiro)
  - RIF (Registro de Identificación Fiscal, Venezuelan VAT number) (thanks Kevin Kaiser)
  - TIN (South African Tax Identification Number) (thanks Leandro Regueiro)
- Support GTIN (EAN-14) validation as part of EAN (thanks Sergi Almacellas Abellana)
- Support Dominican Republic e-CF within NCF (thanks Jeffry Jesus De La Rosa)
- Fix Dominican Republic DGII lookups of NCF (thanks Jeffry Jesus De La Rosa)
- Fix German Handelsregisternummer to not confuse Hamburg with Homburg and to accept shorter numbers (thanks Kevin Kaiser)
- Support lookups of German Handelsregisternummer in OffeneRegister.de web service
- Handle - and + sign correctly in Swedish Personnummer (thanks Amin Solhizadeh)
- Provide various personalid and vat aliases for existing numbers (thanks Andreas Häber)
- Improve descriptions of Spanish codes (thanks Gerard Dalmau)
- Fix handling and normalisation of various Unicode digit representations (thanks Helge Munk Jacobsen)

## changes from 1.10 to 1.11

- Add modules for the following number formats:
  - DNI (Documento Nacional de Identidad, Argentinian national identity nr.)
  - VNR, SVNR, VSNR (Versicherungsnummer, Austrian social security number)
  - NI (Número de identidad, Cuban identity card numbers)
  - AMKA (Αριθμός Μητρώου Κοινωνικής Ασφάλισης, Greek social security number)
  - Asmens kodas (Lithuanian, personal numbers)
  - MAC address (Media Access Control address)
  - IDNO (Moldavian company identification number)
  - CURP (Clave Única de Registro de Población, Mexican personal ID)
  - Fødselsnummer (Norwegian birth number, the national identity number) (thanks Ilya Vihtinsky)
  - New Zealand bank account number
  - Personnummer (Swedish personal identity number) (thanks Ilya Vihtinsky)
- Code style improvements
- Change Dominican Republic DGII check URL to HTTPS (thanks Gustavo Valverde)
- Support Ecuadorian Cedula and RUC of foreigners (thanks Christopher Ormaza)
- Add format() function for Argentinian CUIT number (thanks Mario Puntin)
- Support passing formatted numbers to all get_birth_date() and similar functions
- Handle Dominican Republic DGII lookup returning multiple entities (thanks Andrés R)

## changes from 1.9 to 1.10

- Add modules for the following number formats:
  - Bitcoin address
  - ISO 11649 (Structured Creditor Reference)
  - ID number (Mauritian national identifier)
  - Norwegian IBAN (International Bank Account Number)
  - Konto nr. (Norwegian bank account number)
- Fix a bug in handling of Mexican tax numbers
- Improve Spanish CIF and NIF validation
- Update Dominican Republic NCF numbers online check
- Improve Unicode conversion for bytestrings
- Improvements to some corner cases in IBAN validation
- Documentation improvements
- Add stdnum.ru.vat as an alias for stdnum.ru.inn

## changes from 1.8.1 to 1.9

- Add modules for the following number formats:
  - Postleitzahl (Austrian postal code)
  - Abgabenkontonummer (Austrian tax identification number)
  - Belgian IBAN (International Bank Account Number)
  - Handelsregisternummer (German company register number)
  - St.-Nr. (Steuernummer, German tax number)
  - FIGI (Financial Instrument Global Identifier)
  - Montenegro IBAN (International Bank Account Number)
- Have documentation rebuilt reproducibly (thanks Chris Lamb)
- Allow configuring the SOAP request timeout
- Support spaces in ISO 9362 (SWIFT) BIC codes
- Add check_dgii() to stdnum.do.cedula module
- Add validation for “individual” part of hetu (thanks Esa Halsti)
- Support new style of Dominican Republic NCF numbers
- Fix issue when using PySimpleSOAP for DGII lookups
- Fix an issue in splitting certain IMSI values
- Support building a universal wheel
- Documentation and code style improvements

## changes from 1.8 to 1.8.1

- Fix a packaging issue in the long description

## changes from 1.7 to 1.8

- Add modules for the following number formats:
  - NCF (Números de Comprobante Fiscal, Dominican Republic receipt number)
  - Euro banknote serial numbers
  - CAS RN (Chemical Abstracts Service Registry Number)
  - Aadhaar (Indian digital resident personal identity number) (thanks Srikanth Lakshmanan)
  - PAN (Permanent Account Number, Indian income tax identifier) (thanks Srikanth Lakshmanan)
- Add functions for using the Dominican Republic DGII web service to validate and search for RNC and NCF numbers
- Add/update whitelists for Dominican Republic RNC and Cedula
- Support zeep as preferred SOAP library (suds and pysimplesoap are tried as fallback)
- Rename stdnum.iso9362 to stdnum.bic (iso9362 is deprecated but still available for compatibility)
- Add tests for web services (not normally run to avoid unnecessary load)
- Fixes and improvement to the sample online validation service

Development of the NCF format validation and DGII web service validation was funded by iterativo | http://iterativo.do

## changes from 1.6 to 1.7

- Add modules for the following number formats:
  - BN (Canadian Business Number)
  - SIN (Canadian Social Insurance Number)
  - IdNr (Steuerliche Identifikationsnummer, German personal tax number) (thanks Mohammed Salman of Holvi)
  - Registrikood (Estonian organisation registration code) (thanks Mohammed Salman of Holvi)
  - Veronumero (Finnish individual tax number) (thanks Mohammed Salman of Holvi)
  - UPN (English Unique Pupil Number)
- Fix a bug in the Czech DIČ check digit calculation
- Fix conversion of 9 digit ISBN to ISBN13
- Fix a bug in the Damm is_valid() function
- More validation of 13-digit ISBN values
- More validation of ISMN values
- Various code and test improvements (100% branch coverage now)
- Documentation improvements

## changes from 1.5 to 1.6

- Add modules for the following number formats:
  - CBU (Clave Bancaria Uniforme, Argentine bank account number) (thanks Luciano Rossi)
  - EIC (European Energy Identification Code)
  - NACE (classification for businesses in the European Union)
  - LEI (Legal Entity Identifier)
  - n° TVA (taxe sur la valeur ajoutée, Monacan VAT number)
  - PIB (Poreski Identifikacioni Broj, Serbian tax identification number)
- Add online check example that finds valid formats for a given number
- Fix support for Ñ in Spanish Referencia Catastral
- Updates to U.S. Employer Identification Number (thanks Greg Kuwaye)
- Various minor improvements

## changes from 1.4 to 1.5

- Add modules for the following number formats:
  - ABN (Australian Business Number)
  - ACN (Australian Company Number)
  - TFN (Australian Tax File Number)
  - CCC (Código Cuenta Corriente, Spanish Bank Account Code)
  - CUPS (Código Unificado de Punto de Suministro, Supply Point Unified Code)
  - Spanish IBAN (International Bank Account Number)
  - Referencia Catastral (Spanish real estate property id)
- The IBAN module now support validating the country-specific part
- The Belgian VAT number is now also referenced as businessid
- Add a Tox configuration file

## changes from 1.3 to 1.4

- Add modules for the following number formats:
  - NIF (Numéro d’Immatriculation Fiscale, French tax identification number) provided by Dimitri Papadopoulos
  - NIR (French personal identification number) provided by Dimitri Papadopoulos
  - SIRET (a French company establishment identification number) provided by Yoann Aubineau
  - NHS (United Kingdom National Health Service patient identifier)
  - T.C. Kimlik No. (Turkish personal identification number)
- Add an implementation of the Damm algorithm
- Ensure data files are properly closed
- Documentation improvements
- Extend test suite
- A number of minor bug fixes and improvements

## changes from 1.2 to 1.3

- Fix ISO 6346 check digit calculation (thanks Ronald Paloschi)
- Fix problem with check_vies_approx() (thanks Lionel Elie Mamane)
- Fix problem with SOAP client when using suds
- Include documentation that was previously on the Trac wiki

## changes from 1.1 to 1.2

- Add modules for the following number formats:
  - Austrian Company Register Numbers
  - CNPJ (Cadastro Nacional da Pessoa Jurídica, Brazilian company identifier)
  - UID (Unternehmens-Identifikationsnummer, Swiss business identifier)
  - VAT, MWST, TVA, IVA, TPV (Mehrwertsteuernummer, the Swiss VAT number)
  - CUSIP number (financial security identification number)
  - Wertpapierkennnummer (German securities identification code)
  - Isikukood (Estonian Personcal ID number)
  - Finnish Association Identifier
  - Y-tunnus (Finnish business identifier)
  - SEDOL number (Stock Exchange Daily Official List number)
  - IMO number (International Maritime Organization number)
  - ISIN (International Securities Identification Number)
  - RFC (Registro Federal de Contribuyentes, Mexican tax number)
  - PESEL (Polish national identification number)
  - REGON (Rejestr Gospodarki Narodowej, Polish register of economic units)
  - ИНН (Идентификационный номер налогоплательщика, Russian tax identifier)
- Add an alternate VIES check (check_vies_approx()) that includes a proof (certificate) that the check was performed
- Fall back to pysimplesoap if suds is unavailable
- Test and code quality improvements

## changes from 1.0 to 1.1

- Add number formats based on the implementation in the vatnumber module:
  - NIPT (Numri i Identifikimit për Personin e Tatueshëm, Albanian VAT number)
  - CUIT (Código Único de Identificación Tributaria, Argentinian tax number)
  - RUT (Rol Único Tributario, Chilean national tax number)
  - NIT (Número De Identificación Tributaria, Colombian identity code)
  - COE (Codice operatore economico, San Marino national tax number)
- Add modules for the following number formats:
  - Cedula (Dominican Republic national identification number)
  - RNC (Registro Nacional del Contribuyente, Dominican Republic tax number)
  - Kennitala (Icelandic personal and organisation identity code, provided by Tuomas Toivonen)
  - VSK number (Virðisaukaskattsnúmer, Icelandic VAT number, provided by Tuomas Toivonen)
  - ISO 9362 (Business identifier codes, provided by Tony Bajan)
  - MVA (Merverdiavgift, Norwegian VAT number, provided by Tuomas Toivonen)
  - Orgnr (Organisasjonsnummer, Norwegian organisation number, provided by Tuomas Toivonen)
  - Orgnr (Organisationsnummer, Swedish company number, provided by Tomas Thor Jonsson)
- Add Croatia to list of EU VAT numbers
- Update getcnloc script
- Various small fixes and additional tests for existing modules

## changes from 0.9 to 1.0

- Add modules for the following number formats:
  - Swiss social security number (“Sozialversicherungsnummer”)
  - RIC No. (Chinese Resident Identity Card Number)
  - CI (Cédula de identidad, Ecuadorian personal identity code)
  - RUC (Registro Único de Contribuyentes, Ecuadorian company tax number)
  - SEPA Identifier of the Creditor (AT-02)
  - ISO 6346 (International standard for container identification)
  - Codice Fiscale (Italian tax code for individuals)
  - RTN (Routing transport number)
- Add support for 2013 extension of Irish PPS Numbers
- Update getisbn script
- Update getmybp URLs for Malaysian code lists
- Various other minor improvements

## changes from 0.8.1 to 0.9

- Add modules for the following number formats:
  - Brin number (Dutch number for schools)
  - Postcode (Dutch postal code)
  - ATIN (U.S. Adoption Taxpayer Identification Number)
  - EIN (U.S. Employer Identification Number)
  - ITIN (U.S. Individual Taxpayer Identification Number)
  - PTIN (U.S. Preparer Tax Identification Number)
  - TIN (U.S. Taxpayer Identification Number)
- Try to replace Unicode characters with similar-looking ASCII characters
- Update getimsi script (thanks eneq123)
- Update getiban script
- Add proxy support to the stdnum.eu.vat.check_vies() function (thanks Cédric Krier)
- Support newer United Kingdom VAT numbers

## changes from 0.8 to 0.8.1

- Include some files that were missing from the source tarball

## changes from 0.7 to 0.8

- Add modules for the following number formats:
  - NRIC No. (Malaysian National Registration Identity Card Number)
- All modules now provide a validate() function that throws an exception that contains more information on the failure reason
- Documentation improvements
- Remove add_check_digit parameter from GRid’s format() function
- Improvements to the tests
- Re-add Python3 support (now tested with Python 2.7, 3.2 and 3.3)

## changes from 0.6 to 0.7

- Add modules for the following number formats:
  - Onderwijsnummer (Dutch school number)
  - BTW-nummer (Omzetbelastingnummer, the Dutch VAT number)
  - HETU (Finnish personal identity code) as provided by Jussi Judin (#5)
  - RČ (Rodné číslo, the Czech and Slovak birth numbers)
  - SIREN (a French company identification number)
  - FPA, ΦΠΑ (Foros Prostithemenis Aksias, the Greek VAT number)
  - Ust ID Nr. (Umsatzsteur Identifikationnummer, the German VAT number)
  - BTW, TVA, NWSt (Belgian VAT number)
  - DNI (Documento nacional de identidad, Spanish personal identity codes)
  - NIE (Número de Identificación de Extranjeros, Spanish foreigner number)
  - CIF (Certificado de Identificación Fiscal, Spanish company tax number)
  - NIF (Número de Identificación Fiscal, Spanish VAT number)
  - PVN (Pievienotās vērtības nodokļa, Latvian VAT number)
  - CVR (Momsregistreringsnummer, Danish VAT number)
  - TVA (taxe sur la valeur ajoutée, Luxembourgian VAT number)
  - CNP (Cod Numeric Personal, Romanian Numerical Personal Code)
  - CF (Cod de înregistrare în scopuri de TVA, Romanian VAT number)
  - Partita IVA (Italian VAT number)
  - Αριθμός Εγγραφής Φ.Π.Α. (Cypriot VAT number)
  - UID (Umsatzsteuer-Identifikationsnummer, Austrian VAT number)
  - NIF (Número de identificação fiscal, Portuguese VAT number)
  - IČ DPH (IČ pre daň z pridanej hodnoty, Slovak VAT number)
  - ALV nro (Arvonlisäveronumero, Finnish VAT number)
  - DIČ (Daňové identifikační číslo, Czech VAT number)
  - ANUM (Közösségi adószám, Hungarian VAT number)
  - VAT (Irish VAT number)
  - KMKR (Käibemaksukohuslase, Estonian VAT number)
  - PVM (Pridėtinės vertės mokestis mokėtojo kodas, Lithuanian VAT number)
  - n° TVA (taxe sur la valeur ajoutée, French VAT number)
  - VAT (Maltese VAT number)
  - NIP (Numer Identyfikacji Podatkowej, Polish VAT number)
  - ID za DDV (Davčna številka, Slovenian VAT number)
  - VAT (Moms, Mervärdesskatt, Swedish VAT number)
  - VAT (United Kingdom (and Isle of Man) VAT registration number)
  - EGN (ЕГН, Единен граждански номер, Bulgarian personal identity codes)
  - PNF (ЛНЧ, Личен номер на чужденец, Bulgarian number of a foreigner)
  - VAT (Идентификационен номер по ДДС, Bulgarian VAT number)
  - VAT (European Union VAT number)
  - OIB (Osobni identifikacijski broj, Croatian identification number)
  - PPS No (Personal Public Service Number, Irish personal number)
  - CPR (personnummer, the Danish citizen number)
- Additional tests for robustness and use introspection to test all modules
- Some code refactoring with the introduction of an internal utility module
- Improvements to the docstring documentation
- Generate API documentation using Sphinx

## changes from 0.5 to 0.6

- Fix a problem with handling an ISBN13 with a valid check digit but with an unknown bookland prefix
- Add an IMSI (International Mobile Subscriber Identity) module
- Implement a conversion function from ISBN13 to ISBN10
- Implement an ismn.ismn_type() function
- Implement an imei.split() function that splits the number into a TAC, serial number and checksum or software version
- Source code layout changes to better follow PEP8

## changes from 0.4 to 0.5

- Add modules for the following number formats:
  - EAN (International Article Number)
- Refactoring to use the EAN check digit code for ISBN and ISMN checks
- Implement a conversion function from ISSN to EAN
- Support Python3 with the same codebase
- Python 2.5 compatibility improvement

## changes from 0.3 to 0.4

- Add modules for the following number formats:
  - CPF (Cadastro de Pessoas Físicas, the Brazilian national identification number)
  - IBAN (International Bank Account Number)
  - ISIL (International Standard Identifier for Libraries and Related Organizations)
  - SSN (U.S. Social Security Number)
- Implement an internal module to store and handle hierarchically organised data structures efficiently
- Regional-specific numbers are now in ISO 3166 packages (the BSN module is now in stdnum.nl.bsn)
- ISBN module functions now have a convert flag to convert to ISBN-13 on the fly

## changes from 0.2 to 0.3

- Add modules for the following number formats:
  - ISMN (International Standard Music Number)
  - ISAN (International Standard Audiovisual Number)
  - IMEI (International Mobile Equipment Identity)
  - MEID (Mobile Equipment Identifier)
  - GRid (Global Release Identifier)
- Add modules for handling the following check digit algorithms:
  - the Verhoeff algorithm
  - the Luhn and Luhn mod N algorithms
  - some algorithms described in ISO/IEC 7064: Mod 11, 2, Mod 37, 2, Mod 97, 10, Mod 11, 10 and Mod 37, 36
- Added more unit tests

## changes from 0.1 to 0.2

- Rename validate() function to is_valid() for all modules
- Handle wrong types passed to is_valid() more gracefully
- Add more tests and fix some minor bugs