vatverify home

Guides.

Build VAT validation into anything. Language tutorials, registry deep dives, payment-platform integrations, and more.

Concepts

BZSt §18e qualified VAT confirmation (German legal evidence)

Obtain a qualifizierte Bestätigungsmitteilung from Germany's BZSt with a single API call. Field-by-field match codes, 10-year evidence retention, idempotent retries.

Read guide
Concepts

The EU VAT reverse-charge API: stop hand-coding B2B tax logic

The /v1/decide endpoint decides whether to charge VAT, at what rate, under which mechanism. Full walkthrough with Stripe + invoice integration.

Read guide
Concepts

Handle VIES downtime with degraded cache, fallbacks, and retry patterns

VIES goes down. Here's how vatverify handles it automatically, and how your code should handle the edge cases that still matter.

Read guide
Concepts

HMRC VAT check API: UK VAT validation explained

How HMRC's VAT check API works. OAuth 2.0 client credentials, sandbox vs production, rate limits, and why vatverify handles all of it for you.

Read guide
Concepts

Mollie VAT validation: EU B2B checkout with reverse-charge

Validate customer VAT before a Mollie payment. Add reverse-charge logic to EU B2B invoices using /v1/decide.

Read guide
Concepts

Norwegian VAT validation: how brreg and MVA work

Norway's VAT (MVA) system, org-number format, MOD-11 checksum, and the public brreg REST API. No auth required, but watch the deprecation notices.

Read guide
Concepts

Offline VAT validation: zero dependencies, real checksums

Validate EU VAT numbers without a network call using @vatverify/vat-rates. 44-country rates data, real MOD-11 / MOD-97 / Luhn / HMRC 97-55 algorithms.

Read guide
Concepts

Stripe VAT validation: validate customer VAT before charging

Add EU VAT validation to a Stripe checkout flow. Validate before creating the Customer, set tax_id_data, and handle reverse-charge for B2B correctly.

Read guide
Concepts

Swiss UID validation: understanding the CHE-xxxxxxxxx format

How Switzerland's UID register works, CHE format, MWST/IVA/TVA suffixes, BFS UID register SOAP eCH-0097 schema, and Liechtenstein's dual coverage.

Read guide
Concepts

Validate VAT numbers in Django

Add VAT validation to Django forms, admin, and DRF serializers by calling the vatverify REST API with httpx. Covers sync and async views.

Read guide
Concepts

Validate VAT numbers in Laravel

Add EU VAT validation to a Laravel app with a custom validation rule, service container binding, and Livewire integration.

Read guide
Concepts

Validate VAT numbers in Next.js (App Router)

Add VAT validation to a Next.js 15 app using server actions, route handlers, and @vatverify/node. Includes form binding and error states.

Read guide
Concepts

How to validate VAT numbers in Node.js

Validate EU, UK, Swiss, and Norwegian VAT numbers in Node.js with real checksum algorithms and a free live API.

Read guide
Concepts

How to validate VAT numbers in Python

Validate EU, UK, Swiss, and Norwegian VAT numbers from Python by calling the vatverify REST API directly with httpx or requests. Sync, async, and offline modes.

Read guide
Concepts

The VIES API guide: how EU VAT validation actually works

How VIES (VAT Information Exchange System) works under the hood. SOAP/XML, rate limits, downtime patterns, and why wrapping it with vatverify is 10× simpler than hitting it directly.

Read guide
Concepts

WooCommerce VAT validation: a custom plugin pattern

Add proper VAT validation to a WooCommerce EU store. Hook into woocommerce_after_checkout_validation, validate via vatverify, reject invalid B2B VAT.

Read guide