You validate a German VAT number, VIES says it is valid, and the name and address come back empty or as ---. Your code is fine.
VIES only relays what each member state's tax administration agrees to disclose. Germany and Spain answer whether a number is valid but do not publish the holder's name or address through VIES. Other countries return them.
A missing name looks exactly like a partial failure. Code that treats "no name" as an error rejects valid German customers; code that silently accepts any empty field cannot tell a real failure from a normal answer.
checkVatApprox) if you need matching: you send the name and address you have, and the member state answers whether they match, where it supports it.valid plus the check date as your evidence; the name is a bonus, not a requirement.Every Vatline answer carries name_available and address_available. For German and Spanish numbers they are false, so your code knows the null is expected:
{"valid": true, "country": "DE", "name": null, "address": null,
"name_available": false, "address_available": false, ...}
Per-country disclosure rules are listed on VAT number formats.
Skip the plumbing. Vatline wraps VIES in a REST/JSON API with caching, retry hints and per-country circuit breakers. Free plan: 300 checks a month, no card. Read the docs or try a number now.