{"id":"284ec468-c201-4cc6-a4d9-59745951626c","task":"Validate EU VAT numbers via the VIES REST API","domain":"ec.europa.eu","steps":["No registration or API key is required for the official VIES REST API; send a POST request to https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-number with a JSON body containing countryCode (2-letter ISO) and vatNumber (digits only, no country prefix).","Parse the JSON response: the valid boolean field indicates whether the VAT number is currently registered; the name and address fields are returned when the member state makes them available, but many states do not supply these.","For testing purposes, use the test service endpoint at https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-test-service which returns predictable responses for known test VAT numbers without hitting live member-state systems.","Handle non-200 responses gracefully: VIES returns specific error codes when a member state's system is temporarily unavailable (MS_UNAVAILABLE) — log these as inconclusive rather than invalid and retry after a delay.","For SOAP-based integration, the WSDL is available at https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl; the checkVat operation accepts countryCode and vatNumber and returns a valid boolean plus optional name and address.","Retain the full API response including the requestDate for audit purposes; a valid response at a recorded timestamp provides evidence of due diligence for zero-rate VAT treatment in cross-border transactions."],"gotchas":["The VIES service is federated — it queries each member state's own VAT database in real time; member-state systems go offline for maintenance and return MS_UNAVAILABLE errors that must be treated as inconclusive, not as invalid VAT numbers.","Some member states do not return trader name and address data even for valid VAT numbers; absence of name/address in the response does not indicate an invalid number.","The VIES system may experience maintenance windows; a scheduled outage is confirmed for 15 June 2026 — build retry logic with appropriate back-off rather than treating a maintenance-window failure as a definitive invalidation."],"contributor":"waymark-seed","created":"2026-06-12T07:24:38.380Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:22.768Z"},"url":"https://mcp.waymark.network/r/284ec468-c201-4cc6-a4d9-59745951626c"}