Pythonic VAT validation library 🌍💳✅
- Offline VAT code validation using country specific regular expressions and checksum algorithms;
- Online validation for European Union VAT codes using VIES web service;
- VAT code sanitization;
- Fully annotated with type hints, for a better IDE and
mypy
development experience; - Tested and validated against 1697 different VAT codes.
vat-validator
is distributed as standard pip library, and can be installed
by running:
pip install vat-validator
To install the latest development version directly from git:
pip install git+git://github.com/ajcerejeira/vat-validator.git
>>> from vat_validator import inspect_vat, sanitize_vat, vat_is_valid
>>> vat_is_valid('PT', 'PT 502 011 378')
True
>>> sanitize_vat('PT', 'PT 502 011 378')
'502011378'
To validate a VAT number with VIES
web service:
>>> from vat_validator.vies import check_vat
>>> check_vat('PT', '502 011 378')
CheckVATResult(country_code='PT', vat='502011378', request_date=datetime.date(2019, 6, 8), valid=True, name='UNIVERSIDADE DO MINHO', address='LG DO PACO\nBRAGA\n4700-320 BRAGA')
These are the goals before the 1.0.0 release:
- ❌ Have a comprehensive test suite with valid and invalid VAT codes for each country.
- ❌ Compare the validity of each VAT code used in tests with
TIN
web service. - ✅ Remove
zeep
dependency, by using standard libraryurllib
to make SOAP requests to VIES web service, making this a module without any dependencies. - ❌ Add support for
async
requests to VIES web service.
Pull requests are welcome! Please check the :doc:`CONTRIBUTING <contributing>` file for contribution guidelines.
This software is distributed under MIT license. See the :doc:`LICENSE <license>` file for details.