Build1 distinct publisher3 min readPublished
The European Commission's VAT status endpoint answers only in the present tense and stores nothing, so one operator started keeping every sample. Five days of history is enough to show the member states do not fail together.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Call check-status and you get one string per country, describing this instant [3]. Nothing behind it is a time series, so "is Germany up" has an answer and "is Germany up at 02:00" does not [1][2]. The Commission publishes the present tense and keeps none of it, which makes it a smoke detector you have to stand next to. The sampler exists to fix that: 96 reads per state per day, every one retained [4].
The parsing rule is the part I would copy into my own client. Only the literal string `Available` counts as up, and every other value the endpoint returns, including values the author had not seen before, is counted as down rather than quietly discarded [6]. The other default, where an unrecognised status reads as healthy, converts a wording change at the Commission into a gap in your own availability data that nobody notices for a quarter.
The residuals are where the engineering is. 198 unavailable samples out of 15,344 is 1.29% [1]. Germany's 88 misses out of 548 samples is 16.06% [3], which is 12.4 times the fleet-wide rate [3]. Eighty-eight samples spaced fifteen minutes apart span 22 hours of the window [4]; Latvia's 61 span about 15 hours and Ireland's 25 about six [5]. The ten remaining states that missed anything sum to 24 misses, exactly 198 minus 174 [7], so the table closes against its own total.
For Germany's 83.94% to say anything about your billing flow, two conditions have to hold. Your calls have to land in the hours where the misses actually sit, which is why the per-country hour profiles in the report are the usable output and the percentage is the summary [19]. And the Commission's self-report has to agree with what a live `checkVat` does for your request, which the author does not claim: the status feed can disagree with a real call, and it can lag a member state going down [16].
The post is unusually honest about its own shelf life. A comment left in the source says every figure comes from a single script run and is to be replaced by a 30-day window, and it sets the rule that a claim absent from the script output does not belong in the post [18][20]. That rule is doing work already, because the sample count drifts from the label: 548 samples at 96 a day is 5.7 days, not five [8]. The author says five days establishes a pattern that repeats daily and declines to extrapolate an annual figure from it [17]. That is the right reading of a window this short, and it is more restraint than most vendor status pages manage.
The figure worth putting in a runbook, then, is not the availability percentage. It is the hour range per country where the misses cluster, because a job scheduler can act on that.
Ranked by verification strength, evidence, and original report placement.
Germany (DE) recorded 83.94% availability with 88 missed samples, the worst in the dataset.
Latvia (LV) recorded 88.87% availability with 61 missed samples.
Ireland (IE) recorded 95.44% availability with 25 missed samples.
The European Commission runs an endpoint that reports whether each member state's VAT validation backend is reachable at the moment of the call.
The endpoint keeps no history, so it cannot answer whether a given member state is reliably down at the time a nightly job runs.
The data source is the Commission's own GET /taxation_customs/vies/rest-api/check-status, which returns a per-country availability string.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 31, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
A VAT check is true for one instant: the retention question is which moments you re-run it1 distinct publisher
build
One Mutable vat_id Column Is An Audit Failure With A Delay Fuse1 distinct publisher
build
The Dutch VAT checksum stopped working in 2020 and your billing pipeline may not know1 distinct publisher
build
France's e-invoicing deadline is really a bill for supplier data nobody verified1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One script run whose arithmetic holds
The internal bookkeeping is better than most measurement posts: 198 unavailable readings out of 15,344 is exactly the 1.29% complement of the stated 98.71%, the three worst states' misses sum precisely to the claimed 174, and the remaining ten sum to the leftover 24. Germany's 88 misses work out to 16.06% of its samples, 12.4 times the fleet rate, which is the whole argument in one ratio. But every one of those figures comes from a single script run against the Commission's own self-assessment, no one has re-collected it, and the author's own note at the top of the piece says these numbers were supposed to be superseded.
One sampler, no second observer
What exists is a single pipeline: 15-minute polls across 28 codes, 2,688 reads a day, every sample kept, published once on dev.to with a canonical copy on the author's own domain. Nobody else in this reporting keeps this history, consumes the dataset, or has rebuilt it. The endpoint being measured is official EU infrastructure with obvious downstream users, but nothing here counts them, so the adoption on show is the measuring, not the measured.
Argues below its own findings
The headline number is disowned in the sentence after it appears — "true and it is worthless" — the annual uptime figure that would have made a better headline is explicitly refused, and both caveats are placed before the charts rather than after them. That is claiming less than the data would tolerate. The offset is procedural rather than rhetorical: figures the author had already flagged for replacement went out anyway, with the recompute note visible in the text, so a reader has to decide how much a five-day window from August is still telling them.
Measurement and product share a domain
The canonical version lives at vatnode.dev, the first-person plural implies a running service rather than a hobby, and the conclusion — stop treating VIES as one dependency, handle member states individually — is precisely the problem a VAT validation vendor would sell into. None of that is hidden, but none of it is described either: the post never says what the domain does. The verification path is also closed by construction, since the dataset is self-collected against the Commission's self-report and reproducing it means running the same 2,688 daily reads yourself.
Consistent inside, unchecked outside
Single publisher, single author, single run — and one small seam: 548 samples at 96 a day is 5.71 days, not the five the method section advertises. That gap does not move the per-country story, which reconciles cleanly at every step, but it is the kind of thing a second pass would have caught. Read the Germany window as a real and repeating nightly pattern; do not read any of these percentages as a durable uptime number.