Skip to main content

Django Verify VAT number by ARES/VIES

Project description

Django Verify VAT registration number

The Django Verify VAT registration number module is an extension of the Verify VAT registration number project for the Django framework. It is used for verification VAT registration number in EU and VAT identification number in Czechia. This module is used in the DjangoCMS Verify VAT registration number module.

VIES

VIES VAT number validation for European union. It is an electronic mean of validating VAT-identification numbers of economic operators registered in the European Union for cross border transactions on goods or services. Supported countries see README in project Verify VAT - VIES.

ARES

ARES - Access to Registers of Economic Subjects / Entities is an information system allowing a retrieval of information on economic entities registered in the Czech Republic. This system intermediates a display of data from particular registers of the state administration (called source registers) in which the data concerned is kept.

Installation

This library is available on PyPI, it's recommended to install it using pip:

pip install django-verify-vat-number

Append into Django apps and urls

Insert into site settings.py:

INSTALLED_APPS = [
    ...
    'django_verify_vat_number',
]

Insert into site urls.py:

from django.urls import path, include

urlpatterns = [
    ....
    path('verify-vat/', include('django_verify_vat_number.urls')),
]

Usage

Follow instructions Writing your first Django app to launch the site. Then you can make verification:

curl http://127.0.0.1:8000/verify-vat/verify-vat-id-number/?number=67985726

{"status": "OK", "message": null, "company": {
    "company_name": "CZ.NIC, z.s.p.o.",
    "address": "Mile\u0161ovsk\u00e1 1136/5\n13000 Praha 3",
    "street_and_num": "Mile\u0161ovsk\u00e1 1136/5",
    "city": "Praha 3",
    "postal_code": "13000",
    "district": "Praha 3 - Vinohrady",
    "country_code": "CZ"
}, "country": "Czechia"}

curl http://127.0.0.1:8000/verify-vat/verify-vat-reg-number/?number=CZ67985726

{"status": "OK", "message": null, "company": {
    "company_name": "CZ.NIC, z.s.p.o.",
    "address": "Mile\u0161ovsk\u00e1 1136/5\nPRAHA 3 - VINOHRADY\n130 00  PRAHA 3",
    "street_and_num": "Mile\u0161ovsk\u00e1 1136/5",
    "city": "PRAHA 3",
    "postal_code": "130 00",
    "district": "PRAHA 3 - VINOHRADY",
    "country_code": "CZ"
}, "country": "Czechia"}

Country name in current site language

The country name is translated into the current site language.

Define languages in settings.py:

LANGUAGES = [
    ('en', 'English'),
    ('cs', 'Česky'),
    ('fr', 'Francais'),
]

MIDDLEWARE = [
    ...
    'django.middleware.locale.LocaleMiddleware',
]

Enable language prefix in url.py:

urlpatterns += i18n_patterns(
    path('verify-vat/', include('django_verify_vat_number.urls')),
)

Get translated country name:

curl http://127.0.0.1:8000/cs/verify-vat/verify-vat-id-number/?number=67985726

{"status": "OK", "message": null, "company": {"company_name": ... "country_code": "CZ"},
 "country": "\u010cesko"}

curl http://127.0.0.1:8000/fr/verify-vat/verify-vat-id-number/?number=67985726
{"status": "OK", "message": null, "company": {"company_name": ... "country_code": "CZ"},
 "country": "Tch\u00e9quie"}

Cache

The data downloaded from the server is cached. At the next query, they are no longer downloaded from the verification service. The default cache value is one day. The duration of the data in the cache can be reset in the settings by the constant VERIFY_VAT_KEEP_IN_CACHE.

Logging

Temporary unavailability of the resource is logged in the INFO level. An unexpected error is logged in the ERROR level, including the source response.

Example of a temporarily unavailable service:

2022-06-16 14:49:33,806 INFO     ares:get_xml_content:27 https://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi?ico=67985726
2022-06-16 14:49:33,815 INFO     fetchers:fetch_from_ares:47 Service is temporarily unavailable. Please, try later.

Example of a unexpected service failure:

022-06-16 14:55:10,039 INFO     ares:get_xml_content:27 https://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi?ico=67985726
2022-06-16 14:55:10,042 ERROR    fetchers:fetch_from_ares:49 not well-formed (invalid token): line 1, column 11
2022-06-16 14:55:10,042 ERROR    fetchers:fetch_from_ares:50 <are:Error><dtt:Error_kod> ...

If you want to debug complete communication, you can set it in loggers django_verify_vat_number.fetchers and verify_vat_number.ares, verify_vat_number.vies.

In settings.py:

LOGGING = {
    ...
    'loggers': {
        'verify_vat_number.ares': {'handlers': ['console'], 'level': 'DEBUG'},
        'verify_vat_number.vies': {'handlers': ['console'], 'level': 'DEBUG'},
        'django_verify_vat_number.fetchers': {'handlers': ['console'], 'level': 'DEBUG'},
    }
}
2022-06-16 15:03:04,078 INFO     ares:get_xml_content:27 https://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi?ico=67985726
2022-06-16 15:03:04,078 INFO     ares:get_xml_content:27 https://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi?ico=67985726
2022-06-16 15:03:05,401 DEBUG    ares:get_xml_content:38 <?xml version="1.0" encoding="UTF-8"?><are:Ares_odpovedi
    ...
<are:Odpoved>
<are:Pocet_zaznamu>1</are:Pocet_zaznamu>
    ...
</are:Odpoved>
</are:Ares_odpovedi>
2022-06-16 15:10:39,020 INFO     fetchers:fetch_from_ares:30 Cached data: VerifiedCompanyResponse(status=<StatusCode.OK: 'OK'>, message=None, company=VerifiedCompany(company_name='CZ.NIC, z.s.p.o.', address='Milešovská 1136/5\n13000 Praha 3', street_and_num='Milešovská 1136/5', city='Praha 3', postal_code='13000', district='Praha 3 - Vinohrady', country_code='CZ'), country='Česko')

License

GPLv3+

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_verify_vat_number-2.0.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

django_verify_vat_number-2.0.0-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file django_verify_vat_number-2.0.0.tar.gz.

File metadata

File hashes

Hashes for django_verify_vat_number-2.0.0.tar.gz
Algorithm Hash digest
SHA256 657b6ff9307ad8ed6529ca7c9b3840c4dc132d8e1f28e24a313416651d238c25
MD5 27996f5a23716f6fd10a625ea7d74aa7
BLAKE2b-256 141fef83532be8933082f4234f3eda907b51d0c354526400e2e7c9126c958b86

See more details on using hashes here.

File details

Details for the file django_verify_vat_number-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_verify_vat_number-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d25c68eb0e0956c164eba0c92dea63d921b2aa69632e0145751dc9fdb697ced0
MD5 82004d9dfcc43625c7a947c2d3587f3d
BLAKE2b-256 f9412c683547d9ecd4a24e690aad95f19cfe0358a92b790d864caff5609cb478

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page