← User guide

CZ/SK VIES — direct check and proof of consultation

Checks EU VAT numbers directly against the European Commission's VIES service, without Odoo IAP, and keeps every check with its consultation number as evidence.

Version19.0.2.1.0
EditionCommunity and Enterprise
LicenceAGPL-3
Requiresbase_vat, l10n_cssk_core
Extended byl10n_cssk_ec_summary_vies, l10n_cz_datadance, l10n_sk_datadance

What it is for

An intra-Community supply of goods is exempt from VAT only if the customer is registered for VAT in another member state and has given you that VAT number. Checking the number in VIES, the European Commission's VAT Information Exchange System, is how you show you did.

Odoo checks VAT numbers through its own IAP service and keeps only a yes/no flag. This module:

The exemption conditions that make the customer's VAT number matter:

Neither act prescribes VIES or the consultation number as the form of proof; it is the evidence tax authorities customarily ask for when a customer's number later turns out to have been invalid.

Setting it up

  1. Your company must have its own Tax ID (IČ DPH / DIČ) filled in. VIES issues a consultation number only for a qualified check, which needs the requester's VAT number.
  2. Accounting → Configuration → Settings, block Taxes, setting Verify VAT Numbers: tick Use direct EU VIES (no IAP). This is per company.

With the box ticked, Odoo's own VIES check (run when a VAT number is entered, if Verify VAT Numbers is on) goes to the European Commission instead of IAP, and the daily refresh runs for the company. The Check now button below works whether or not the box is ticked.

Checking a contact

On the contact form, below the Tax ID, the VIES row shows:

The VIES tab (shown when the contact has a VAT number):

Group Fields
Consultation VIES Checked On, VIES Consultation No., VIES Request Date (the date VIES gives the consultation), VIES Last Fault (only after a check VIES did not answer)
As registered in VIES VIES Registered Name, VIES Registered Address, VIES Name Match (whether the name VIES holds matches the contact's name)

These fields show the current company's latest answered check. Below them is the full list of checks, by every company you have access to, with the date, result, consultation number and user. Invalid answers are shown in red, faults greyed out.

Nobody can edit the log. Only administrators can delete entries.

Daily refresh

The scheduled action VIES: Refresh direct checks (CZ/SK) runs once a day. For each company with Use direct EU VIES ticked it checks top-level contacts whose VAT number starts with an EU prefix (including EL for Greece and XI for Northern Ireland) other than the company's own country, which are shared or belong to that company, and which that company has not checked in the last 7 days — at most 200 per company per run, with a short pause between requests because VIES limits the request rate. Each result is logged and updates the contact's VIES verdict.

When VIES does not answer

VIES often answers that a national system is unavailable or busy. Such an answer (MS_UNAVAILABLE, MS_MAX_CONCURRENT_REQ, GLOBAL_MAX_CONCURRENT_REQ, SERVICE_UNAVAILABLE, TIMEOUT, BUSY) or no answer at all is logged as No answer. It never marks the number invalid and never replaces the last real proof; the daily refresh tries again after 7 days. Any other negative answer counts as invalid.

Limitations