Switzerland MWST/TVA/IVA Validation API
Validate Switzerland MWST/TVA/IVA numbers via REST API. Backed by UID Register (format + live) — returns registration status, company name, and address in a single call.
Quick start
CURL
curl -H "Authorization: Bearer YOUR_API_KEY" \ http://localhost:3000/api/v1/validate/CH/CHE-123.456.789
Single validation
Validate one Switzerland MWST/TVA/IVA number. Returns full company details for valid numbers.
const res = await fetch(
'http://localhost:3000/api/v1/validate/CH/CHE-123.456.789',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await res.json();
/*
{
"valid": true,
"status": "active",
"company_name": "Example GmbH",
"address": "Musterstraße 1, Switzerland",
"country_code": "CH",
"vat_number": "CHE-123.456.789",
"cached": false,
"request_id": "req_01abc..."
}
*/Response format
{
"valid": true,
"status": "active",
"company_name": "Example Switzerland Ltd",
"address": "Musterstraße 1, Switzerland",
"country_code": "CH",
"vat_number": "CHE-123.456.789",
"cached": false,
"request_id": "req_01abc..."
}| Field | Type | Description |
|---|---|---|
| valid | boolean | true if the number is registered and active |
| status | string | "active", "inactive", "not_found", or "invalid_format" |
| company_name | string | null | Registered company name (where available from authority) |
| address | string | null | Registered address (where available from authority) |
| country_code | string | ISO 2-letter code — always "CH" for this endpoint |
| vat_number | string | The VAT number as sent in the request |
| cached | boolean | true if result served from cache (valid: 24h, invalid: 1h) |
| request_id | string | Unique request ID for support and audit logs |
Batch validation
Validate up to 25 numbers in a single POST request. Numbers are processed in parallel — ideal for onboarding flows and nightly reconciliation.
curl -s -X POST http://localhost:3000/api/v1/validate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"numbers": [
{ "country": "CH", "vat": "CHE-123.456.789" },
{ "country": "CH", "vat": "CHE-123.456.789" }
]
}'[
{
"vat": "CHE-123.456.789",
"valid": true,
"status": "active",
"company_name": "Example Ltd",
"country_code": "CH",
"cached": false
},
{
"vat": "CHE-123.456.789",
"valid": false,
"status": "not_found",
"country_code": "CH",
"cached": false
}
]Error codes
| HTTP status | Meaning | Action |
|---|---|---|
| 400 | Bad request — malformed VAT format | Check the VAT format against the pattern below |
| 401 | Missing or invalid API key | Pass a valid Bearer token in the Authorization header |
| 404 | Country not supported | Check /vat-api for the full list of supported countries |
| 422 | Validation failed — invalid format | The number does not match the expected format |
| 429 | Rate limit exceeded | Back off and retry after the Retry-After header value |
| 503 | Upstream authority unavailable | VIES/authority is temporarily down — retry with exponential backoff |
Switzerland MWST/TVA/IVA format reference
| Property | Value |
|---|---|
| Country code (ISO) | CH |
| Local name | MWST/TVA/IVA (UID-Nummer) |
| Format | CHE- + 3 digits + . + 3 digits + . + 3 digits |
| Regex | ^CHE-[0-9]{3}\.[0-9]{3}\.[0-9]{3}$ |
| Example | CHE-123.456.789 |
| Standard rate | 8.1% |
| Validation source | UID Register (format + live) |
| VIES supported | No |
Switzerland raised its VAT rate from 7.7% to 8.1% (standard) in January 2024. Swiss UID numbers follow the format CHE-XXX.XXX.XXX and are validated through the BFS UID register. Switzerland is not an EU member, so VIES does not apply.
Frequently asked questions
What does the TaxID API return for a Switzerland MWST/TVA/IVA validation?
For a valid Switzerland MWST/TVA/IVA number the API returns: `valid: true`, `status: "active"`, plus `company_name` and `address` where available from UID Register (format + live). For invalid numbers it returns `valid: false` with a reason code. All fields are documented in the API reference.
How fast is the Switzerland MWST/TVA/IVA validation API?
Cached results (valid numbers are cached 24h, invalid 1h) respond in under 10ms. Uncached requests that require a live lookup via UID Register (format + live) typically complete in 100–400ms. The `cached` field in the response tells you whether the result came from cache.
What is the Switzerland MWST/TVA/IVA number format?
Switzerland MWST/TVA/IVA numbers (MWST/TVA/IVA (UID-Nummer)) follow the pattern: CHE- + 3 digits + . + 3 digits + . + 3 digits. A valid example is `CHE-123.456.789`. The TaxID API validates the format locally before making any live request, so malformed numbers fail instantly without consuming your quota.
Can I validate multiple Switzerland MWST/TVA/IVA numbers in one request?
Yes. The batch endpoint (POST /api/v1/validate) accepts up to 25 VAT numbers in a single request, processed in parallel. This is ideal for bulk onboarding flows, nightly reconciliation jobs, or importing customer lists. Each item in the response array maps 1-to-1 with your input array.
Start validating Switzerland MWST/TVA/IVA numbers
Free plan — 100 validations/month. No credit card required.
Integrate with your stack:
More Switzerland resources:
Validate VAT in other countries: