oneapi
Sign in

VIES member states

The member states VIES accepts, with each one's country prefix and VAT number shape — before making a query that would come back with "unknown state".

GET
https://oneapi.ro/api/identificatori/v1/vies/state

Query parameters

This route accepts no query parameters.

How it behaves

  • The VAT prefix is not always the country's ISO code. Greece uses EL, not GR, and XI is Northern Ireland, which stayed in the EU VAT system for goods after Brexit. The response therefore gives both the prefix and the corresponding ISO code.

What it is for

  • Check whether a VAT prefix belongs to the VIES system, before sending the code for verification.
  • Populate a country picker in an intra-EU invoicing form.

Response structure

All fields below live inside data.

FieldTypeDescription
inregistrari integer How many records the response holds.
state[].prefix string The prefix used in the VAT number.
state[].cod_iso string The ISO 3166-1 country code, which may differ from the prefix.
state[].nume string The country name, in Romanian.
observatie string A note on how to read the response: a computation convention or a limit of the data.

Response examples

GEThttps://oneapi.ro/api/identificatori/v1/vies/state
{
    "data": {
        "inregistrari": 28,
        "state": [
            {
                "prefix": "AT",
                "cod_iso": "AT",
                "nume": "Austria"
            }
        ],
        "observatie": "Prefixul din codul de TVA nu e mereu codul ISO al țării: Grecia folosește `EL`, iar `XI` e Irlanda de Nord, rămasă în sistemul TVA al UE pentru bunuri după Brexit."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareThe route takes no parameters apart from lang: any other parameter returns 422 instead of being ignored.
429cota_depasitaThe plan's monthly quota has been exceeded (see Retry-After).

All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "The route takes no parameters apart from lang: any other parameter returns 422 instead of being ignored."
    }
}