# EU & UK VAT Number Validator & VIES Verifier Pro (`voxatools/eu-vat-vies-company-verifier`) Actor

Bulk validate EU & UK VAT numbers or company domains with official VIES consultation proof numbers, Reverse-Charge approval tiers, unmasked DE/ES legal names, 4-column ERP addresses & SHA-256 audit certificates — no API keys needed, $0.00 start fee, $2.20/1k checks.

- **URL**: https://apify.com/voxatools/eu-vat-vies-company-verifier.md
- **Developed by:** [VoxaTools](https://apify.com/voxatools) (community)
- **Categories:** Lead generation, E-commerce, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🏆 EU & UK VAT Number Validator & VIES Verifier Pro

> **Stop losing 19%–27% in retroactive EU tax penalties or getting blank `---` company names for German (`DE`), Spanish (`ES`), and UK (`GB`) customers.**
> Bulk-verify EU27, Northern Ireland (`XI`), and UK (`GB`) VAT numbers with **official consultation numbers**, **unmasked legal company names**, **4-column ERP addresses**, **0% Reverse-Charge eligibility badges**, and **SHA-256 tax audit certificates** — **15x faster** than browser scrapers, **$0 proxy cost**, and **all-inclusive base pricing** (`$2.20 / 1,000 verifications`).

> ### ⚡ Start in 10 Seconds — Zero Setup, Zero Risk
>
> - **No Tax Portal Credentials, API Keys, or Proxies Needed:** Works out of the box with zero registration or login cookies required.
> - **1-Click First Run (`~$0.0088` from your Free Apify Credit):** Click the green **Start** button with the default 4-country preset (`IE6388047V`, `DE260543043`, `NL805734958B01`, `SE556703748501`) — or paste your own VAT numbers — to get your first **0% Reverse-Charge Audit Report** in **3 seconds**.

***

### 🎯 What You Can Do With This Tool

Whether you are auditing quarterly EC Sales Lists (`ZM`), automating Stripe / Shopify B2B tax-exempt checkout, or scrubbing SAP / NetSuite / Odoo vendor master files, you can tailor the output to your exact workflow:

| # | Team / Workflow | Common Challenge | How This Tool Solves It | Recommended Settings |
|---|---|---|---|---|
| 1 | **B2B CFOs, Tax Controllers & Accounting Firms** | Checking hundreds of customer VAT IDs manually on the EU portal takes hours and leaves no permanent audit proof for tax inspectors. | Bulk-verifies thousands of VAT numbers in seconds, extracts **official consultation numbers (`consultationNumber`)**, and generates **SHA-256 Audit Certificates (`auditCertificate`)**. | `resultType: "verifications"`, `requesterVatNumber: "IE6388047V"`, `generateAuditCertificates: true` |
| 2 | **German (`DE`), Spanish (`ES`) & UK (`GB`) Trade Teams** | The standard EU portal masks German and Spanish legal names as `---` due to national privacy rules, and excludes UK (`GB`) VAT numbers entirely. | Automatically **unmasks `DE` and `ES` legal names and registered addresses** (`companyName`, `street`, `postalCode`, `city`) and verifies **`GB` + `XI` + EU27** in one unified workflow. | `vatNumbers: ["DE260543043", "ESB85638369", "GB999999973"]`, `includeRegistryDetails: true` |
| 3 | **ERP Data Engineers (SAP, NetSuite, Odoo, HubSpot)** | Official tax portals return raw multi-line address strings with inconsistent formatting, and dirty CRM exports contain typos and duplicates. | Runs a **0ms mathematical checksum pre-filter** across 28 jurisdictions, merges duplicates (`duplicateInputCount`), and splits addresses into **4 clean ERP columns (`street`, `postalCode`, `city`, `countryCode`)**. | `deduplicateEntities: true`, `onlyValid: true`, `defaultCountry: "AUTO"` |
| 4 | **Multi-Subsidiary Procurement & Master Data Teams** | Multinational suppliers operate under 5–20 local VAT registrations across Europe, fragmenting vendor master records. | Aggregates verified regional VAT IDs into **one consolidated Corporate Parent Entity row** with active member states, LEI code, and primary HQ address. | `resultType: "entities"`, `includeRegistryDetails: true` |
| 5 | **Scheduled ERP & CRM Compliance Monitors** | Re-verifying 10,000 existing vendors every week wastes budget when 99% of VAT statuses haven't changed. | Remembers each vendor's previous VAT status in a persistent store and **only outputs and bills for newly revoked, expired, or changed VAT numbers**. | `onlyChangedStatus: true`, `generateAuditCertificates: true`, `downloadAssets: true` |

***

### ⚡ Why B2B Finance, ERP & Tax Compliance Teams Switch To This Verifier

#### 1. Unmasks German (`DE`), Spanish (`ES`) & UK (`GB`) Legal Entities (`companyName` Never Blank `---`)

When you check a German (`DE`) or Spanish (`ES`) VAT number on the standard EU web form, national privacy rules hide the company name and address behind `---`. Furthermore, post-Brexit UK (`GB`) VAT numbers fail on EU portals. This tool cross-references official corporate registry and LEI identifiers to **unmask the exact legal company name, legal form, and registered headquarters address** for `DE`, `ES`, and `GB` alongside all 27 EU member states and Northern Ireland (`XI`).

#### 2. Instant 0ms Mathematical Checksum Pre-Filter (Zero Wasted Requests on Typos)

Before querying any national tax gateway, every input string is cleaned and validated against **28 country-specific modulo checksum algorithms** (`MOD 11`, `MOD 97-10`, Luhn, and check-character matrices). Formatting typos or fake numbers are flagged in `0ms` with `isSyntaxValid: false` without wasting time on dead network calls.

#### 3. 4-Column ERP Address Normalization & Reverse-Charge Decision Badge

Stop writing brittle regexes to parse multi-line European addresses. Every verified record includes both the raw registered address and normalized **`street`**, **`postalCode`**, **`city`**, and **`countryCode`** columns ready for SAP S/4HANA, Oracle NetSuite, Microsoft Dynamics, Odoo, or Stripe Tax, plus an explicit **`reverseChargeTier`** badge:

- `✅ REVERSE_CHARGE_APPROVED` (Active cross-border EU/XI VAT registration eligible for 0% intra-community reverse charge under Article 138 / 196)
- `🇬🇧 UK_B2B_EXPORT_ZERO_RATED` (Verified UK `GB` VAT registration eligible for post-Brexit B2B export zero-rating)
- `⚠️ VALID_VAT_NAME_REDACTED` (Active VAT registration where national privacy rules require registry enrichment)
- `❌ DO_NOT_ZERO_RATE_INVALID_VAT` (Invalid, deactivated, or checksum-failed VAT number — must charge standard local VAT)

#### 4. Official Consultation Numbers & SHA-256 Tax Audit Certificates Included Free

Enter your own company VAT ID in `requesterVatNumber` to receive an official member-state **Consultation Reference (`consultationNumber`)** together with a self-contained **SHA-256 Audit Certificate (`auditCertificate`)** and an **AI Tax Compliance Memo Prompt (`ai_analysis_prompt`)** at **$0.00 extra cost** in the base tier.

***

### 📊 Feature & Total Cost Comparison

| # | Capability | Basic Single-ID Scrapers | Enterprise VAT SaaS APIs | 🏆 **VoxaTools EU & UK VAT Verifier Pro** |
|---|---|---|---|---|
| 1 | **Effective Cost for 1,000 Verifications** | `$4.00 – $10.00 / 1k` + Start Fee | `$19.00 – $299.00 / month` | **`$2.20 / 1,000 Verifications` (`$0.0022 / ID` All-Inclusive)** |
| 2 | **Bulk Processing (Up to 10,000 IDs/Run)** | ❌ 1 VAT number per run | ⚠️ Strict tier rate limits | ✅ **Up to 10,000 VAT Numbers per Run** |
| 3 | **German (`DE`) & Spanish (`ES`) Name Unmasking** | ❌ Returns blank `---` | ❌ Returns blank `---` | ✅ **Unmasks Legal Name, LEI & HQ Address** |
| 4 | **Coverage: EU27 + Northern Ireland (`XI`) + UK (`GB`)** | ⚠️ EU27 only | ⚠️ Separate UK add-on fee | ✅ **All 28 Jurisdictions Unified (`EU27` + `XI` + `GB`)** |
| 5 | **0ms Mathematical Checksum Pre-Filter** | ❌ None | ⚠️ Basic regex only | ✅ **28 Official Modulo & Check-Digit Algorithms** |
| 6 | **4-Column ERP Address Parsing** | ❌ Raw unparsed text | ⚠️ Extra enrichment credit | ✅ **Included Free (`street`, `postalCode`, `city`, `countryCode`)** |
| 7 | **Official Consultation Number & SHA-256 Proof** | ❌ None | ⚠️ Enterprise plan only | ✅ **Included Free (`consultationNumber` + `auditCertificate`)** |
| 8 | **Duplicate VAT & Punctuation Deduplication** | ❌ Bills for every duplicate | ❌ Bills for every duplicate | ✅ **Auto-Deduplicates (`duplicateInputCount`)** |
| 9 | **Corporate Parent Entity Consolidation** | ❌ None | ❌ None | ✅ **Supported (`resultType: "entities"`, `$3.80 / 1k`)** |
| 10 | **Scheduled Revocation Delta Monitor** | ❌ None | ⚠️ Webhook tier required | ✅ **Supported (`onlyChangedStatus: true`)** |

***

### 🚀 Key Operating Modes & Workflows

#### Mode 1 — 🧾 Bulk EU & UK VAT Audit + 0% Reverse-Charge Decision (`resultType: "verifications"`)

Verify arrays of up to 10,000 VAT numbers or company names/domains in a single run. Every record returns `isValid`, `isSyntaxValid`, `viesStatus`, `reverseChargeTier`, `companyName`, `legalForm`, `street`, `postalCode`, `city`, `consultationNumber`, and `auditCertificate`.

#### Mode 2 — 🏛️ German (`DE`), Spanish (`ES`) & Corporate Registry Enrichment (`includeRegistryDetails: true`)

Enable `includeRegistryDetails: true` (`+$1.80 / 1,000`) to attach verified **Global LEI (`leiCode`)**, **National Commercial Registration Number (`registrationNumber`, e.g., `HRB 158895 B`)**, **Registration Authority (`registryAuthority`)**, **Entity Status (`entityStatus`)**, and **Incorporation Date (`incorporationDate`)**.

#### Mode 3 — 🏢 Corporate Parent Entity Consolidation (`resultType: "entities"`)

When auditing multinational suppliers or customers with multiple regional VAT numbers across Europe, set `resultType: "entities"` to group all branch VAT registrations into **one master B2B Corporate Entity profile** with `totalVatIdsVerified`, `validVatCount`, `activeMemberStates`, `verifiedVatNumbers`, and `complianceSummary`.

#### Mode 4 — 📜 Permanent Cloud Audit Certificate Archiving (`downloadAssets: true`)

Need immutable JSON tax certificates stored in your cloud bucket for a 7-year statutory tax audit trail? Enable `downloadAssets: true` (`+$0.80 / 1,000 files`) to save permanent `VAT_CERT_<VAT>_<DATE>.json` records directly into your Apify Key-Value Store (`savedCertificateUrl`).

#### Mode 5 — 📡 Scheduled VAT Revocation Delta Radar (`onlyChangedStatus: true`)

Run weekly or monthly ERP hygiene checks without paying to re-export unchanged vendors. With `onlyChangedStatus: true`, the Actor compares each VAT number against its previous state and **only outputs and charges for VAT numbers whose validity or reverse-charge tier changed**.

***

### 📖 Quick-Start Guide & Copy-Paste Input Examples (Paste Into "Input → JSON")

To start a run, open the **Input** tab on Apify Console, switch from **Form** to **JSON**, and copy-paste any of the 5 ready-to-run configurations below:

#### Input Example 1 — Bulk EU & German (`DE`) VAT Audit With Official Consultation Numbers

```json
{
  "resultType": "verifications",
  "vatNumbers": [
    "IE6388047V",
    "DE260543043",
    "NL805734958B01",
    "SE556703748501",
    "FR40303265045"
  ],
  "defaultCountry": "AUTO",
  "requesterVatNumber": "IE6388047V",
  "includeRegistryDetails": true,
  "onlyValid": false,
  "deduplicateEntities": true,
  "generateAuditCertificates": true,
  "maxResults": 100
}
```

#### Input Example 2 — Domain & Company Name to EU/UK VAT Discovery

```json
{
  "resultType": "verifications",
  "vatNumbers": ["IE6388047V"],
  "domains": [
    "zalando.de",
    "spotify.com",
    "booking.com",
    "wise.com"
  ],
  "defaultCountry": "AUTO",
  "includeRegistryDetails": true,
  "onlyValid": true,
  "maxResults": 50
}
```

#### Input Example 3 — Consolidated Corporate Parent Entities (1 Master Row per Legal Group)

```json
{
  "resultType": "entities",
  "vatNumbers": [
    "IE6388047V",
    "DE260543043",
    "NL805734958B01",
    "SE556703748501"
  ],
  "defaultCountry": "AUTO",
  "includeRegistryDetails": true,
  "deduplicateEntities": true,
  "maxResults": 50
}
```

#### Input Example 4 — Archive Permanent SHA-256 Tax Audit Certificates to Key-Value Store

```json
{
  "resultType": "verifications",
  "vatNumbers": [
    "IE6388047V",
    "DE260543043",
    "GB999999973"
  ],
  "requesterVatNumber": "IE6388047V",
  "generateAuditCertificates": true,
  "downloadAssets": true,
  "maxResults": 25
}
```

#### Input Example 5 — Scheduled Monthly ERP Revocation Monitor (Only Output Changed Statuses)

```json
{
  "resultType": "verifications",
  "vatNumbers": [
    "IE6388047V",
    "DE260543043",
    "NL805734958B01",
    "SE556703748501"
  ],
  "defaultCountry": "AUTO",
  "onlyChangedStatus": true,
  "generateAuditCertificates": true,
  "maxResults": 500
}
```

***

### 🛠️ Input Parameters Reference

Below is the complete reference for all 12 configuration options available in the Input tab:

| # | Parameter | Type & Default | Description |
|---|---|---|---|
| 1 | `resultType` | `string` (`"verifications"`) | Choose `"verifications"` for individual VAT compliance & 0% reverse-charge audit records (`$2.20/1k`), or `"entities"` for consolidated corporate parent profiles (`$3.80/1k`). |
| 2 | `vatNumbers` | `array` (`["IE6388047V", ...]`) | List of EU27, Northern Ireland (`XI`), or UK (`GB`) VAT numbers to verify. Punctuation, spaces, dots, and hyphens are cleaned automatically. |
| 3 | `domains` | `array` (`[]`) | Optional list of company domains or legal names (e.g., `["zalando.de", "spotify.com"]`) to resolve and verify against EU/UK VAT & LEI registries. |
| 4 | `defaultCountry` | `string` (`"AUTO"`) | Fallback ISO country prefix (`"AUTO"`, `"DE"`, `"FR"`, `"NL"`, `"IE"`, `"ES"`, `"IT"`, `"SE"`, `"PL"`, `"BE"`, `"AT"`, `"GB"`, `"XI"`, etc.) when inputs omit the 2-letter prefix. |
| 5 | `requesterVatNumber` | `string` (`""`) | Optional: Your own EU/UK VAT number (e.g., `"IE6388047V"`) to obtain official member-state `consultationNumber` strings for tax authority inspections. |
| 6 | `includeRegistryDetails` | `boolean` (`false`) | Optional add-on (`+$1.80/1k`): Unmasks redacted German (`DE`) & Spanish (`ES`) entities and attaches Global LEI (`leiCode`), national commercial register ID (`registrationNumber`), and incorporation date. |
| 7 | `onlyValid` | `boolean` (`false`) | When enabled, filters out invalid or deactivated VAT numbers and outputs only active, verified VAT registrations. |
| 8 | `deduplicateEntities` | `boolean` (`true`) | Automatically merges duplicate VAT numbers (e.g., `"DE 260.543.043"` and `"DE260543043"`) into one record with `duplicateInputCount` and `mergedInputQueries` so you never pay twice. |
| 9 | `maxResults` | `integer` (`100`) | Maximum number of verified records to output (`1` to `10000`). Strictly enforced. |
| 10 | `onlyChangedStatus` | `boolean` (`false`) | Stateful ERP monitoring mode: compares each VAT ID against the persistent Key-Value Store and outputs only VAT numbers whose status changed since the last run. |
| 11 | `generateAuditCertificates` | `boolean` (`true`) | Generates a structured `auditCertificate` object with an ISO timestamp, consultation reference, and cryptographic `sha256Signature` on every record at `$0` extra cost. |
| 12 | `downloadAssets` | `boolean` (`false`) | Optional add-on (`+$0.80/1k files`): Archives standalone `VAT_CERT_<VAT>_<DATE>.json` compliance certificates into your Apify Key-Value Store (`savedCertificateUrl`). |

***

### 📦 Sample Dataset Output

#### A. Individual VAT Verification & Reverse-Charge Audit Record (`resultType: "verifications"`)

```json
{
  "resultType": "verifications",
  "query": "DE260543043",
  "normalizedVatNumber": "DE260543043",
  "countryCode": "DE",
  "countryName": "Germany",
  "vatDigits": "260543043",
  "isValid": true,
  "isSyntaxValid": true,
  "checksumAlgorithm": "MOD_11_10_ISO_7064 (Germany 9-digit USt-IdNr)",
  "viesStatus": "VIES_VALID_UNMASKED_REGISTRY",
  "reverseChargeTier": "✅ REVERSE_CHARGE_APPROVED",
  "companyName": "ZALANDO SE",
  "legalForm": "SE",
  "rawAddress": "VALESKA-GERT-STRASSE 5, 10243 BERLIN, DE",
  "street": "VALESKA-GERT-STRASSE 5",
  "postalCode": "10243",
  "city": "BERLIN",
  "consultationNumber": "WAPIAAAAZ3x8K9D260543043",
  "verifiedAt": "2026-10-23T09:15:00.000Z",
  "requesterVatNumber": "IE6388047V",
  "leiCode": "5493006P3Q9C9R7S8T44",
  "registrationNumber": "HRB 158895 B",
  "registryAuthority": "Amtsgericht Charlottenburg (Berlin)",
  "entityStatus": "ACTIVE",
  "incorporationDate": "2008-08-12",
  "duplicateInputCount": 1,
  "mergedInputQueries": ["DE260543043"],
  "auditCertificate": {
    "certificateId": "CERT-DE260543043-9F4A2C18B7E1",
    "vatNumber": "DE260543043",
    "countryCode": "DE",
    "companyName": "ZALANDO SE",
    "isValid": true,
    "reverseChargeTier": "✅ REVERSE_CHARGE_APPROVED",
    "consultationNumber": "WAPIAAAAZ3x8K9D260543043",
    "requesterVatNumber": "IE6388047V",
    "issuedAt": "2026-10-23T09:15:00.000Z",
    "regulatoryBasis": "EU Council Directive 2006/112/EC (Articles 138 & 196 Intra-Community Reverse Charge)",
    "sha256Signature": "9f4a2c18b7e14d33a80c5e2194f02d8a6c11e5f702b3d84a91e6c3f08a2b4d11"
  },
  "savedCertificateUrl": null,
  "ai_analysis_prompt": "Act as an EU Cross-Border Tax Director & Statutory Auditor..."
}
```

#### B. Consolidated Corporate Parent Entity Record (`resultType: "entities"`)

```json
{
  "resultType": "entities",
  "query": "DE260543043",
  "companyName": "ZALANDO SE",
  "legalForm": "SE",
  "primaryCountryCode": "DE",
  "primaryVatNumber": "DE260543043",
  "totalVatIdsVerified": 1,
  "validVatCount": 1,
  "invalidVatCount": 0,
  "reverseChargeEligible": true,
  "reverseChargeTier": "✅ REVERSE_CHARGE_APPROVED",
  "activeMemberStates": ["DE"],
  "verifiedVatNumbers": ["DE260543043"],
  "consultationNumbers": ["WAPIAAAAZ3x8K9D260543043"],
  "street": "VALESKA-GERT-STRASSE 5",
  "postalCode": "10243",
  "city": "BERLIN",
  "leiCode": "5493006P3Q9C9R7S8T44",
  "registrationNumber": "HRB 158895 B",
  "registryAuthority": "Amtsgericht Charlottenburg (Berlin)",
  "entityStatus": "ACTIVE",
  "incorporationDate": "2008-08-12",
  "duplicateInputCount": 1,
  "verifiedAt": "2026-10-23T09:15:00.000Z",
  "complianceSummary": "ZALANDO SE holds 1 active VAT registration(s) across DE. Eligible for 0% Intra-Community Reverse Charge.",
  "ai_analysis_prompt": "Act as a B2B Master Data & Tax Governance Architect..."
}
```

***

### 💰 Simple, Transparent Modular Pricing

Every Apify account includes **$5.00 in free monthly usage credit** — enough to verify **~2,270 EU & UK VAT numbers (with 0ms checksum validation, 4-column ERP addresses, consultation numbers, and SHA-256 audit certificates)** every month at zero cost.

| # | Event Name | Price | What Is Included |
|---|---|---|---|
| 1 | **`VAT Verification Result` (`apify-default-dataset-item`)** | **`$0.0022 / ID` (`$2.20 / 1,000 IDs`)** | **All-Inclusive Base Tier:** Live EU27/XI/GB VAT verification + 0ms Checksum Validation + Legal Company Name + 4-Column ERP Address (`street`, `postalCode`, `city`, `countryCode`) + Consultation Number + Reverse-Charge Badge + SHA-256 `auditCertificate` (`$0` Actor Start fee, `$0` Proxy cost — 45% below standard `$4.00/1k` VIES tools). |
| 2 | **`Corporate Parent Summary` (`advertiser`)** | **`$0.0038 / entity` (`$3.80 / 1,000 entities`)** | Triggered only when `resultType: "entities"`: 1 consolidated Corporate Parent Entity row per legal group (`$0.0022` dataset item + `$0.0016` entity delta — 46% below `$7.00/1k` imprint scrapers). |
| 3 | **`Registry & LEI Unmasking` (`detail`)** | **`+$0.0018 / ID` (`+$1.80 / 1,000 IDs`)** | Triggered only when you explicitly enable `includeRegistryDetails: true`: Adds Global LEI (`leiCode`), national commercial register ID (`registrationNumber`), registry authority, and incorporation date. |
| 4 | **`Cloud Audit Certificate File` (`asset`)** | **`+$0.0008 / file` (`+$0.80 / 1,000 files`)** | Triggered only when you enable `downloadAssets: true` and a standalone `VAT_CERT_<VAT>_<DATE>.json` compliance file is archived to your Apify Key-Value Store. |

***

### ❓ Frequently Asked Questions & Release Notes

#### Why do German (`DE`) and Spanish (`ES`) VAT numbers return `---` on the standard EU web page?

German and Spanish national tax authorities restrict public display of company names on the anonymous EU web form. Our engine resolves verified corporate registry and Global LEI records so your ERP and tax audit files receive the real legal company name (`companyName`), legal form (`legalForm`), and registered address (`street`, `postalCode`, `city`).

#### What happens if a national member-state tax gateway is temporarily offline?

Member-state tax databases occasionally undergo brief nightly maintenance. Our engine automatically retries via backup protocols and isolates any unreachable member-state query with **$0.00 charged for incomplete items**.

#### Can I test a few VAT numbers for free before running a bulk ERP audit?

Yes — you can verify up to 3 VAT numbers interactively on our free web utility at **[VoxaTools — EU & UK VAT VIES Bulk Verifier](https://voxatools.com/tools/eu-vat-vies-bulk-verifier)**.

#### Recent Updates (`v1.0`)

- **28-Jurisdiction 0ms Checksum Engine (`EU27` + `XI` + `GB`):** Pre-validates check digits mathematically before network resolution.
- **German (`DE`), Spanish (`ES`) & UK (`GB`) Entity Unmasking:** Eliminates blank `---` company names and attaches `leiCode` and `registrationNumber`.
- **4-Column ERP Address Splitter & SHA-256 Audit Certificates:** Outputs `street`, `postalCode`, `city`, `countryCode`, `consultationNumber`, and cryptographic `auditCertificate` proof in every record.

# Actor input Schema

## `resultType` (type: `string`):

Select 'verifications' (default — $2.00/1k checks) for line-by-line EU/UK VAT audit verification records with official VIES consultation proof numbers, Reverse-Charge eligibility tiers, and 4-column ERP addresses. Select 'entities' ($3.00/1k companies) to aggregate results or resolve company domains into unified B2B KYB legal entity profiles with HRB/SIREN/KVK/CRN registration numbers and GLEIF LEI codes.

## `vatNumbers` (type: `array`):

List of EU (27 Member States + Northern Ireland XI) or UK (GB) VAT identification numbers to validate in bulk (e.g., 'IE6388047V', 'DE260543043', 'NL805734958B01', 'SE556703748501', 'FR22424761419'). Automatically strips spaces, dots, and hyphens, converts GR to EL, and runs 0ms offline national checksum validation before querying live registries.

## `domains` (type: `array`):

Optional list of B2B company website domains or corporate names (e.g., 'spotify.com', 'zalando.de', 'booking.com', 'adyen.com', 'siemens.com') when you do not yet have the partner's VAT number. Automatically scans website legal notices (Impressum / Mentions légales / Legal) and GLEIF registries to extract and live-verify their VAT number.

## `defaultCountry` (type: `string`):

Select 'AUTO' (default) when your VAT numbers already include a 2-letter country prefix (such as DE260543043 or IE6388047V), or select a specific EU/UK ISO country code (e.g., 'DE', 'FR', 'NL', 'GB') to automatically prepend when validating raw domestic numbers without prefixes.

## `requesterVatNumber` (type: `string`):

Optional: Your own company's EU VAT number (e.g., 'IE6388047V') submitted to the European Commission VIES system so it generates an official timestamped Consultation Proof Number (requestIdentifier) required for 0% VAT Intra-EU Reverse Charge tax audits. Leave empty if you do not need a requester-linked VIES consultation identifier.

## `includeRegistryDetails` (type: `boolean`):

Note: VIES validation, official consultationNumber, 4-column parsed ERP addresses, and German/Spanish name unmasking are ALREADY included! Enable 'includeRegistryDetails' when you also need full GLEIF ISO-17442 LEI records, commercial court registration numbers (HRB/SIREN/KVK/KBO/CRN), legal form, incorporation date, and parent entity links.

## `onlyValid` (type: `boolean`):

When enabled, filters out syntax-invalid or deregistered VAT numbers and only outputs verified active records ('valid: true') approved for Intra-EU Reverse Charge invoicing.

## `deduplicateEntities` (type: `boolean`):

When enabled (default true), normalizes dirty ERP strings (e.g., 'DE 260 543 043', 'de-260.543.043', 'DE260543043') in 0ms and merges duplicate rows into 1 single verification record while counting 'invoiceOrBranchScaleCount' so you never pay twice for the same supplier or customer.

## `maxResults` (type: `integer`):

Maximum number of verified VAT or corporate entity records to output in this run (1 to 10,000 records per batch).

## `onlyChangedStatus` (type: `boolean`):

When enabled on scheduled weekly or monthly compliance runs, stores a baseline snapshot of all partner VAT statuses in a persistent Key-Value Store and only outputs and bills for newly added partners or partners whose VAT status changed (e.g., VALID -> INVALID; $0.00 cost when 0 statuses change).

## `generateAuditCertificates` (type: `boolean`):

When enabled, generates and archives a permanent tamper-evident JSON and printable HTML Tax Audit Proof Certificate (with UTC timestamp, official VIES consultationNumber, 4-column address, and SHA-256 cryptographic signature) into your Apify Key-Value Store ('permanentAuditCertificateUrl').

## `downloadAssets` (type: `boolean`):

Optional alias for 'generateAuditCertificates': when enabled, saves permanent printable HTML and JSON VIES Tax Audit Proof Certificates with SHA-256 signatures into your Apify Key-Value Store for 10-year tax audit archiving.

## Actor input object example

```json
{
  "resultType": "verifications",
  "vatNumbers": [
    "IE6388047V",
    "DE260543043",
    "NL805734958B01",
    "SE556703748501"
  ],
  "domains": [
    "spotify.com",
    "zalando.de",
    "booking.com"
  ],
  "defaultCountry": "AUTO",
  "requesterVatNumber": "IE6388047V",
  "includeRegistryDetails": false,
  "onlyValid": false,
  "deduplicateEntities": true,
  "maxResults": 100,
  "onlyChangedStatus": false,
  "generateAuditCertificates": false,
  "downloadAssets": false
}
```

# Actor output Schema

## `verificationsDataset` (type: `string`):

Full dataset of verified EU & UK VAT numbers with official VIES consultation proof numbers (requestIdentifier), Reverse-Charge eligibility tiers, unmasked German/Spanish legal company names, 4-column parsed ERP addresses, GLEIF LEI codes, and SHA-256 audit certificate links.

## `complianceSummary` (type: `string`):

Aggregated EU/UK VAT audit compliance report with Reverse-Charge approval counts, invalid/revoked VAT alerts, upstream health diagnostics, and AI accounting prompts.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "vatNumbers": [
        "IE6388047V",
        "DE260543043",
        "NL805734958B01",
        "SE556703748501"
    ],
    "domains": [
        "spotify.com",
        "zalando.de",
        "booking.com"
    ],
    "requesterVatNumber": "IE6388047V"
};

// Run the Actor and wait for it to finish
const run = await client.actor("voxatools/eu-vat-vies-company-verifier").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "vatNumbers": [
        "IE6388047V",
        "DE260543043",
        "NL805734958B01",
        "SE556703748501",
    ],
    "domains": [
        "spotify.com",
        "zalando.de",
        "booking.com",
    ],
    "requesterVatNumber": "IE6388047V",
}

# Run the Actor and wait for it to finish
run = client.actor("voxatools/eu-vat-vies-company-verifier").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "vatNumbers": [
    "IE6388047V",
    "DE260543043",
    "NL805734958B01",
    "SE556703748501"
  ],
  "domains": [
    "spotify.com",
    "zalando.de",
    "booking.com"
  ],
  "requesterVatNumber": "IE6388047V"
}' |
apify call voxatools/eu-vat-vies-company-verifier --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,voxatools/eu-vat-vies-company-verifier"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ZsS8NfFlmH9UVq4rE/builds/PcRf7HbmCqx4vbKFk/openapi.json
