Home / VAT API / Switzerland

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.

GET /api/v1/validate/CH/{vat_number} VIES-backed Sub-100ms cached Free plan available

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

200 OK — valid number
{
  "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..."
}
FieldTypeDescription
validbooleantrue if the number is registered and active
statusstring"active", "inactive", "not_found", or "invalid_format"
company_namestring | nullRegistered company name (where available from authority)
addressstring | nullRegistered address (where available from authority)
country_codestringISO 2-letter code — always "CH" for this endpoint
vat_numberstringThe VAT number as sent in the request
cachedbooleantrue if result served from cache (valid: 24h, invalid: 1h)
request_idstringUnique 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.

POST /api/v1/validate
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" }
    ]
  }'
Response array
[
  {
    "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 statusMeaningAction
400Bad request — malformed VAT formatCheck the VAT format against the pattern below
401Missing or invalid API keyPass a valid Bearer token in the Authorization header
404Country not supportedCheck /vat-api for the full list of supported countries
422Validation failed — invalid formatThe number does not match the expected format
429Rate limit exceededBack off and retry after the Retry-After header value
503Upstream authority unavailableVIES/authority is temporarily down — retry with exponential backoff

Switzerland MWST/TVA/IVA format reference

PropertyValue
Country code (ISO)CH
Local nameMWST/TVA/IVA (UID-Nummer)
FormatCHE- + 3 digits + . + 3 digits + . + 3 digits
Regex^CHE-[0-9]{3}\.[0-9]{3}\.[0-9]{3}$
ExampleCHE-123.456.789
Standard rate8.1%
Validation sourceUID Register (format + live)
VIES supportedNo

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: