oneapi
Autentificare
Financiar v1 / Curs

Cotaţia BNR faţă de cea BCE

Aceeaşi zi, aceeaşi valută, două surse oficiale — cu diferenţa calculată şi statutul fiecărei cifre
declarat.

Doar EUR e o comparaţie directă. BNR publică RON/EUR, BCE publică RON per EUR: aceeaşi mărime,
ambele publicate. Măsurat pe cele 5.426 de zile comune (2005 → azi): diferenţă medie 0,0029 lei
(0,0695%)
, maxim 0,0685; identice în doar 155 de zile, adică 2,9%. Din 2020 încoace media a
scăzut la 0,00117 lei.

Pentru celelalte valute comparaţia e indirectă, iar abaterea se dublează. BCE nu publică RON/USD;
cifra se obţine ca (RON/EUR) ÷ (USD/EUR), adică un curs încrucişat calculat de noi. Abaterea
medie urcă de la 0,07% la 0,12–0,18%, cu maxime de 2–4% (JPY: 4,03%). De aceea bce.statut spune pe
fiecare cerere dacă cifra e publicat sau derivat, iar la derivat vin şi componentele din care a
ieşit — altfel abaterea mai mare la USD ar părea că una dintre surse e mai proastă.

Niciuna nu e greşită, şi se poate arăta. Media diferenţei CU SEMN e −0,00045, o cincime din media
absolută: BNR e mai mare în 2.328 de zile şi mai mic în 2.943. Fără bias sistematic — e zgomot de
moment al fixingului, nu o convenţie diferită. Exact concluzia pe care ruta există s-o prevină.

Se compară doar zile în care au publicat amândouă. Calendarele diferă — sărbătorile româneşti nu
sunt cele TARGET2 — iar două cotaţii din zile diferite se pot scădea numeric fără să însemne ceva.
Ziua cerută fără publicare la ambele coboară la ultima zi comună, marcată prin exact.

Multiplicatorii se normalizează. BNR publică HUF, IDR, ISK, JPY şi KRW pe 100 de unităţi, BCE pe
una; fără normalizare, diferenţa ar ieşi de o sută de ori mai mare. bnr.publicat păstrează cifra
aşa cum e publicată, cu multiplicatorul ei.

Opt valute ale BNR nu sunt cotate de BCE — AED, EGP, MDL, RSD, UAH, plus XAU şi XDR, care nici
nu sunt valute. Cerute aici, primesc un refuz care spune de ce, nu o comparaţie goală.

GET
https://oneapi.ro/api/financiar/v1/curs/comparat

Parametri de interogare

NumeTipDescriereValori acceptate
valutaobligatoriu string Obligatoriu, cod de 3 litere. max 3 car.
dataopțional string | null Opţional, YYYY-MM-DD. Implicit ultima zi în care au publicat amândouă. Nu poate fi în viitor. ex. 2024-06-15

Cum se comportă

  • Aceeaşi zi, aceeaşi valută, două surse oficiale — cu diferenţa calculată şi statutul fiecărei cifre declarat.
  • Doar EUR e o comparaţie directă. BNR publică RON/EUR, BCE publică RON per EUR: aceeaşi mărime, ambele publicate. Măsurat pe cele 5.426 de zile comune (2005 → azi): diferenţă medie 0,0029 lei (0,0695%), maxim 0,0685; identice în doar 155 de zile, adică 2,9%. Din 2020 încoace media a scăzut la 0,00117 lei.
  • Pentru celelalte valute comparaţia e indirectă, iar abaterea se dublează. BCE nu publică RON/USD; cifra se obţine ca (RON/EUR) ÷ (USD/EUR), adică un curs încrucişat calculat de noi. Abaterea medie urcă de la 0,07% la 0,12–0,18%, cu maxime de 2–4% (JPY: 4,03%). De aceea bce.statut spune pe fiecare cerere dacă cifra e publicat sau derivat, iar la derivat vin şi componentele din care a ieşit — altfel abaterea mai mare la USD ar părea că una dintre surse e mai proastă.
  • Niciuna nu e greşită, şi se poate arăta. Media diferenţei CU SEMN e −0,00045, o cincime din media absolută: BNR e mai mare în 2.328 de zile şi mai mic în 2.943. Fără bias sistematic — e zgomot de moment al fixingului, nu o convenţie diferită. Exact concluzia pe care ruta există s-o prevină.
  • Se compară doar zile în care au publicat amândouă. Calendarele diferă — sărbătorile româneşti nu sunt cele TARGET2 — iar două cotaţii din zile diferite se pot scădea numeric fără să însemne ceva. Ziua cerută fără publicare la ambele coboară la ultima zi comună, marcată prin exact; se caută cel mult zece zile în urmă.
  • Multiplicatorii se normalizează. BNR publică HUF, IDR, ISK, JPY şi KRW pe 100 de unităţi, BCE pe una; fără normalizare, diferenţa ar ieşi de o sută de ori mai mare. bnr.publicat păstrează cifra aşa cum e publicată, cu multiplicatorul ei.
  • Valorile unitare au şase zecimale, nu patru. La valutele publicate pe 100 de unităţi, cursul unitar are ordinul 0,028, iar o diferenţă reală de 0,000032 s-ar rotunji la 0,0000 şi ar arăta ca „identice".
  • Opt valute ale BNR nu sunt cotate de BCE — AED, EGP, MDL, RSD, UAH, plus XAU şi XDR, care nici nu sunt valute. Cerute aici, primesc un refuz care spune de ce, nu o comparaţie goală.

La ce folosește

  • Verificarea unei cifre de curs când sursa nu e cunoscută.
  • Documentarea, într-un dosar, a diferenţei dintre cele două fixinguri la o zi anume.
  • Alegerea sursei potrivite pentru un contract care nu o precizează.

Structura răspunsului

CâmpTipDescriere
data.valuta string Codul ISO 4217 al valutei.
data.data string Ziua cerută, exact cum ai trimis-o.
data.data_ceruta string Data cerută de client, înainte de alinierea la o zi cu date.
data.exact boolean true doar dacă ziua întoarsă e cea cerută.
data.bnr.valoare string Cursul BNR pentru O unitate, cu şase zecimale.
data.bnr.publicat object Cifra aşa cum o publică BNR, cu multiplicatorul ei.
data.bnr.publicat.valoare string Valoarea publicată de sursă pentru combinaţia de mai sus.
data.bnr.publicat.multiplicator integer Cu cât se înmulţeşte valoarea ca să ajungă în unitatea de bază.
data.bnr.sens string Sensul operaţiunii.
data.bnr.statut string Starea în care se află elementul la sursă.
data.bce.valoare string Cursul BCE pentru o unitate, în acelaşi sens.
data.bce.sens string Sensul operaţiunii.
data.bce.statut string publicat la EUR, derivat la restul.
data.bce.formula null Cum s-a obţinut cifra derivată. null când e publicată.
data.bce.componente null Cele două cotaţii BCE din care a ieşit raportul. null când e publicată.
data.diferenta.absoluta string BNR − BCE, în lei, cu şase zecimale.
data.diferenta.procent string Aceeaşi diferenţă, raportată la cifra BCE.
data.diferenta.sens string Sensul operaţiunii.
meta.surse.bnr string
meta.surse.bce string
meta.nota_statut string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_diferenta string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nomenclator string
meta.fara_date data e null, iar aici stă motivul. Nu există curs în bază. BNR o cotează, BCE nu. Nicio zi, în ultimele zece, cu publicare la ambele.
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/comparat?valuta=EUR
{
    "data": {
        "valuta": "EUR",
        "data": "2026-09-21",
        "data_ceruta": "2026-09-21",
        "exact": true,
        "bnr": {
            "valoare": "5.264900",
            "publicat": {
                "valoare": "5.2649",
                "multiplicator": 1
            },
            "sens": "RON pentru o unitate de EUR",
            "statut": "publicat"
        },
        "bce": {
            "valoare": "5.264700",
            "sens": "RON pentru o unitate de EUR",
            "statut": "publicat",
            "formula": null,
            "componente": null
        },
        "diferenta": {
            "absoluta": "0.000200",
            "procent": "0.0038",
            "sens": "BNR − BCE"
        }
    },
    "meta": {
        "surse": {
            "bnr": "Banca Naţională a României — cursul de referinţă.",
            "bce": "Banca Centrală Europeană — cursul de referinţă (seria EXR)."
        },
        "nota_statut": "Ambele cifre sunt publicate ca atare: EUR e singura valută pentru care cele două surse cotează aceeaşi mărime.",
        "nota_diferenta": "Niciuna dintre surse nu e greşită. Pe 5.426 de zile comune, BNR e mai mare în 2.328 şi mai mic în 2.943, iar media diferenţei cu semn (−0,00045) e o cincime din media absolută (0,0029): zgomot de moment al fixingului, nu o convenţie diferită.",
        "nomenclator": "/financiar/v1/valute"
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitBNR n-o cotează.
422validareCod de valută malformat sau dată în viitor.
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": "Cod de valută malformat sau dată în viitor.",
        "detalii": {
            "valuta": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}