Validare EORI
Verifică un număr EORI — identificatorul vamal folosit la declaraţii cu ţări terţe — prin serviciul
Comisiei Europene.
Nu are legătură cu operaţiunile intracomunitare: acolo se foloseşte codul de TVA, verificat prin
VIES. Confuzia e uşoară şi costisitoare.
Nu există listă locală de numere EORI şi nu se poate deduce din CUI: numărul se obţine printr-o
înregistrare separată la vamă, pe care o face doar cine declară vamal. Deci fiecare verificare
necunoscută e un apel extern, protejat de limită de ritm şi întrerupător.
Corpul cererii
Se trimite ca JSON, în corpul cererii (Content-Type: application/json) — nu în şirul de interogare.
{
"eori": "RO14399840"
}
{
"eori": "RO 14399840"
}
{
"eori": "DE123456789012345"
}
{
"eori": "XX1"
}
Parametri de interogare
Cum se comportă
- Verifică un număr EORI prin serviciul Comisiei Europene (DDS2/EOS).
- EORI e identificator VAMAL, pentru declaraţii cu ţări terţe — nu are legătură cu operaţiunile intracomunitare. Acolo se foloseşte codul de TVA, verificat prin VIES. Confuzia e uşoară şi costisitoare: cineva care caută „validare partener european" ajunge aici şi verifică lucrul greşit.
- Nu există listă locală şi nu se poate deduce din CUI. Numărul se obţine printr-o înregistrare separată la vamă, făcută doar de cine declară vamal — majoritatea firmelor nu o fac niciodată. Deci un CUI valid, activ şi plătitor de TVA nu spune nimic despre existenţa unui EORI. Fiecare verificare necunoscută e un apel extern.
- Structura pentru România are trei forme, după titular (Norme OPANAF 1886): persoană juridică cu sediul în România →
RO+ CUI; persoană fizică stabilită în România →RO+ CNP; operator cu sediul într-un stat terţ →RO+ codul ISO al statului + numărul din acel stat. Partea naţională poate fi alfanumerică, până la 15 caractere. - De aceea metoda e
POST: un EORI de persoană fizică ESTE un CNP cu prefix, deci numărul poate fi o dată personală şi nu are ce căuta în query-string. - Trei stări, nu două.
validşiinvalidvin de la Comisie;serviciu_indisponibilînseamnă că nu am primit un verdict, iarvalidenull, nufalse. Tratarea unei pene ca „număr invalid" ar face un client să refuze un partener perfect legitim. - O pană a Comisiei nu e o eroare a rutei. Răspunsul rămâne HTTP 200, cu
stare: serviciu_indisponibilşimotivspune de ce:timeout,conexiune,http_<cod>,raspuns_neinteligibil(un 200 fără verdict — de obicei pagina de mentenanţă),circuit_deschis(după eşecuri repetate nu mai sunăm un timp;meta.reia_dupa_sspune cât). O pană nu intră niciodată în cache, iar un 200 al Comisiei fără plic SOAP nu e citit ca verdict. - Denumirea şi adresa se publică numai dacă operatorul economic şi-a dat consimţământul. Un EORI valid fără denumire e normal, nu un răspuns incomplet — răspunsul o spune explicit.
provenientaarată dacă răspunsul a venit din cache, din verificarea locală de structură sau de la Comisie.
La ce folosește
- Verificarea unui partener înainte de a completa o declaraţie vamală.
- Confirmarea propriului număr EORI.
Structura răspunsului
true/false de la Comisie, sau null când serviciul nu a dat un verdict.
valid, invalid, structura_invalida, serviciu_indisponibil.
null.
serviciu_indisponibil: timeout, conexiune, http_<cod>, raspuns_neinteligibil, circuit_deschis. Altfel null.
cache, local, extern sau circuit (fără apel: întrerupătorul e deschis).
Exemple de răspuns
body: {"eori": "RO14399840"}
{
"data": {
"eori": "RO14399840",
"valid": true,
"stare": "valid",
"detaliu": "Valid",
"denumire": null,
"adresa": null,
"motiv": null,
"provenienta": "extern"
},
"meta": {
"sursa": "Comisia Europeană — serviciul de validare EORI (DDS2/EOS).",
"temei": "Numărul EORI e atribuit de autoritatea vamală; pentru România, de Direcţia Generală a Vămilor din ANAF.",
"provenienta": "Apel la serviciul Comisiei.",
"atentie_denumire": "Numărul e valid, dar denumirea şi adresa lipsesc: se publică numai dacă operatorul economic şi-a dat consimţământul. Absenţa lor nu e un răspuns incomplet.",
"nota_intracomunitar": "EORI e identificator VAMAL, pentru operaţiuni cu ţări terţe. Pentru valabilitatea unui cod de TVA în operaţiuni intracomunitare, verificarea se face la VIES."
}
}
body: {"eori": "RO 14399840"}
{
"data": {
"eori": "RO14399840",
"valid": true,
"stare": "valid",
"detaliu": "Valid",
"denumire": null,
"adresa": null,
"motiv": null,
"provenienta": "cache"
},
"meta": {
"sursa": "Comisia Europeană — serviciul de validare EORI (DDS2/EOS).",
"temei": "Numărul EORI e atribuit de autoritatea vamală; pentru România, de Direcţia Generală a Vămilor din ANAF.",
"provenienta": "Răspuns din cache — nu s-a făcut apel extern.",
"atentie_denumire": "Numărul e valid, dar denumirea şi adresa lipsesc: se publică numai dacă operatorul economic şi-a dat consimţământul. Absenţa lor nu e un răspuns incomplet.",
"nota_intracomunitar": "EORI e identificator VAMAL, pentru operaţiuni cu ţări terţe. Pentru valabilitatea unui cod de TVA în operaţiuni intracomunitare, verificarea se face la VIES."
}
}
body: {"eori": "DE123456789012345"}
{
"data": {
"eori": "DE123456789012345",
"valid": false,
"stare": "invalid",
"detaliu": "Not valid",
"denumire": null,
"adresa": null,
"motiv": null,
"provenienta": "extern"
},
"meta": {
"sursa": "Comisia Europeană — serviciul de validare EORI (DDS2/EOS).",
"temei": "Numărul EORI e atribuit de autoritatea vamală; pentru România, de Direcţia Generală a Vămilor din ANAF.",
"provenienta": "Apel la serviciul Comisiei.",
"nota_intracomunitar": "EORI e identificator VAMAL, pentru operaţiuni cu ţări terţe. Pentru valabilitatea unui cod de TVA în operaţiuni intracomunitare, verificarea se face la VIES."
}
}
body: {"eori": "XX1"}
{
"data": {
"eori": "XX1",
"valid": false,
"stare": "invalid",
"detaliu": "Not valid",
"denumire": null,
"adresa": null,
"motiv": null,
"provenienta": "extern"
},
"meta": {
"sursa": "Comisia Europeană — serviciul de validare EORI (DDS2/EOS).",
"temei": "Numărul EORI e atribuit de autoritatea vamală; pentru România, de Direcţia Generală a Vămilor din ANAF.",
"provenienta": "Apel la serviciul Comisiei.",
"nota_intracomunitar": "EORI e identificator VAMAL, pentru operaţiuni cu ţări terţe. Pentru valabilitatea unui cod de TVA în operaţiuni intracomunitare, verificarea se face la VIES."
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 422 | validare | Lipseşte eori sau are o lungime imposibilă. Un număr prezent dar malformat întoarce 200 cu stare: "structura_invalida". |
| 429 | limita_ta | Ai depăşit ritmul tău de verificări externe; capacitate_serviciu — serviciul e la capacitate, nu e o limită a contului. Ambele cu Retry-After. |
Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.
{
"eroare": {
"cod": "validare",
"mesaj": "Lipseşte eori sau are o lungime imposibilă. Un număr prezent dar malformat întoarce 200 cu stare: \"structura_invalida\"."
}
}