skip to Main Content

So i’m trying to check VAT Numbers using the REST Service the EU provides.

Here is some documentation about it:
https://ec.europa.eu/taxation_customs/vies/#/technical-information

I’m using Postman for a check. Using this URL:
https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-test-service

The request body JSON example:

{
  "countryCode": "DE",
  "vatNumber": "DE129273398",
  "requesterMemberStateCode": "DE",
  "requesterNumber": "DE811115368",
  "traderName": "Bayerische Motoren Werke Aktiengesellschaft",
  "traderStreet": "Petuelring 130",
  "traderPostalCode": "80809",
  "traderCity": "München",
  "traderCompanyType": "AG"
}

I always (for over a week) get the answer the service is not available:

{
  "actionSucceed" : false,
  "errorWrappers" : [ {
    "error" : "SERVICE_UNAVAILABLE"
  } ]
}

When using this URL:
https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-number

with the same request body i always get:

{
    "countryCode": "DE",
    "vatNumber": "DE811115368",
    "requestDate": "2023-11-04T14:19:45.180Z",
    "valid": false,
    "requestIdentifier": "",
    "name": "---",
    "address": "---",
    "traderName": "---",
    "traderStreet": "---",
    "traderPostalCode": "---",
    "traderCity": "---",
    "traderCompanyType": "---",
    "traderNameMatch": "NOT_PROCESSED",
    "traderStreetMatch": "NOT_PROCESSED",
    "traderPostalCodeMatch": "NOT_PROCESSED",
    "traderCityMatch": "NOT_PROCESSED",
    "traderCompanyTypeMatch": "NOT_PROCESSED"
}

Am i doing something wrong?

2

Answers


  1. Afaik detailed information on the holder is not available for German VAT numbers. If you omit the "DE" prefix from the fields vatNumber and requesterNumber, you will get a result for valid from https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-number though.

    If you test with a Austrian VAT#, for example, you’ll get more information.

    {
      "countryCode": "AT",
      "vatNumber": "U18522105",
      "requesterMemberStateCode": "DE",
      "requesterNumber": "811115368"
    }
    

    results in

    {
        "countryCode": "AT",
        "vatNumber": "U18522105",
        "requestDate": "2023-11-04T15:00:25.677Z",
        "valid": true,
        "requestIdentifier": "WAPIAAAAYua2Xl4O",
        "name": "KSR Group GmbH",
        "address": "Im Wirtschaftspark 15nAT-3494 Gedersdorf",
        "traderName": "---",
        "traderStreet": "---",
        "traderPostalCode": "---",
        "traderCity": "---",
        "traderCompanyType": "---",
        "traderNameMatch": "NOT_PROCESSED",
        "traderStreetMatch": "NOT_PROCESSED",
        "traderPostalCodeMatch": "NOT_PROCESSED",
        "traderCityMatch": "NOT_PROCESSED",
        "traderCompanyTypeMatch": "NOT_PROCESSED"
    }
    
    Login or Signup to reply.
  2. The test service isn’t intended to validate actual VAT numbers and more to test how your application responds to the various possible returns from the api. If you read the WSDL it has

     Specific disclaimer for this service ----------------------------------------- 
     Here is the list of VAT Number to use to receive each kind of answer : 
        100 = Valid request with Valid VAT Number
        200 = Valid request with an Invalid VAT Number
        201 = Error : INVALID_INPUT
        202 = Error : INVALID_REQUESTER_INFO
        300 = Error : SERVICE_UNAVAILABLE
        301 = Error : MS_UNAVAILABLE
        302 = Error : TIMEOUT
        400 = Error : VAT_BLOCKED
        401 = Error : IP_BLOCKED
        500 = Error : GLOBAL_MAX_CONCURRENT_REQ
        501 = Error : GLOBAL_MAX_CONCURRENT_REQ_TIME
        600 = Error : MS_MAX_CONCURRENT_REQ
        601 = Error : MS_MAX_CONCURRENT_REQ_TIME
        
        For all the other cases, The web service will responds with a "SERVICE_UNAVAILABLE" error.
    

    So it would expect a vat number something like

    "vatNumber": "100",
    

    would give a test result of something like

    {
        "countryCode": "DE",
        "vatNumber": "100",
        "requestDate": "2023-11-04T14:51:52.596Z",
        "valid": true,
        "requestIdentifier": "",
        "name": "John Doe",
        "address": "123 Main St, Anytown, UK"
    }
    

    and as the wsdl states

    For all the other cases, The web service will responds with a
    "SERVICE_UNAVAILABLE" error.

    As for the actual service, the VAT numbers shouldn’t start with DE, removing those should give some validation. Not sure about the field values or the test service though.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search