Skip to main content

invalid_vat_format

HTTP Status: 422 Unprocessable Entity

Example response

What happened?

The VAT number doesn’t match the expected format for its country, or the country code is not supported. This happens when:
  • The VAT number is missing a country prefix
  • The country code is not in the supported countries list
  • The number contains only the country code with no digits
  • The number does not match the expected format for its country (wrong length, missing required characters)
  • The number contains invalid characters after normalization
  • The Swiss UID (CHE format) or Norwegian org number fails the MOD11 checksum
  • The Australian ABN fails the weighted checksum validation

Expected formats

How to fix

  1. Include the country code: Always prefix with the country code: NL123456789B01, GB123456789, DE123456789, CHE123456789MWST, NO123456785MVA, AU51824753556
  2. Check supported countries: See the full list at Supported Countries
  3. Let the API normalize: Don’t strip spaces or dots manually. Send "NL 123.456.789 B01" and the API handles it

Common mistakes

  • Forgetting the country code: 123456789 instead of NL123456789B01
  • Using lowercase: This actually works fine (the API normalizes to uppercase), but check there’s a country prefix
  • Including “VAT” prefix: VAT123456789 is not valid; use the country code instead
  • Using GR for Greece: Greece uses EL in the VIES system, not GR
  • Missing the MWST/TVA/IVA suffix for Swiss numbers: CHE123456789 alone is not valid; include the suffix (e.g. CHE123456789MWST)
  • Missing the MVA suffix for Norwegian numbers: NO123456785 alone is not valid; include MVA (e.g. NO123456785MVA)
  • Wrong number of digits: e.g. sending 10 digits for GB (requires exactly 9 or 12)
  • Missing the B separator for Dutch VAT: NL numbers require B between the digit groups, e.g. NL123456789B01
  • Using an unsupported country: Only EU member states, GB, XI, CH, LI, NO, AU, and SG are supported

Catching this error with the SDKs