Home / Use cases / HR & Payroll
EU VAT Validation for HR and Payroll Platforms
HR and payroll platforms that invoice EU clients for employer-of-record or contractor services must verify client VAT numbers before applying cross-border zero-rate treatment. Use the TaxID API to validate EU VAT numbers at client onboarding and on recurring invoices.
HR and payroll platforms operating across the EU increasingly provide employer-of-record (EOR), contractor management, and payroll processing services on a cross-border basis. When invoicing a client business in another EU member state for these services, the supplier can apply reverse-charge if the client holds a valid EU VAT registration. Without verification, the supplier must charge and remit VAT in the client's country — a complex and costly obligation.
The TaxID API provides a real-time validation step that HR platforms can integrate into their client onboarding workflow. When a client business registers and provides their EU VAT number, call the TaxID API to verify it before generating the first invoice. The response returns the registered company name and address, which should match the client's self-reported billing details — a useful fraud-detection signal.
Payroll platforms process invoices on recurring schedules (monthly, bi-weekly) for the same set of clients. Re-validating every client's VAT number on every invoice would add latency and API cost. Instead, validate at onboarding and re-validate monthly via a background job using the TaxID batch endpoint. Store the most recent validation result and timestamp with each invoice for audit purposes.
Cross-border HR services frequently involve multiple EU countries. The TaxID API supports all 27 EU member states via VIES, plus UK (HMRC) for post-Brexit clients. This single endpoint covers the entire EU market, so HR platforms do not need country-specific integrations for each jurisdiction.
Implementation steps
- 1
Validate at client onboarding
When a client business signs up, collect their EU VAT number and call GET /api/v1/validate/:country/:vat from your server. Display the returned company_name and company_address to confirm the client's identity before activating their account.
- 2
Apply reverse-charge on cross-border invoices
For clients in a different EU member state with a validated 'active' VAT number, generate invoices with zero VAT and the annotation 'VAT: Reverse charge'. This is required by EU Invoice Directive 2006/112/EC Article 226 for intra-community B2B supplies.
- 3
Re-validate clients monthly before invoice generation
Before each monthly billing cycle, run a batch re-validation of all reverse-charge clients using the TaxID batch endpoint. Flag any clients whose VAT number has become 'invalid' for your finance team to review before generating invoices.
- 4
Attach validation records to each invoice
Store the TaxID request_id, validated company_name, company_address, and validation timestamp with each invoice. This audit trail is your proof of due diligence if a tax authority questions a zero-rated invoice during a VAT inspection.
Code example
Node.js
const res = await fetch(
'http://localhost:3000/api/v1/validate/DE/DE123456789',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const { valid, status, company_name, company_address } = await res.json();
if (valid) {
console.log(`Valid EU business: ${company_name}`);
} else if (status === 'service_unavailable') {
// VIES is temporarily down — retry or allow with manual check
console.log('VIES unavailable — check back in a few minutes');
} else {
console.log('Invalid VAT number — charge local tax rate');
}Python
import requests
res = requests.get(
"http://localhost:3000/api/v1/validate/DE/DE123456789",
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
data = res.json()
if data["valid"]:
print(f"Valid: {data['company_name']}")
elif data["status"] == "service_unavailable":
print("VIES temporarily unavailable")
else:
print("Invalid VAT number")API response
The TaxID API returns a consistent JSON response for every validation request:
{
"valid": true,
"status": "active",
"country_code": "DE",
"vat_number": "123456789",
"company_name": "Example GmbH",
"company_address": "Musterstraße 1, 10115 Berlin",
"request_date": "2026-05-10T00:00:00.000Z",
"cached": false,
"request_id": "req_01j..."
}Error handling
The API uses a consistent Stripe-style error format. Always handle service_unavailable separately — VIES has occasional downtime and you should not reject valid customers during outages.
activeVAT number is valid and the business is registered
invalidVAT number format is wrong or not registered in VIES
service_unavailableVIES or the national system is temporarily down — retry later
Frequently asked questions
Do HR and payroll platforms need to validate EU VAT numbers for every invoice?
Strictly speaking, you must be able to prove the VAT number was valid at the time of each invoice. The most efficient approach is to validate at onboarding and re-validate monthly, storing the result with each invoice. This satisfies the verification requirement without calling the API on every invoice generation.
Can TaxID validate UK client VAT numbers for post-Brexit HR services?
Yes. UK VAT numbers (GB-prefixed) are validated via the HMRC Making Tax Digital API. Pass the full GB-prefixed number (e.g., GB123456789) to the same TaxID endpoint (/api/v1/validate/GB/GB123456789) and it routes to HMRC automatically. UK is no longer part of VIES after Brexit.
Further reading
EU VAT Number Validation: The Complete Developer Guide (2026)
VIES is SOAP-based, unreliable, and has no caching. This guide explains how EU VAT validation works end-to-end, how to h…
SaaS VAT Compliance: A Developer's Complete Guide for EU Markets
Selling a SaaS product to EU customers means navigating B2B vs B2C VAT rules, determining the place of supply, registeri…
Evaluating EU VAT APIs? Compare TaxID vs Vatstack, Vatlayer, Avalara →
Related use cases
Validate EU VAT numbers in Stripe Checkout
Add EU VAT validation to your Stripe checkout flow. Verify customer VAT numbers server-side before a...
UK VAT validation in Shopify B2B
Validate UK VAT numbers for B2B customers in Shopify. Required under UK Making Tax Digital rules for...
WooCommerce Spain NIF/CIF validation
Validate Spanish NIF and CIF numbers in WooCommerce checkout. Automatically apply B2B tax exemptions...