VIES API
Analytics & DataValidate EU VAT identification numbers against the European Commission VIES registry through viesapi.eu. Agents confirm a VAT number is genuinely registered before applying a zero-rated invoice.
What This Integration Enables
VIES is not one register. It is a query layer in front of 27 national VAT registers plus Northern Ireland, and its answer for any given number is only as good as the availability of the one member state that holds it. That produces a third outcome most integrations quietly discard. A lookup can come back valid, it can come back invalid, and it can come back unanswered because the Italian or Greek register happens to be offline at that moment. Collapsing the third case into the second is the mistake that costs money, because it turns a temporary outage into a customer who appears not to exist and an invoice raised on the wrong basis. This connector exposes the difference explicitly through Get VIES System Status, which returns an overall availability flag plus a per-country status of Available, Unavailable, or Unknown.
The validation surface itself is straightforward and deliberately so. Validate VAT Number checks a number against VIES and returns a valid flag, the trader name and address as the member state publishes them, and a consultation number that can be retained as the record of the check. Country selection applies the correct two-letter prefix automatically, or you can pass the fully prefixed number. Validate VAT Number With Parsed Address does the same work and additionally splits the free-form trader name and address into structured components, name and legal form on one side, country, postal code, city, street, street number, and house number on the other, which is what you need when the result is going into CRM or accounting fields rather than into a text box. The vendor is honest that this parsing relies on external algorithms and is not guaranteed correct for every record, and a flow should treat it accordingly. For volume there is an asynchronous path: Submit Batch Validation accepts between 3 and 99 numbers and returns a token, and Get Batch Validation Result reads the outcome once processing completes, typically after two to three minutes. Get Account Status reports plan limits, per-function pricing, and consumption so far, which lets a flow stop itself before it walks into its own monthly ceiling.
Without FlowRunner
With FlowRunner
Use Case Scenarios
Zero-Rating at the Invoice Moment
An order for a customer in another member state is ready to invoice from Xero or QuickBooks Online. The agent runs Validate VAT Number against the customer's number, stores the returned consultation number and timestamp on the invoice record, and compares the registered trader name that VIES returned against the customer name the order was raised under. A name that has changed is not automatically a problem, and it is always worth knowing about. The check runs on the invoice rather than on the account, because a number that validated at quote time is not evidence about a number at invoice time, and the gap between those two dates is where the risk actually lives. Whether the supply qualifies for zero-rating remains a determination your finance team makes; what the agent supplies is the registry answer and the record that it was asked.
Cleaning a Customer Database in Batch
A customer table carries thousands of VAT numbers captured over years from web forms, imports, and manual entry. The agent chunks them into batches of between 3 and 99, since the service rejects anything smaller or larger, and calls Submit Batch Validation for each, holding the returned token. It waits two to three minutes before the first attempt at Get Batch Validation Result and retries on error code 62, which means the batch is still processing rather than that anything went wrong. Results come back as a numbers array of successful VIES records and an errors array describing what could not be resolved, and the flow writes each side to a different place. For the records that resolved, Validate VAT Number With Parsed Address supplies structured name and address components that overwrite user-typed values in Snowflake or the CRM, with the parsing caveat noted on the field so a reviewer knows which values came from an algorithm.
Running a Large Validation Pass Without Burning the Plan
Before a monthly revalidation sweep, the agent runs Get Account Status and reads the monthly request limit, whether over-plan usage is permitted, and how many requests have already been consumed by lookup type. If the sweep will not fit inside what remains, it does not start and half-finish, it reports the shortfall to finance in Slack with the arithmetic. It then runs Get VIES System Status and partitions the work by country, sending only the member states currently reporting Available and parking the rest. Customers in an Unavailable country are not marked invalid and are not silently skipped, they are queued for a retry with the outage recorded against them. Where a Polish counterparty also needs national-registry checks, the same flow can hand off to NIP24 for VAT status and bank account verification against the Ministry of Finance list.
Human-in-Loop Highlight
The gate is the inconclusive result, not the negative one. An invalid number is easy: the flow holds the invoice and asks the customer for a correct one, and nobody needs a decision from a human to do that. The hard case is when Get VIES System Status reports the customer's member state as Unavailable, or a lookup fails without a verdict, and there is a shipment leaving today. The agent is now facing two options that are each wrong under different circumstances, applying the zero rate on an unverified number or charging domestic VAT to a customer who is genuinely registered, and it has no basis for choosing between them. So it pulls the andon cord. It posts to billing: "Order 5518, customer [name], VAT number [number], country IT. VIES reports the Italian register Unavailable as of [timestamp]. Last successful consultation for this number: [number], dated [date]. Invoice with the zero rate on the prior consultation, charge domestic VAT and credit later, or hold the invoice until the register returns?" A person picks, and the reason is recorded next to the order. That is the digital andon cord doing the job it exists for, and it is why human-in-the-loop is a default here rather than an escalation path someone remembers to build. Clean valid results, which is nearly all of them, never pause for anybody.
Agent Capabilities
6 actionsVAT Validation
2- Validate VAT Number Checks an EU VAT identification number against the European Commission VIES registry and returns a valid flag, the registered trader name and address as VIES returns them, and a VIES consultation number that can be retained as the record of the check. Select a country to have the two-letter prefix added automatically, or pass the fully prefixed number.
- Validate VAT Number With Parsed Address Validates exactly as Validate VAT Number does, and additionally splits the free-form trader name and address into structured components: name, legal form and its canonical identifier, then country, postal code, city, street, street number, and house number. Use it when the result is going into CRM or accounting fields. The vendor notes that parsing relies on external algorithms and cannot be guaranteed correct for every record.
Batch Validation
2- Submit Batch Validation Uploads a batch of EU VAT numbers for asynchronous validation and returns a batch token. Accepts between 3 and 99 numbers per batch, and rejects anything outside that range. Use it instead of repeated single lookups when checking a whole customer list.
- Get Batch Validation Result Retrieves the results of a submitted batch using its token, returning a numbers array with one VIES record per successfully checked number and an errors array describing the ones that could not be resolved. While the batch is still processing the service reports error code 62, so allow two to three minutes before the first attempt and retry on that code rather than treating it as a failure.
System and Account
2- Get VIES System Status Reports the current availability of the VIES system and of each member state's national register, returning an overall available flag plus a countries array with a status of Available, Unavailable, or Unknown per country. Use it before a large run, and use it to tell an outage apart from an invalid number after a failed lookup.
- Get Account Status Returns the connected account's plan name, subscription and per-item pricing, monthly request limit, whether over-plan usage is allowed, which functions the plan enables, and requests already consumed broken down by lookup type. Use it to monitor remaining quota and to fail a workflow early rather than mid-batch.
Frequently Asked Questions
What can FlowRunner do with VIES API?
FlowRunner agents can run Validate VAT Number, Validate VAT Number With Parsed Address, and Submit Batch Validation in VIES API, plus 3 more actions.
Does connecting VIES API to FlowRunner require OAuth?
No. VIES API connects to FlowRunner with basic authentication (a username and password), no OAuth flow required.
Can VIES API trigger a FlowRunner workflow automatically?
VIES API doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with VIES API
$100 in credits. No card required. Connect in minutes.