Build1 publisher3 min readPublished
EU SaaS sellers should re-check VAT IDs on the renewal event before each invoice
EU B2B SaaS sellers should re-check a customer's VAT ID at every renewal, a vatnode.dev post argues, because each invoice is a new supply. It hooks the check to the renewal event and sends failures to a person, since a VIES miss can mean an outage.
The Engineer · Build desk

What happened
- A vatnode.dev post argues that a VAT ID checked at purchase proves the number was valid on that day only, and says nothing about the day the next invoice is generated.
- The post's fix is to hook the billing provider's renewal event and re-check the VAT ID immediately before the next invoice is built.
- Registrations lapse through voluntary deregistration, strike-off, insolvency or restructuring into a new entity, and none of those events notifies the seller.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- decision Billing code has to support a manual review path for failed renewal checks, because the post's rule leaves the tax treatment decision to a person, not to the invoice run.
- constraint A live VIES query inside invoice build makes member-state database availability a dependency of every renewal invoice the system produces.
- exposure Sellers trusting a stored 'valid' flag can keep applying reverse charge to customers whose VIES status was suspended while their domestic number still works, as with Spain's ROI.
The post's premise is that every renewal is a new supply, and that the evidence for reverse charge has to be obtained for that supply [2]. The legal chain it lays out is short. For an electronically supplied B2B service, VAT is normally due where the customer is established under Article 44 of the VAT Directive, and the customer self-accounts under the reverse charge in Article 196 [8]. The valid VAT number is part of the evidence a seller relies on under Implementing Regulation 282/2011, Article 18, and the post reads that evidence as covering one invoice at a time [8]. That reading belongs to the author of the piece, originally published at vatnode.dev [16]. The post calls itself general information, not tax advice [13].
A stored value goes stale without telling anyone. Between the first invoice and the twelfth renewal, a customer can deregister, be struck off, go insolvent or restructure into an entity with a new number, and none of it reaches the seller [5]. Some member states can suspend a business's intra-EU VIES status while its domestic number stays active for local invoicing. The post cites Spain's ROI as a documented case [6]. A boolean in the customers table cannot see that split. A format check cannot see it either, because format-valid and VIES-valid are separate tests [11].
Renewal is weighed against three other triggers. Signup checks a stored attribute once, off the critical path of account creation. Checkout checks live for a single order. A periodic sweep re-validates the whole base on a schedule to clean up drift after the fact [4]. Renewal re-checks the same number on the cadence at which a new invoice is about to be issued [4]. I think renewal is the correct hook, since its timing is set by the supply the evidence is meant to support.
I part company with the post on cost. It says the check costs nothing you were not already going to spend time on [14]. That holds until VIES is slow on the first of the month. A VIES answer is a live query against national databases, and the European Commission does not guarantee its accuracy because the data and control sit with each member state [10]. Put that query inside invoice build and VIES uptime becomes part of your billing path. The post itself lists a temporary outage as one cause of a false negative [9].
Its handling of a failure is the part I would copy. A number that stops validating at renewal is a compliance-risk signal for the next invoice, not an automatic reclassification [9]. Besides an outage, the post names a restructured customer who has not yet sent the new ID, or a genuine deregistration, and it sends the case to a human instead of straight to a billing change [9]. In practice, the renewal handler should store the VIES response and its timestamp against the upcoming invoice. A failure opens a review item before anything on the invoice changes.
Cadence stays a choice. No EU rule sets how often to re-check, and the post treats frequency as a risk decision to make with a tax adviser [7]. The scope is recurring B2B SaaS across the EU-27 [15]. Goods follow a different regime: the parallel mechanism is Article 138 zero-rating of the intra-Community supply, where the valid VAT ID has been a substantive condition since the 2020 Quick Fixes [12].
What to watch
- Guidance from the Commission or a member-state tax authority on how often VAT IDs must be re-verified for recurring supplies would replace the adviser-set cadence the post describes.
- Billing providers adding a native VIES check to their renewal events would move this logic out of seller-built handlers.
- Evidence on VIES outage frequency around billing-cycle peaks would settle whether a blocking check inside invoice build is viable.