oneapi
Autentificare
Financiar v1 / CursVamal

Cursul vamal al unei luni

Cursul aplicabil pentru determinarea valorii în vamă într-o lună (?luna=AAAA-LL), pentru toate valutele
sau doar cele cerute. Fără luna, luna în curs. Acoperirea începe la mai 2016, când a intrat în vigoare
art. 146 din Regulamentul de punere în aplicare (UE) 2015/2447.

Nu e cursul zilei. E cotaţia BNR din penultima zi de miercuri a lunii anterioare, fixă pe toată
luna. Răspunsul spune din ce zi provine, ca regula să poată fi verificată cerând acea cotaţie pe
/curs/{valuta}?data=.

GET
https://oneapi.ro/api/financiar/v1/curs-vamal

Parametri de interogare

NumeTipDescriereValori acceptate
lunaopțional string | null Opţional: luna, AAAA-LL, din 2016-05. Fără ea, luna în curs. ex. 2024-06
valutalistăopțional text Filtru opţional: ?valuta=EUR,USD. ex. EURex. EUR,USD

Cum se comportă

  • Cursul aplicabil pentru determinarea valorii în vamă într-o lună (?luna=AAAA-LL); fără ea, luna în curs.
  • Nu e cursul zilei. E cotaţia BNR din penultima zi de miercuri a lunii ANTERIOARE, fixă pe toată luna de aplicare (art. 146 din Regulamentul de punere în aplicare (UE) 2015/2447). Folosirea cursului zilnic la o declaraţie vamală schimbă baza de impozitare cu o diferenţă mică, greu de observat.
  • Răspunsul poartă cotatie_din şi penultima_miercuri, deci regula e verificabilă: se cere aceeaşi zi pe /curs/{valuta}?data= şi se compară. meta.verificare conţine chiar calea.
  • Cinci valute se publică la 100 de unităţi; valoare_unitara e deja împărţită la multiplicator.
  • Acoperirea începe la mai 2016. Cifrele au fost confruntate cu tabelele oficiale ale Autorităţii Vamale, recuperate din arhiva web: 1.149 din 1.149 de valori identice la a patra zecimală.
  • Acoperirea începe la mai 2016, când a intrat în vigoare art. 146 din Reg. (UE) 2015/2447. Lunile anterioare sunt refuzate cu explicaţie: până atunci se aplica art. 171 din Reg. 2454/93, care avea o clauză de 5% — dacă cotaţia unei miercuri se abătea cu cel puţin 5% de la cea în uz, o înlocuia din miercuri următoare, iterativ. Regula rupea perioadele la mijloc de lună, iar o grilă lunară nu o poate exprima. De aceea perioada nu e în date, în loc să fie aproximată.

La ce folosește

  • Conversia valorii în vamă la o declaraţie de import.
  • Verificarea cursului folosit de un declarant.
  • Calculul valorii în vamă pentru o declaraţie dintr-o lună trecută.
  • Verificarea unei declaraţii vamale depuse anterior.
  • Recalcularea corectă a unui import, cu cursul lunii, nu cu cel de azi.

Structura răspunsului

CâmpTipDescriere
data.luna string Luna la care se referă datele.
data.aplicabil_de_la string Prima zi a lunii de aplicare.
data.aplicabil_pana_la string Ultima zi a lunii de aplicare.
data.moneda_baza string Moneda faţă de care sunt exprimate cotaţiile.
data.cotatie_din string Ziua din care provine cotaţia BNR folosită.
data.penultima_miercuri string Penultima miercuri a lunii anterioare — regula din art. 146.
data.baza_legala string Temeiul aplicabil lunii respective.
data.cotatii[].valuta string Codul ISO 4217 al valutei.
data.cotatii[].valoare string Valoarea publicată de sursă pentru combinaţia de mai sus.
data.cotatii[].multiplicator integer Cu cât se înmulţeşte valoarea ca să ajungă în unitatea de bază.
data.cotatii[].valoare_unitara string Valoarea raportată la o singură unitate.
meta.sursa string Sursa oficială din care vin datele, cu licenţa ei acolo unde e cerută.
meta.cotatii integer Câte cotaţii intră în răspuns.
meta.regula string Regula după care s-a calculat sau s-a ales valoarea.
meta.verificare string Ce verificare s-a rulat pe valorile din răspuns.
meta.nota string Precizare despre cum se citesc datele din răspuns — o capcană, o convenţie sau o limită a sursei.
meta.fara_date data e null, iar aici stă motivul. Nu există cursuri vamale în bază.
meta.fara_date_cod Cuvântul scurt şi STABIL al motivului, pentru clienţii care comută pe el în cod: fara_date e proză şi se poate reformula, ăsta nu.

Exemple de răspuns

GEThttps://oneapi.ro/api/financiar/v1/curs-vamal?valuta=EUR
{
    "data": {
        "luna": "2026-09",
        "aplicabil_de_la": "2026-09-01",
        "aplicabil_pana_la": "2026-09-30",
        "moneda_baza": "RON",
        "cotatie_din": "2026-08-19",
        "penultima_miercuri": "2026-08-19",
        "baza_legala": "art. 146 Reg. (UE) 2015/2447",
        "cotatii": [
            {
                "valuta": "EUR",
                "valoare": "5.2452",
                "multiplicator": 1,
                "valoare_unitara": "5.2452"
            }
        ]
    },
    "meta": {
        "sursa": "derivat din cursul de referinţă BNR.",
        "cotatii": 1,
        "regula": "Cotaţia BNR din penultima zi de miercuri a lunii anterioare, fixă pe toată luna de aplicare.",
        "verificare": "Cotaţia se poate confrunta cerând /financiar/v1/curs/EUR?data=2026-08-19 (la fel pentru orice valută din grilă).",
        "nota": "Nu e cursul zilei. Folosirea cursului zilnic la o declaraţie vamală schimbă baza de impozitare cu o diferenţă mică, greu de observat."
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitLuna nu are date.
422validareLună scrisă altfel decât AAAA-LL ori anterioară lui 2016-05 (art. 146 din Reg. (UE) 2015/2447 se aplică din 1 mai 2016).
429cota_depasitaCota lunară a planului a fost depăşită (vezi 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": "Lună scrisă altfel decât AAAA-LL ori anterioară lui 2016-05 (art. 146 din Reg. (UE) 2015/2447 se aplică din 1 mai 2016).",
        "detalii": {
            "luna": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}