Skip links

How to Verify VAT Numbers: Formats, VIES Limitations, and Country‑by‑Country Compliance Guide

How to Verify VAT Numbers: Formats, VIES Limitations & Country-by-Country Compliance Guide | MonitorPay

1 The Problem Isn't Knowledge — It's Reliability

Every finance team knows they should verify VAT numbers. Most try. The issue is that the system they depend on — the EU's VIES portal — is unreliable, limited, and increasingly insufficient for what regulators now expect.

VIES goes down multiple times per month. Not for minutes — for hours. During filing periods and year-end closes, country databases become intermittently unavailable. Over a bad three-day stretch in January 2023, VIES couldn't validate Belgian VAT numbers roughly 32% of the time. Germany was equally bad.

10% of VIES API requests take over one second — and some take over 50 seconds. If you're validating during checkout, onboarding, or invoice processing, that's a workflow-breaking delay.

VIES doesn't contain all valid VAT numbers. Several EU countries only activate numbers for VIES after a separate cross-border registration. A business can be fully VAT-registered domestically in Germany or Spain but invisible to VIES. A "not found" doesn't always mean fraud — it might mean incomplete registration.

2 What Verification Actually Means

Validation checks structure: Is DE123456789 the right format? Does it have 9 digits after the DE prefix? This catches typos.

Verification checks reality: Is this number actively registered with the tax authority right now? Does the entity name match the supplier on your invoice? This catches fraud.

Full verification means confirming three things in sequence:

  1. Format correctness — matches the country's structure rules
  2. Active registration — live in the tax authority's registry
  3. Entity match — registered name and address match your supplier

If your process only does step 1, you're validating — not verifying. Validation alone doesn't protect you from anything that matters.

💡
Validation catches typos. Verification catches fraud.

MonitorPay's VAT Check performs all three steps in a single API call — format, live registry, and entity match.

3 Country-by-Country Traps That Break Your Process

VAT verification isn't one system. It's 27+ separate national databases with different rules, formats, and failure modes.

🇩🇪Germany — The VIES Black Hole

The MS_MAX_CONCURRENT_REQ error occurs in Germany in 95% of all cases of this error type across all EU member states. During filing periods, German VIES checks are essentially a lottery.

Fix → Query BZSt directly, bypass VIES
🇪🇸Spain — SII + Verifactu Layering

Spain already runs SII (near-real-time invoice reporting). Verifactu adds QR code and digital fingerprint requirements — January 2027 for corporates, July 2027 for sole traders. A "valid" number that isn't SII-activated will cause invoice rejection.

Fix → Verify both domestic NIF and SII activation status
🇮🇹Italy — E-Invoicing Pioneer, Registration Trap

Only FatturaPA XML invoices are legally valid — PDFs aren't recognized. Non-EU businesses trying to register for VIES now need a bank guarantee. They may appear valid domestically but won't clear VIES.

Fix → Query Agenzia delle Entrate directly for non-EU entities
🇫🇷France — The September 2026 Cliff

All B2B invoices must flow through certified PDPs or the PPF portal starting September 2026. Every invoice requires a verified TVA number. Unverified? The invoice won't enter the system.

Fix → Automated real-time VAT check at invoice creation
🇷🇴Romania — Variable-Length Chaos

Romanian VAT numbers can be 2 to 10 digits after RO. No fixed length. If your regex expects consistency, Romania will break it. Also now requires monthly SAF-T for foreign VAT-registered businesses.

Fix → Flexible format parsing + direct registry query
🇳🇱Netherlands — The 2020 Format Change

In 2020, the NL changed its VAT format for sole proprietors. Legacy ERP rules from before 2020 reject valid Dutch numbers. More common than you'd think in large enterprises.

Fix → Update ERP validation rules or use API that handles format changes

EU VAT Formats Reference

CountryCodeFormatExampleWatch Out For
GermanyDEDE + 9 digitsDE123456789VIES unreliable; query BZSt
FranceFRFR + 2 chars + 9 digitsFRXX123456789e-invoicing Sept 2026
ItalyITIT + 11 digitsIT12345678901FatturaPA only; bank guarantee
SpainESES + char + 7d + charESX1234567XSII + Verifactu 2027
NetherlandsNLNL + 9d + B + 2dNL123456789B01Format changed 2020
BelgiumBEBE + 10 digits (0 prefix)BE0123456789e-invoicing Jan 2026
PolandPLPL + 10 digitsPL1234567890KSeF 2026
RomaniaRORO + 2–10 digitsRO1234567890Variable length
AustriaATAT + U + 8 digitsATU12345678AI fraud detection
Czech Rep.CZCZ + 8–10 digitsCZ12345678Verify on date of supply
SwedenSESE + 12 digitsSE123456789012Peppol B2B Jan 2026
HungaryHUHU + 8 digitsHU12345678Instant mismatch detection
IrelandIEIE + 7d + 1-2 charsIE1234567XOld format circulates
GreeceELEL + 9 digitsEL123456789Code is EL, not GR
DenmarkDKDK + 8 digitsDK12345678
FinlandFIFI + 8 digitsFI12345678
PortugalPTPT + 9 digitsPT123456789
CroatiaHRHR + 11 digitsHR12345678901
BulgariaBGBG + 9–10 digitsBG123456789~10% VIES downtime
LuxembourgLULU + 8 digitsLU12345678

Non-EU Registries

CountryTax IDFormatRegistry
United KingdomVATGB + 9 or 12 digitsHMRC
SwitzerlandUID/MWSTCHE- + 9d + suffixFederal UID
NorwayMVA9 digits + MVABrønnøysund
IndiaGSTIN15 charsGST Portal
BrazilCNPJ14 digitsReceita Federal
AustraliaABN11 digitsABN Lookup
CanadaBN/GST9d + RT0001CRA
UAETRN15 digitsFederal Tax Auth
South AfricaVAT10 digitsSARS
⚠️
VIES won't help you here.

For UK, Swiss, and non-EU suppliers, VIES returns nothing. MonitorPay covers 150+ countries through one API endpoint.

4 The Real Cost: Worked Examples

Scenario 1Zero-rating a sale to an invalid VAT number

You sell €500,000 to a Dutch buyer and zero-rate the invoice. An audit reveals the number was deregistered before the transaction.

€105,000
€500K × 21% NL VAT rate. You owe this — not the buyer.
Scenario 2Same sale, Hungarian buyer

Hungary has the EU's highest VAT rate at 27%.

€135,000
Scenario 3Input VAT reclaim on carousel fraud

€200,000 invoice from a supplier with a valid-looking Italian VAT number. You reclaim €44,000 in input VAT. The supplier is a "missing trader." Reclaim clawed back.

€44,000+
Plus penalties. Austria's AI uncovered a €195M carousel scheme in 2024.
Scenario 4Payment to a dissolved entity

Supplier's VAT number was valid 18 months ago. Company dissolved. Nobody re-checked. You wire €75,000.

Potentially unrecoverable
No legal entity to pursue. No insurance claim without verification.
🔴
The pattern

The loss isn't caused by not knowing what a VAT number is. It's caused by not checking — or checking once and assuming it stays valid.

5 The 2026–2028 E-Invoicing Cliff

Everything above was about audit risk. What's coming next is operational: invoices will be rejected by systems, not flagged by auditors.

CountryMandateDateIf VAT Number Is Invalid
BelgiumB2B e-invoicing (Peppol)Jan 2026Invoice rejected by receiving system
FranceB2B e-invoicing (PPF/PDP)Sept 2026Invoice won't enter clearance system
GermanyMandatory sending (>€800K)Jan 2027Non-compliant; up to €5,000 fine
SpainVerifactu + B2BJan 2027Audit trail breaks; fines up to €50K/yr
PolandKSeF 2.02026Invoice rejected by clearance system
GermanyMandatory sending (all)Jan 2028Non-compliant; up to €5,000 fine
EU-wideViDA Digital ReportingJuly 2030Real-time rejection of cross-border invoices

The shift: from "verify to avoid audit risk" to "verify or your invoice doesn't exist." Invalid VAT number = invoice rejected at transmission. No workaround.

6 Why VIES Alone Can't Be Your Strategy

VIES LimitationImpactWhat You Need
Down multiple times/monthFails during filing periodsNational registry fallback
Germany ~32% unavailable (bad periods)Can't verify largest EU partnerDirect BZSt integration
10%+ requests >1s (up to 50s)Blocks checkout/onboardingSub-second SLA + caching
Not all valid numbers listedFalse negatives block suppliersNational registry cross-check
One number at a timeCan't batch-verify 5,000 suppliersBulk API endpoint
EU onlyNo UK/Swiss/global coverageMulti-registry API (150+ countries)
No monitoringDeregistrations go undetectedWebhooks on status changes
No audit trailScreenshots don't pass SOC 2Timestamped verification logs

MonitorPay VAT Check — 150+ Countries. Sub-Second. Reliable.

Replace VIES dependency with a single API that queries national registries directly.

  • Routes around VIES via BZSt, AEAT, SdI, HMRC, and 150+ registries
  • Format + active status + entity match in one call
  • Bulk endpoint: thousands per batch
  • Continuous monitoring with webhook alerts
  • Full audit trail — SOC 2 ready
  • First 100 checks free. From €0.10/check.

7 Where VAT Verification Fits in Your Stack

LayerCatchesWhenMonitorPay Product
1. IBAN ValidationMalformed bank accountsEvery paymentIBAN Validation
2. Payee MatchInvoice name ≠ account holderEvery paymentPayee Verification
3. Account OwnershipAccount → different entityOnboarding + high-valueOwnership Check
4. VAT VerificationDeregistered/fake/mismatched IDsOnboarding + pre-invoiceVAT Check
5. Continuous MonitoringPost-verification changesAlways-onMonitoring

Sample API Response

{
  "vatNumber": "DE123456789",
  "valid": true,
  "status": "ACTIVE",
  "countryCode": "DE",
  "companyName": "Mustermann GmbH",
  "companyAddress": "Musterstraße 1, 10115 Berlin",
  "requestDate": "2026-02-22T14:30:00Z",
  "source": "national_registry",
  "sourceNote": "BZSt direct (VIES bypassed)"
}

8 The Operational Playbook

At onboarding: Verify before the vendor master record is created. Compare the registered entity name against the contract. Flag mismatches. Reject inactive numbers. Store results with timestamps.

Before each VAT return: Re-verify every supplier on the upcoming return. The Czech Republic mandates verification on date of supply for input deductions. Estonia and Latvia recommend the same.

Continuously: The UN's 2025 VAT/GST guidance calls for continuous monitoring. MonitorPay's monitoring fires webhook alerts on deregistrations before your next payment run.

During M&A and ERP migrations: Inherit a vendor file? Run bulk validation before migrating it into your systems.

9 What to Require from Any Verification Tool

Direct registry access. If it just wraps VIES, you inherit VIES's problems. It should query BZSt, HMRC, Agenzia delle Entrate directly.

Global coverage. One API, not 30 integrations.

Bulk processing. 5,000+ checks per batch, not one at a time.

Continuous monitoring. Webhook alerts on status changes.

Structured output. JSON with status, entity, source, timestamp.

Audit trail. Every check. Every result. Big 4–ready.

10 The Deadline Is the Mandate

When Belgium, France, and Poland route invoices through government clearance platforms in 2026, an unverified VAT number creates invoice rejection — not audit risk. Your customer doesn't receive the invoice. You don't get paid. No manual workaround.

Build verification into your workflows now, or scramble to integrate while dealing with rejected invoices and confused customers.

Start With 100 Free Checks

150+ countries. Direct registry access. Bulk processing. Continuous monitoring. Full audit trail. One API. Integrate in under a day.

Frequently Asked Questions

Germany's MS_MAX_CONCURRENT_REQ error accounts for 95% of cases. During filing periods, availability drops significantly. The fix: query BZSt directly. MonitorPay does this automatically.
Zero-rate a €500K sale to an invalid number: you owe €105K (NL 21%) or €135K (HU 27%). EU prosecutors reported €13B+ in cross-border VAT fraud in 2024.
Germany, Spain, and Italy only activate numbers for VIES after specific cross-border registration. A "not found" doesn't always mean fraud. Direct registry queries catch these.
Belgium mandates B2B e-invoicing Jan 2026, France Sept 2026. Invalid VAT numbers cause system-level rejection — the invoice won't reach your customer.
VIES is EU-only. MonitorPay consolidates 150+ country registries — HMRC, UID, GST Portal, Receita Federal — through one API.
Validation = format check. Verification = is it actively registered + does the entity match? You need both.
REST API. SAP via ABAP or CPI/BTP. NetSuite via SuiteScript. Any ERP with HTTP/webhook support. Typical hook: vendor master data creation.
Minimum: onboarding + before each VAT return. Best practice: continuous monitoring with real-time webhook alerts.
MonitorPay routes around outages — BZSt for Germany, AEAT for Spain, Agenzia delle Entrate for Italy. You get results even when VIES doesn't respond.
Yes. Bulk endpoint — thousands via API or file upload. Essential for ERP migrations, annual audits, M&A vendor files, and pre-filing checks.