Guide9 min readAlberto García

The Benefits of Real-time VAT Number Verification for SaaS Businesses

Manual VAT verification takes 10–15 minutes per customer and creates audit gaps. Real-time API verification eliminates the work, reduces fraud, and builds the audit trail automatically.

vatsaascomplianceapibenefitsautomation

Most SaaS companies that sell to EU businesses start with the same manual process: a customer submits a VAT number at signup, someone on the finance team logs into the EU VIES website, types in the number, and records the result in a spreadsheet. It takes 10–15 minutes per customer, creates gaps in the audit trail when someone forgets to do it, and fails entirely when VIES is slow or down. Real-time API-based verification eliminates all of these problems — and the business case is stronger than most teams expect.

The 5 business benefits of real-time VAT verification

  • 1.**Eliminate VAT liability on reverse-charge invoices.** If you apply zero-rate reverse charge without a valid VIES confirmation at the time of supply, you are personally liable for the VAT amount. Real-time verification ensures every reverse-charge invoice has a timestamped, request-ID-linked validation record behind it.
  • 2.**Remove manual work from finance workflows.** At 10–15 minutes per customer, a team onboarding 200 B2B customers per month spends 33–50 hours per month on manual VAT lookups. API verification reduces that to zero.
  • 3.**Instant fraud detection via company name verification.** The VIES response includes the registered company name and address for most EU countries. When the name doesn't match what the customer claimed, or the address is in a completely different country, that's a signal worth investigating before you onboard them.
  • 4.**Automatic audit trail built on every transaction.** Every API call returns a unique request_id. Store it alongside the invoice and you have a timestamped, immutable record that the VAT number was validated — exactly what a tax audit requires.
  • 5.**Monthly re-validation catches deregistrations before they create liability.** A customer's VAT number that was valid at onboarding can become inactive at any time. A monthly re-validation job catches these before your next invoice run, so you never issue a reverse-charge invoice to a deregistered business.

What real-time looks like in practice

The difference between manual and API-based verification isn't just speed — it's the completeness of the data captured and the reliability of the process. Manual verification depends on a person remembering to do it. API verification happens as a side effect of the normal checkout or onboarding flow.

DimensionManual (VIES website)API (real-time)
Time per validation10–15 minutes< 500ms
Error rate~5% (human transcription)~0% (automated)
Audit trailSpreadsheet or email — easily lostrequest_id stored with invoice
VIES downtime handlingPerson retries later, forgetsservice_unavailable status, auto-retry
Re-validationManual — rarely doneAutomated monthly job
Company name checkVisual onlyProgrammatic mismatch detection

The service_unavailable problem: why real-time must be resilient

VIES is down approximately 2% of the time — roughly 14–15 hours per month. A naive implementation that rejects any customer whose validation fails will incorrectly block valid EU businesses during those windows. The correct approach is to distinguish between 'this number is invalid' and 'the service is currently unreachable', and to handle each differently.

Warning

Never treat service_unavailable as invalid. VIES is unavailable ~2% of the time. If you reject customers when VIES is down, you will lose approximately 2% of your EU B2B signups unnecessarily — plus you will block re-activations of valid customers during outages.

typescriptlib/validate-vat.ts
async function validateVatAtOnboarding(country: string, vatNumber: string) {
  const res = await fetch(
    `https://www.taxid.dev/api/v1/validate/${country}/${vatNumber}`,
    { headers: { Authorization: `Bearer ${process.env.TAXID_API_KEY}` } }
  );
  const data = await res.json();

  switch (data.status) {
    case 'active':
      // Valid — store record, proceed with reverse charge treatment
      return { allowed: true, reverseCharge: true, companyName: data.company_name };

    case 'invalid':
    case 'inactive':
      // Definitively not a registered business
      return { allowed: false, reverseCharge: false };

    case 'format_invalid':
      // The number is syntactically wrong — prompt to correct
      return { allowed: false, reverseCharge: false, promptCorrection: true };

    case 'service_unavailable':
      // VIES is down — allow through, schedule re-validation
      await scheduleRevalidation(vatNumber, country);
      return { allowed: true, reverseCharge: true, pendingValidation: true };
  }
}

ROI calculation for a 500-customer SaaS

For a SaaS with 500 EU B2B customers, assume 30 new customers per month and a monthly re-validation job running on all 500. At 10 minutes per manual check, that's 300 minutes (5 hours) of new customer validation plus another 500 minutes (8.3 hours) of monthly re-validation — 13.3 hours of finance time per month, every month. At a fully-loaded cost of $50/hour, that's $665/month in labour cost, just for VAT number management. The TaxID API at scale pricing costs less than $80/month for this volume. Beyond cost, the API eliminates audit exposure: a single missed re-validation that results in a reverse-charge invoice to a deregistered business can trigger a tax authority assessment for the full VAT amount on every invoice since the deregistration.

Frequently asked questions

  • **Is real-time validation required or just recommended?** Required for zero-rate reverse charge. The EU VAT Directive requires you to verify the buyer's taxable status before applying zero-rate treatment. Real-time VIES validation is the standard way to satisfy this requirement.
  • **What happens if the API is slow at checkout?** The TaxID API returns cached results in under 10ms for recently validated numbers. Cold VIES calls typically complete in 300–600ms. This is fast enough to include inline in a checkout flow without impacting conversion.
  • **Can I batch validate a list of VAT numbers?** Yes — use concurrent API calls with a rate limiter. See the bulk VAT validation guide for implementation patterns.

Start validating EU VAT numbers

Free plan — 100 validations/month. No credit card required.

AG
Alberto García

Founder, TaxID

Building EU VAT validation tools for developers. Obsessed with compliance automation and developer experience.