Guide · Accounts payable
Verify a VAT number on an invoice before paying it
An invoice arrives with a VAT number on it. Before the payment is approved, that number should resolve to a real company, and to the one named at the top of the page.
What the check catches
- A number that belongs to nobody. Invented, mistyped, or taken from a company struck off years ago.
- A number that belongs to somebody else. A real, valid number copied from a legitimate supplier onto an invoice issued by someone impersonating them.
- A company that is no longer active. The register says closed. The invoice does not.
- A zero-rated invoice you will have to justify. The intra-community exemption rests on the number being valid on the day of the transaction.
A checksum catches none of this. The check digit of a dissolved company is still correct, and so is the check digit of a number belonging to a different company than the one on the letterhead.
One call
Take the number off the invoice, look it up, compare what comes back with what is printed.
curl "https://api.vatlas.dev/v1/lookup/FR68005420120" \
-H "Authorization: Bearer $VATLAS_KEY"
The answer carries name, legalForm, address and
status, plus a meta block naming the register that answered and
the date it said so.
Three outcomes are worth separating on screen: the number resolves and the name matches, it resolves to a different company, or it resolves to nothing. Only the first should approve itself.
Names rarely match character for character. SARL against S.A.R.L., a trading name against a legal one. Compare loosely, send the near misses to a human, and block only on a clear mismatch.
Keep the proof
Accepting an invoice that charges no VAT is a decision you may have to justify years later. Ask for a documented check at the moment you make it:
curl "https://api.vatlas.dev/v1/lookup/FR68005420120?prefer=proof" \
-H "Authorization: Bearer $VATLAS_KEY"
Every call is also retained on your account with its date and its raw answer, readable through the audit endpoint. That is the dated trail an auditor asks for, without building a log of your own.
Verify at the moment of the decision. A lookup cached last quarter is a convenience, not a check. Companies close between the order and the invoice.
Suppliers you pay every month
A supplier verified once does not stay verified. Vatlas can watch the companies you already know and call back when a register changes its mind about one of them: see the monitor endpoint. The correction then lands before the next payment run instead of during an audit.
Frequently asked
Checking an invoice's VAT number, in short
Isn't a valid checksum enough?
No. A checksum says the number is well formed. It says nothing about whether a company exists behind it, whether it is still active, or whether it is the company on the invoice.
What if the name comes back empty?
A few member states publish validity and no name. The number is confirmed, the comparison cannot be made, and the invoice needs a human. Treat it as its own outcome rather than as a failure.
Does this prove the invoice is genuine?
It proves the number resolves to a company, and says which one. That rules out a whole class of fake invoices. It does not tell you the goods were delivered or that the bank details belong to the supplier.
Can I check my own customers' numbers the same way?
Yes, and the stakes are higher. If you zero-rate a sale to a number that turns out to be invalid, the VAT is yours to pay. Same call, proof kept the same way.
How far back does the record go?
Your lookups are retained on your account with their date and their raw answer, and read back through the audit endpoint.
Keep reading
Last updated 21 September 2026.