Home / Use cases / Procurement & Vendor Management
VAT Number Verification for B2B Vendor and Supplier Onboarding
Validating supplier VAT numbers during vendor onboarding prevents incorrect tax treatment on purchase invoices, flags shell suppliers, and satisfies EU record-keeping requirements. Use the TaxID API to automate VAT checks in your vendor management workflow.
Vendor and supplier onboarding has a VAT problem that most procurement teams discover during audit rather than during onboarding. When a supplier provides an invalid or expired VAT number, the VAT treatment on their invoices may be wrong from day one. For cross-border EU purchases with reverse-charge treatment, an invalid supplier VAT number means your company cannot claim the input tax deduction on that invoice. For domestic purchases, an invalid VAT number means the supplier may not be entitled to charge VAT — and your company should not have paid it.
The TaxID API validates supplier VAT numbers against 31 official registries in real time. Integrating it into your vendor onboarding workflow creates a programmatic gate that flags invalid, inactive, or unregistered suppliers before their first invoice enters your accounts payable system. The returned company_name and address also serve as a first-pass vendor identity check — comparing the registry-confirmed company details against the vendor's self-declared information catches data entry errors and, in higher-risk cases, supplier fraud.
For larger organisations with ERP systems (SAP, Oracle, NetSuite), VAT validation can be integrated directly into the vendor master data creation workflow. When a new vendor record is created and a VAT number is entered, the ERP calls the TaxID API and stores the validated company name, address, and validation timestamp in the vendor master. This eliminates the manual step where procurement teams screenshot the VIES portal.
Accounts payable teams processing invoices from hundreds or thousands of suppliers face a related challenge: supplier VAT registrations can expire between onboarding and the date of the first invoice, particularly in the EU where businesses occasionally allow their VAT registration to lapse while continuing to operate. A monthly batch re-validation of all active suppliers in your vendor master flags any suppliers whose VAT status has changed before those invoices reach your finance team.
Implementation steps
- 1
Add VAT validation to the vendor registration form
When a new vendor submits their details via your supplier portal or ERP onboarding form, trigger a TaxID API call immediately on VAT number submission. Display the validated company name and address to the vendor for confirmation — this catches transposition errors and confirms they have provided the correct number for the legal entity invoicing you.
- 2
Gate vendor activation on validation status
Only activate vendors with status: 'active'. For vendors returning service_unavailable (VIES temporarily down), hold the vendor record as 'pending validation' and auto-retry within 24 hours. For vendors returning invalid or inactive, route the record to manual review with the validation failure reason — do not silently activate.
- 3
Store the validation record in the vendor master
Persist vat_number, company_name, address, validation_status, request_id, and validated_at in the vendor master data record. For ERP systems, map these fields to the appropriate vendor master data fields (or custom fields if the ERP does not natively support them). This provides an auditable record of due diligence at the point of onboarding.
- 4
Run monthly batch re-validation of all active vendors
Schedule a monthly batch job using the TaxID batch endpoint to re-validate all VAT numbers in your vendor master. Flag vendors whose status has changed from active to inactive or invalid for procurement review before their next invoice is processed. This is particularly important for markets like Romania and Bulgaria where supplier VAT deregistrations are more frequent.
- 5
Integrate with invoice matching workflow
For three-way matching systems (PO → receipt → invoice), add a VAT validation check as part of invoice approval. If an invoice arrives from a vendor whose VAT number has become invalid since onboarding, flag the invoice for AP review before payment. The input VAT deduction on that invoice may need to be reversed.
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
What is the difference between validating vendor VAT numbers and buyer VAT numbers?
Buyer VAT validation (for sales invoices) determines whether you can apply zero-rate reverse charge when selling. Vendor VAT validation (for purchase invoices) determines whether the supplier is entitled to charge VAT and whether you can claim input tax deductions on their invoices. Both use the same TaxID API endpoint — the business logic on what to do with the result differs.
Our ERP creates vendor records in bulk from CSV imports. Can we validate a list of VAT numbers at once?
Yes. The TaxID batch endpoint accepts up to 500 VAT numbers per request and returns a validation result for each. This is the recommended approach for ERP bulk imports, initial vendor master audits, and monthly re-validation jobs. See the bulk VAT import use case for a CSV-to-API integration pattern.
How should we handle a supplier who insists their VAT number is correct but VIES returns invalid?
First, ask the supplier to confirm their VAT number via their government tax portal or registration certificate. It is possible they have transitioned to a different legal entity (e.g., reorganised from a sole trader to a limited company) and are providing an old number. If they cannot provide a valid, VIES-confirmed VAT number, your options are to treat the supply as VAT-inclusive (charge standard VAT rate) and advise the supplier to resolve their registration status, or to escalate for legal review before proceeding with the vendor relationship.
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...