Not having a VAT number is acceptable. But effort should be taken.
Before a VAT number is left blank, evidence about what efforts where taken should be recorded. The employee who did the effort, a description of the steps, and any information recieved.
You would start with a "do you have the VAT number". If they say they don't, it walks them through the steps required to find it. It provides a way to do a google search (either in-app or externally). They are then asked to write out what they did or did not find both by-hand and via a selection of options.
They see the resulting data "at X date, employee (Name and ID) searched for the VAT number of Bob's Hardware via an internet search. Nothing was found because $information$. X minutes and Y seconds passed from starting the form to ending it."
Then they click "I affirm the above is true".
Next step walks them through getting the phone number, including helpful links to internet searched and various databases. For each search, a system similar to the above VAT thing is done.
If they have a valid phone number, they are told to call it. Again, if this fails to generate a VAT number, the reasons are entered, and whom did it, when, and how much time was spent is recorded.
In addition, the person entering the data is asked "would an attempt in the next week be likely to work" (ie, calling failed because it was after hours in the office), and if so a guess asto when a next attempt would be useful (where they can enter open hours and days).
The next time someone edits the file, if the VAT number is missing but it was tried recently, they are quickly asked if they happen to have the VAT and let on. If the previous person guessed it would be worth trying again soon, and that time is passed, the new person is asked to do some of the steps again.
If it has been a while, the new editor is asked to go through all of the above steps again.
This does a few things. First, it forces the effort to be done, or at least faked. Entering the effort you do is easier than the effort, so it isn't that inefficient. Your name and employee ID and some estimate of how long you took at it are recorded, and you are shown it, leading to some possible guilt if someone simply wants to get the form out of the way and clicks "sure, I tried and didn't find anything".
Information about when to retry is recorded, as is information for the next person who tries. Forcing a retry is only done occassionally, after what you judge to be a reasonably long time when new information might come to light (maybe a month, maybe less, maybe more).
You can have supervisor overloads that let you mark a file as "expect to never be able to find the VAT for $reasons". If you do, have each person editing look at the reasons and either record they agree with them, or mark them as "maybe we should review this" for later. (Don't punish this immediately with work, however).
The end goal is to make doing the right thing easier than the wrong thing, record doing the wrong thing attributed to the person logged in, and don't make doing the right thing way harder than it should be.
You could also allow an override option, for when things are bad. The employee somehow swears that the situation is an emergency and the data must be saved. Such a system should force either the supervisor or employee to go back and revisit the issue and approve the emergency or validate the VAT after the fact. This is tricky, because it is easy for business as usual to become emergency mode. On the other hand, it is easy for the app to be unusable because of the forced input of data, when they really really need to just update some other field and it is not practical to look for the VAT right now.