Swiss VAT Number Validation API: CHE Format

By Remco from Avatcado

Switzerland and Liechtenstein use their own VAT system, separate from the EU's VIES. Swiss VAT numbers are managed by the Federal Statistical Office (BFS) through the UID Register. This guide covers how Swiss VAT numbers work, how to validate them, and how Avatcado handles it for you.

What is a Swiss VAT number?

Swiss VAT numbers follow the UID (Unternehmens-Identifikationsnummer) format. The full format is CHE-NNN.NNN.NNN MWST, where:

  • CHE is the ISO 3166-1 alpha-3 country code for Switzerland
  • The 9 digits form the unique identifier, where the 9th digit is a MOD11 checksum
  • The suffix indicates the language region: MWST (German), TVA (French), or IVA (Italian)

All three suffixes are equivalent. A business with CHE-123.456.788 MWST is the same entity as CHE-123.456.788 TVA. For the full format reference with a free checker, see the Swiss VAT number format page.

UID vs VAT registration

An important distinction: having a UID does not mean a business is VAT-registered. The UID Register tracks all Swiss enterprises, but only some are registered for VAT (MWST/TVA/IVA). A business can have a valid UID but not be VAT-registered if their revenue is below the CHF 100,000 threshold.

When you validate a Swiss VAT number, you need to check both: (1) does the UID exist, and (2) is the entity actively registered for VAT? Avatcado checks both and only returns valid: true when the entity has active VAT registration.

The BFS UID Register API

The Swiss Federal Statistical Office (BFS) provides a public SOAP API for UID lookups. It requires no authentication, but has a strict rate limit of 20 requests per minute. The API uses eCH Swiss e-government standards for its XML schema. You can also look up individual entries manually through the public UID register.

Key details:

  • Endpoint: https://www.uid-wse.admin.ch/V3.0/PublicServices.svc
  • Protocol: SOAP 1.1
  • Authentication: none (public)
  • Rate limit: 20 requests per minute per caller
  • Returns: company name, address, VAT registration status, legal form

MOD11 checksum validation

The 9th digit of a Swiss UID is a MOD11 checksum. Before calling the API, you can validate the format locally. The algorithm uses weights [5, 4, 3, 2, 7, 6, 5, 4] on digits 1-8, takes the sum modulo 11, and the check digit is 11 - remainder. If the remainder is 1, the number is invalid (no valid check digit exists).

Liechtenstein: same system

Liechtenstein and Switzerland form a common VAT territory. Liechtenstein businesses are registered in the same Swiss UID Register with CHE-format numbers. When you validate a Liechtenstein VAT number through Avatcado, it routes to the same BFS API but returns country_code: "LI" in the response.

Validating with Avatcado

Avatcado handles all of this automatically. Pass any Swiss or Liechtenstein VAT number to the same endpoint you use for EU, UK, Norwegian, and Australian numbers:

curl "https://api.avatcado.com/v1/validate?vat_number=CHE-123.456.788%20MWST" \
  -H "Authorization: Bearer avat_live_YOUR_KEY"

Response:

{
  "data": {
    "valid": true,
    "vat_number": "CH123456788",
    "country_code": "CH",
    "company": {
      "name": "Example AG",
      "address": "Bahnhofstrasse 1, 8001 Zurich, CH"
    },
    "requested_at": "2026-03-26T12:00:00.000Z"
  },
  "meta": {
    "request_id": "req_abc123"
  }
}

Avatcado normalizes all input formats automatically:

  • CHE-123.456.788 MWST, CHE123456788TVA, CHE123456788, CH123456788 all work
  • Dashes, dots, spaces, and suffixes are stripped
  • MOD11 checksum is validated before making the upstream call
  • Results are cached for 25 days to stay within the BFS rate limit

Swiss VAT rates

Switzerland has three VAT rates: 8.1% (standard), 3.8% (accommodation), and 2.6% (food, books, medicines). Liechtenstein uses the same rates. Both are available through the /v1/rates endpoint; see current Swiss VAT rates for the full breakdown.

Test mode

Use a avat_test_ API key with these magic numbers:

  • CH111111118 - valid, VAT-registered
  • CH222222225 - valid UID, not VAT-registered
  • LI111111118 - valid (LI numbers are normalized to CH before lookup, so test mode returns country_code: "CH" for this number)
  • CH999999996 - simulates upstream error (503)

Get your API key and start validating Swiss VAT numbers in under 2 minutes.

Frequently asked questions

What is the difference between a Swiss UID and a VAT number?

A UID (Unternehmens-Identifikationsnummer) is assigned to all Swiss enterprises. A VAT number is a UID with an active MWST/TVA/IVA registration. A business can have a valid UID without being VAT-registered if their revenue is below CHF 100,000.

Can I validate Liechtenstein VAT numbers with the same API?

Yes. Liechtenstein and Switzerland share a common VAT territory. Liechtenstein businesses are registered in the Swiss UID Register with CHE-format numbers. Avatcado validates both through the same endpoint.

What are the Swiss VAT rate suffixes MWST, TVA, and IVA?

They are the same thing in different languages. MWST is German (Mehrwertsteuer), TVA is French (Taxe sur la valeur ajoutee), and IVA is Italian (Imposta sul valore aggiunto). All three are valid suffixes for the same VAT number.

Why does the Swiss UID Register have a rate limit?

The BFS UID Register allows 20 requests per minute per caller. This is a hard limit. Avatcado caches results for 25 days, so most lookups never hit the upstream API. For high-volume Swiss validation, caching is critical.

Sources