EU VIES validation

Cross-border invoices, validated live.

Reverse-charge isn’t optional when you invoice a German agency or a Dutch B2B customer. Validate a counterparty’s EU VAT ID against the live VIES registry, surface the registered company name, and flag the entry as reverse-charge, with the proof stored for audit.

What you see in the app

Paste a VAT ID, watch it resolve.

Type or paste an EU VAT ID. Baslic hits VIES live and returns the registered company name, address, and a verified-at timestamp. If the ID is invalid, you see why, instantly.

Typical lookup: ~400 ms, measured from our own servers. Every check is stored as audit proof.

EU VIES · live lookup

Counterparty VAT ID

DE 129 273 398

Valid · cached 17.05.2026 10:42 UTC

Bauhaus AG · Mannheim, Germany

Carl-Benz-Str. 34, 68167 Mannheim · DE

Flagged on validation

Reverse-charge · ALV 0%

EU_REVERSE_CHARGE
Stored with invoice for audit replayVIES response · cached 24h
Three scenarios that come up daily

Every outcome, on the record.

Valid VIES + EU B2B service

  1. YInvoice a German agency for SaaS access
  2. BVIES live-check returns “valid: Bauhaus AG”
  3. BAdds 0% VAT line + reverse-charge note
  4. BStores VIES response timestamp for audit
EU_REVERSE_CHARGE

Invalid / non-existent VAT ID

  1. YCounterparty gives you a VAT ID
  2. BVIES live-check returns “not registered”
  3. BFlags invoice, cannot use reverse-charge
  4. BSuggests Finnish VAT (25.5%) or B2C handling

VIES temporarily offline

  1. YForward invoice to a recently-validated EU B2B
  2. BVIES API times out (it happens)
  3. BServes cached response (< 24h old) if available
  4. BElse queues for retry, receipt held, not lost

Yyou · BBaslic

Why our VIES handling is different

Four things most apps skip.

Live, not stale

Every VIES check is a fresh live call. A 6-month-old check doesn’t satisfy a Finnish auditor, and it doesn’t satisfy us.

Cached audit proof

VIES response, company name, address, and verified-at timestamp are stored with the invoice. Your auditor can replay the validation a year later.

Reverse-charge automation

Valid VIES + EU service invoice → 0% VAT + “käännetty verovelvollisuus” note applied, with the reasoning behind it.

Country-aware

Knows the VAT ID format quirks: GR uses EL, NL ends in B plus two digits, IT has 11 digits. Validates the format locally before calling VIES, which saves API calls.

Coverage

All 27 EU members.

Every member state’s VAT ID format is supported, validated locally, and verified live against VIES. UK, NO, CH, US counterparties, handled separately as non-EU exports (0% with proof attached).

27 member states · 27 formats

AT

Austria

BE

Belgium

BG

Bulgaria

HR

Croatia

CY

Cyprus

CZ

Czechia

DK

Denmark

EE

Estonia

FI

Finland

FR

France

DE

Germany

EL

Greece

HU

Hungary

IE

Ireland

IT

Italy

LV

Latvia

LT

Lithuania

LU

Luxembourg

MT

Malta

NL

Netherlands

PL

Poland

PT

Portugal

RO

Romania

SK

Slovakia

SI

Slovenia

ES

Spain

SE

Sweden

B2C distance sales

Selling to EU consumers? OSS, on the roadmap.

Under the EU OSS scheme, B2C goods to consumers in other EU countries get the customer’s country VAT once you cross €10,000 / year. Automatic threshold tracking and quarterly-return prep are on our roadmap, today we flag OSS lines so you handle them manually.

Send your first EU B2B invoice, validated.

Try it on a real counterparty. VIES check in ~400 ms, reverse-charge attached, audit proof stored.