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 PACOnBRAGAn4700-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 CONTRIBUTING <contributing>
file for contribution guidelines.
This software is distributed under MIT license. See the LICENSE <license>
file for details.