Async Validation
The async endpoints accept one or more VAT/GST numbers and return 202 immediately. Results are delivered to your webhook URL when validation completes. Available on Pro and Business plans. Requires a webhook URL to be configured.Single async validation
Endpoint:POST /v1/validate/async
Submit one VAT number for background validation.
Request
Response (202 Accepted)
Batch async validation
Endpoint:POST /v1/validate/async/batch
Submit multiple VAT numbers for background validation. Pro: up to 200 items per batch. Business: up to 1,000 items per batch.
Request
Response (202 Accepted)
batch.completed webhook event is delivered with all results.
When to use: periodic revalidation of your customer database, large data migrations, bulk compliance checks.
How it works
- You submit a validation request. Vatly validates the format immediately.
- Valid items are accepted (202) and queued for background processing.
- Usage is counted at acceptance time, not when the result is delivered.
- Vatly validates each item against the upstream service (VIES, HMRC, BFS, BRREG, or ABR).
- Each validated item writes to the same validation records as the sync endpoint. Cache, status page data, and usage analytics stay consistent.
- If an upstream service is down, Vatly retries automatically with exponential backoff (up to 5 retries over several hours).
- When processing completes, the result is delivered to your webhook URL.
Error handling
Format errors are returned immediately with a 422 status. The request is never queued. Upstream errors (VIES down, HMRC timeout, etc.) are retried automatically. After all retries are exhausted, avalidation.failed webhook is sent with the error details.
Batch errors are per-item. If 3 out of 200 items fail upstream validation, the batch.completed webhook includes 197 successes and 3 failures. The batch as a whole always completes.
Missing webhook configuration returns 400 with error code webhook_not_configured. Configure a webhook URL before using async endpoints.
Free tier returns 403 with error code tier_insufficient. Async validation requires Pro or Business.
| Scenario | Response |
|---|---|
| Invalid VAT format | 422 immediately (not queued) |
| No webhook configured | 400 webhook_not_configured |
| Free tier | 403 tier_insufficient |
| Batch too large | 422 validation_error |
| Monthly quota exceeded | 429 rate_limit_exceeded |
| Upstream down (during processing) | Retried automatically, validation.failed webhook after exhaustion |
SDK support for async validation is coming soon. For now, use the REST API directly.