nif.vies
VIES cross-check — NIF registered in EU VAT exchange
Header NIF is verified against the EU VIES service and the registered name is compared with the SAF-T CompanyName.
What VIES is
VIES (VAT Information Exchange System) is the EU's official VAT-registration look-up service, operated by the European Commission. Each member state's tax authority feeds the registered VAT numbers into VIES, and any party — including SAFTCheck — can call its public REST endpoint to confirm whether a given country + VAT number is currently registered.
What SAFTCheck checks
For every validation we cross-check one NIF against VIES: the file's Header.TaxRegistrationNumber (your own company NIF, prefixed with country code PT). Customer and supplier NIFs are not VIES-checked — there can be hundreds of them per file, VIES is rate-limited and slow, and the most valuable signal is whether the file's owning entity is who it claims to be.
What you'll see
| Outcome | SAFTCheck output |
|---|---|
| NIF is registered, name matches | info: "NIF cross-checked against VIES — registered for VAT" with the registered legal name shown |
| NIF is registered, name does not match | warning: "CompanyName does not match VIES" with both the SAF-T value and the VIES value visible |
| NIF is Mod-11-valid but not in VIES | info: "NIF is Mod-11-valid but not VAT-registered in VIES" — legitimate for sole-traders and other non-VAT entities |
| VIES unreachable / timeout | silent — no finding (we never block validation on a third-party outage) |
| NIF fails Mod-11 | silent for VIES — the Mod-11 check already flagged it |
NIF is the "Consumidor final" sentinel 999999990 | silent — by design, not a real registration |
How the name comparison works
VIES occasionally returns a slightly different legal name than the ERP exports — extra whitespace, a trailing legal-form abbreviation (LDA, SA, Unipessoal), different casing. We normalise both sides to lowercase alphanumerics and accept either side being a prefix of the other before flagging a mismatch. This avoids noisy warnings on cosmetic differences while still catching genuine "wrong NIF on the wrong company" mistakes.
Performance and reliability
- Timeout: 3 seconds per VIES call. If the EU service is slow, we move on without blocking the rest of validation.
- Caching: successful VIES results are cached for 24 hours per NIF. Re-validating the same file (or another file with the same Header NIF) does not re-hit the EU endpoint.
- Failure mode: when VIES is down or returns an error, we cache nothing and the next validation retries. Validation never fails because of a VIES outage.
What VIES does not tell you
- It does not certify that the NIF is valid for tax-compliance purposes. AT may have additional restrictions VIES does not surface.
- It does not check the customer or supplier NIFs in the file (intentional — see scope above).
- It does not detect intra-day registration changes; the cache is up to 24h old.
Related
- NIF Mod-11 — the offline check that runs before VIES.
- Inline editor — fix the Header NIF in place if VIES says the wrong one is in the file.