Error Reference
Every error response includes a machine-readablecode, a human-readable message, and a docs_url linking to the relevant page below.
All error codes
| Code | HTTP Status | Description |
|---|---|---|
missing_parameter | 400 | Required query parameter vat_number not provided |
invalid_vat_format | 422 | VAT number format unrecognized or country code unsupported |
unauthorized | 401 | Invalid or missing API key |
rate_limit_exceeded | 429 | Monthly quota exhausted |
burst_limit_exceeded | 429 | Per-minute burst limit exceeded |
upstream_unavailable | 503 | Upstream service (VIES, HMRC, BFS, BRREG, or ABR) is unreachable or returned an error |
tier_insufficient | 403 | Feature requires a higher tier (e.g. batch validation on Free) |
validation_error | 422 | Request body validation failed (e.g. batch endpoint) |
invalid_json | 400 | Request body contains malformed JSON |
not_found | 404 | Requested resource not found (e.g. unknown country code for rates) |
forbidden | 403 | Access to this resource is forbidden (e.g. demo key restriction) |
key_limit_reached | 403 | Maximum number of API keys reached for this account |
key_revoked | 409 | The API key has already been revoked |
internal_error | 500 | An unexpected server error occurred |
upstream_member_state_unavailable | 503 | Specific EU member state VIES service is unavailable |
webhook_not_configured | 400 | No webhook URL configured for async validation |
Handling errors with the SDKs
The@vatly/node and vatly (Python) SDKs provide typed error classes so you can match on specific error types. The Node.js SDK returns { data, error } from every method, while the Python SDK raises exceptions.
code, message, and docsUrl (Node.js) / docs_url (Python) properties matching the error codes above.