# Request Status Codes
For all requests, we will return an HTTP status code that indicates a success or the problem that has led to the failure.
A successful request will be returned with status code 200
# Error Response Body
Error responses are JSON objects with the following fields:
| Field | Presence | Description |
|---|---|---|
message | always | A human-readable description of the error |
errors | 422 only | An object mapping each invalid parameter to an array of validation messages |
info | 422 only | A sentence containing a deep link to the matching section of this page, e.g. For more information, see documentation: https://vatcheckapi.com/docs/status-codes#_422. Sent alongside errors on 422 responses raised by request validation (e.g. a missing vat_number); other errors omit it |
error | 401, 403, 404, 429 | An object with a stable machine-readable code (e.g. invalid_api_key, quota_exceeded) and the same human-readable message |
actions | 401, 403, 404, 429 | An object of suggested next steps as URLs, e.g. upgrade and docs |
quota | quota 429 only | The current quota state: limit, used, remaining and resets_at; plus required (the request's cost) when a request that costs more than your quota allows is refused before it runs |
{
"message": "Validation error",
"errors": {
"vat_number": [
"The vat number field is required."
]
},
"info": "For more information, see documentation: https://vatcheckapi.com/docs/status-codes#_422"
}
# API Error Codes
# 401
The request is not authenticated: no API key was sent (No API key found in request) or the key is invalid (Unauthorized).
# 403
You are not allowed to make this request — for example, the request's referrer is not on your API key's referrer whitelist, or the API key belongs to a different EverAPI product.
An IBAN batch (opens new window) request answers 403 with the code plan_upgrade_required if your plan does not include batch requests.
If your plan does not include an endpoint (e.g. e-invoice validation (opens new window)), the error code is plan_upgrade_required and actions.upgrade links to the plans.
# 404
A requested endpoint does not exist
# 422
Validation error, please check the list of validation errors: here
# 429
You have hit your rate limit or your monthly limit. For more requests please upgrade your plan (opens new window).
An IBAN batch (opens new window) is checked against your remaining quota before it runs. If its cost would use up the remaining quota, it is refused, quota.required holds its cost, and nothing is processed or billed. The code names the quota that runs short: quota_exceeded (monthly quota), grace_quota_exceeded (grace quota after a failed payment) or overage_quota_exceeded (overage budget). Send fewer IBANs or upgrade your plan.
Every e-invoice (opens new window) request is checked against your remaining quota before it runs: 1 request for an XML file, 2 for a PDF. If the quota cannot pay for it, the API answers 429 with quota.required set to that amount, and nothing is processed or counted. The error code names the quota that runs short: quota_exceeded, grace_quota_exceeded or overage_quota_exceeded.
# 500
Internal Server Error - let us know: support@vatcheckapi.com
# 503
The VAT validation service of the requested country is currently not available. You can retry the request at any point to check again.
For EORI checks (opens new window) (/v2/eori), the register for the number did not answer in time or is failing, or, for GB numbers, HMRC's rate limit (opens new window) is used up for the moment. When the response has a Retry-After header, retry after that many seconds (currently always 1); otherwise retry a little later. A 503 is not counted against your quota.
For e-invoice validation (opens new window), 503 means that the validation service is unavailable, busy or did not finish in time. The request is not counted; retry it later.
# Validation errors
# Missing vat_number
The vat_number parameter is required
# Missing country_code
The country_code parameter is required, if the given vat_number has no country code.
# Unsupported country_code
The given country_code (or the country prefix of the vat_number) is not one of the supported countries (opens new window).
# Missing or too long eori_number
The eori_number parameter of /v2/eori is required, must be a string and must not be longer than 64 characters. country_code, when sent, must be a string as well.
# Unsupported EORI country
The eori_number does not start with a supported country code (opens new window): it starts with another country's code (such as EL or US, also when country_code is sent), or it has none and country_code does not name a supported one. The message (under errors.country_code) lists the supported codes. Greece is GR in EORI numbers, not EL.
# Invalid VAT number
The given vat_number could not be validated. Unlike the parameter errors above, this response contains only a message ("Invalid VAT number.") and no errors object.
# Missing or invalid iban
The iban parameter of /v2/iban (opens new window) is required. It must be a string of at most 64 characters of valid UTF-8 text. A string that is not a valid IBAN is not an error: the response is a 200 with valid: false.
# Missing or invalid ibans
The ibans field of /v2/iban/batch (opens new window) is required and must hold at least one IBAN. Each entry must be a string of at most 64 characters of valid UTF-8 text; an invalid entry is reported under its position in the list as you sent it, counting from 0 (e.g. ibans.1 for the second entry), even when duplicates come before it.
# Too many IBANs
A batch can contain at most 100 IBANs, counted after normalisation (spaces removed, upper case) without duplicates, and at most 1,000 entries before that.
# IBANs in the query string
The batch reads ibans from the request body only. An ibans parameter in the query string is refused with the message "Send the IBANs in the request body, not in the query string."
# E-invoice: missing invoice
/v2/einvoice/validate got no file: send it as the request body (Content-Type: application/xml or application/pdf), as the multipart field file, or base64-encoded as the JSON property content_base64. The error is listed under file, or under content_base64 for a JSON request.
# E-invoice: not an XML or PDF file
The file sent to /v2/einvoice/validate is neither XML nor a PDF.
# E-invoice: file too large
The invoice is larger than 10 MB (after base64 decoding for JSON).
# E-invoice: invalid content_base64
content_base64 is not valid base64.
# E-invoice: invalid option
format must be one of auto, xrechnung, zugferd or en16931, language one of en or de, and filename, if sent, a string of at most 255 characters.