Historic exchange rate (old-leu era)
The NBR quotation of a currency on a day in the period 1998-01-05 → 2004-12-31, when the national currency was the old leu (ROL).
The figures are in OLD LEI. A rate of 638 does not compare with one of 5.25 today: there are four orders of magnitude between them. Every response declares denominare: "ROL" and also carries the new-leu equivalent, in echivalent_ron, so that an amount from old documents can be brought to today's unit.
It covers 30 currencies, 13 of which no longer exist: ATS, BEF, DEM, ESP, FIM, FRF, GRD, IEP, ITL, NLG, PTE (national currencies replaced by the euro), TRL (the Turkish lira before redenomination) and XEU (the ECU). For dates after 2005 use /curs/{valuta}?data=.
Path parameters
Query parameters
?data=YYYY-MM-DD, between 1998-01-05 and 2004-12-31.
e.g. 1998-06-15e.g. 2001-03-15e.g. 1999-01-15
How it behaves
- The NBR quote for a currency on a day between 1998-01-05 and 2004-12-31, when the national currency was the old leu (ROL).
- The figures are in OLD LEI and do not compare with today's. A rate of
638(Austrian schilling, 1998) and one of5.25(euro, today) are four orders of magnitude apart. That is why the response declaresdenominare: "ROL"and also carriesechivalent_ron— the same quote brought into new lei, so an amount from old documents can be used without remembering the ratio. - A separate route from
/curs, not a parameter of it. Placed in the same field, the two units would be indistinguishable: nothing in the shape of a number says which leu it is in. When you request/curs/{valuta}?data=with a date before 2005, the response points you here, with the full path. - Covers 30 currencies, 13 of which no longer exist: ATS, BEF, DEM, ESP, FIM, FRF, GRD, IEP, ITL, NLG, PTE — the national currencies replaced by the euro between 1999 and 2002 — plus TRL (the Turkish lira before the 2005 redenomination) and XEU (the ECU, the unit of account that preceded the euro). Their names are in the response: nobody remembers what IEP or NLG was.
XEUis not a currency, but a basket — like XDR on the modern series.este_moneda: falseseparates it, so it does not end up in a currency picker next to the Deutsche Mark.- Days without publication receive the last preceding quote, marked with
exact: falseandzile_inapoi— the same vocabulary as/curs. The search never crosses the era boundary: a request for 2004-12-31 cannot fall back on a quote from 2005, because that one is in a different unit. - The boundary follows the source's convention, not the legal calendar. The denomination took place on 1 July 2005, but NBR expresses its archive in new lei from 1 January 2005 — which is why the ROL series stops at 2004-12-31. It is the same ambiguous window
/calcul/denominaredeclares, and the two routes say the same thing. - The date is REQUIRED, unlike
/curs/{valuta}where omitting it means "today". There is no "today" in the ROL archive: the era ended in 2004, and any default would be arbitrary.
What it is for
- Reconstructing a rate for a contract or dispute predating 2005.
- Converting an amount from an old document, in steps: the rate of the day, then the denomination.
- Recovering the quote of a currency that no longer exists (Deutsche Mark, Italian lira).
Response structure
false for XEU, which was a unit of account, not a currency.
true only if the requested day has a publication of its own.
ROL on this route. The unit valoare is expressed in.
ROL: the quote is old lei per unit of currency.
valoare.
valoare_unitara divided by 10,000.
data is null and this says why. The requested date is before 1998-01-05, outside coverage.
fara_date is prose and may be rephrased, this is not.
Response examples
{
"data": {
"valuta": "USD",
"denumire": "Dolar american",
"este_moneda": true,
"data": "1998-06-15",
"data_ceruta": "1998-06-15",
"exact": true,
"zile_inapoi": 0,
"denominare": "ROL",
"moneda_baza": "ROL",
"valoare": "8556",
"multiplicator": 1,
"valoare_unitara": "8556",
"echivalent_ron": {
"valoare_unitara": "0.8556",
"raport_denominare": 10000,
"temei": "Legea 348/2004 — 1 RON = 10.000 ROL, în vigoare de la 1 iulie 2005."
}
},
"meta": {
"sursa": "BNR — arhiva cursului de schimb în lei vechi (baza de date interactivă).",
"acoperire": {
"de_la": "1998-01-05",
"pana_la": "2004-12-31"
},
"temei_denominare": "Legea 348/2004: 1 RON = 10.000 ROL, în vigoare de la 1 iulie 2005.",
"nota_unitate": "Cifrele din `valoare` sunt în LEI VECHI. Nu se compară cu cursul de azi fără trecerea prin raportul de denominare; `echivalent_ron` o face deja.",
"nota_fereastra": "Seria ROL se încheie la 2004-12-31 fiindcă BNR îşi exprimă arhiva în lei noi din 1 ianuarie 2005, deşi denominarea legală a fost la 1 iulie 2005. Aceeaşi fereastră ambiguă e declarată şi de `/calcul/denominare`.",
"dupa_2005": "Pentru date de după denominare: /financiar/v1/curs/USD?data=AAAA-LL-ZZ."
}
}
{
"data": {
"valuta": "DEM",
"denumire": "Marcă germană (înlocuită de euro, 1999)",
"este_moneda": true,
"data": "2001-03-15",
"data_ceruta": "2001-03-15",
"exact": true,
"zile_inapoi": 0,
"denominare": "ROL",
"moneda_baza": "ROL",
"valoare": "12694",
"multiplicator": 1,
"valoare_unitara": "12694",
"echivalent_ron": {
"valoare_unitara": "1.2694",
"raport_denominare": 10000,
"temei": "Legea 348/2004 — 1 RON = 10.000 ROL, în vigoare de la 1 iulie 2005."
}
},
"meta": {
"sursa": "BNR — arhiva cursului de schimb în lei vechi (baza de date interactivă).",
"acoperire": {
"de_la": "1998-01-05",
"pana_la": "2004-12-31"
},
"temei_denominare": "Legea 348/2004: 1 RON = 10.000 ROL, în vigoare de la 1 iulie 2005.",
"nota_unitate": "Cifrele din `valoare` sunt în LEI VECHI. Nu se compară cu cursul de azi fără trecerea prin raportul de denominare; `echivalent_ron` o face deja.",
"nota_fereastra": "Seria ROL se încheie la 2004-12-31 fiindcă BNR îşi exprimă arhiva în lei noi din 1 ianuarie 2005, deşi denominarea legală a fost la 1 iulie 2005. Aceeaşi fereastră ambiguă e declarată şi de `/calcul/denominare`.",
"dupa_2005": "Pentru date de după denominare: /financiar/v1/curs/DEM?data=AAAA-LL-ZZ."
}
}
{
"data": {
"valuta": "FRF",
"denumire": "Franc francez (înlocuit de euro, 1999)",
"este_moneda": true,
"data": "1999-01-15",
"data_ceruta": "1999-01-15",
"exact": true,
"zile_inapoi": 0,
"denominare": "ROL",
"moneda_baza": "ROL",
"valoare": "2007",
"multiplicator": 1,
"valoare_unitara": "2007",
"echivalent_ron": {
"valoare_unitara": "0.2007",
"raport_denominare": 10000,
"temei": "Legea 348/2004 — 1 RON = 10.000 ROL, în vigoare de la 1 iulie 2005."
}
},
"meta": {
"sursa": "BNR — arhiva cursului de schimb în lei vechi (baza de date interactivă).",
"acoperire": {
"de_la": "1998-01-05",
"pana_la": "2004-12-31"
},
"temei_denominare": "Legea 348/2004: 1 RON = 10.000 ROL, în vigoare de la 1 iulie 2005.",
"nota_unitate": "Cifrele din `valoare` sunt în LEI VECHI. Nu se compară cu cursul de azi fără trecerea prin raportul de denominare; `echivalent_ron` o face deja.",
"nota_fereastra": "Seria ROL se încheie la 2004-12-31 fiindcă BNR îşi exprimă arhiva în lei noi din 1 ianuarie 2005, deşi denominarea legală a fost la 1 iulie 2005. Aceeaşi fereastră ambiguă e declarată şi de `/calcul/denominare`.",
"dupa_2005": "Pentru date de după denominare: /financiar/v1/curs/FRF?data=AAAA-LL-ZZ."
}
}
{
"data": {
"valuta": "ITL",
"denumire": "Liră italiană (înlocuită de euro, 1999)",
"este_moneda": true,
"data": "1999-01-15",
"data_ceruta": "1999-01-15",
"exact": true,
"zile_inapoi": 0,
"denominare": "ROL",
"moneda_baza": "ROL",
"valoare": "6.8",
"multiplicator": 1,
"valoare_unitara": "6.8",
"echivalent_ron": {
"valoare_unitara": "0.00068",
"raport_denominare": 10000,
"temei": "Legea 348/2004 — 1 RON = 10.000 ROL, în vigoare de la 1 iulie 2005."
}
},
"meta": {
"sursa": "BNR — arhiva cursului de schimb în lei vechi (baza de date interactivă).",
"acoperire": {
"de_la": "1998-01-05",
"pana_la": "2004-12-31"
},
"temei_denominare": "Legea 348/2004: 1 RON = 10.000 ROL, în vigoare de la 1 iulie 2005.",
"nota_unitate": "Cifrele din `valoare` sunt în LEI VECHI. Nu se compară cu cursul de azi fără trecerea prin raportul de denominare; `echivalent_ron` o face deja.",
"nota_fereastra": "Seria ROL se încheie la 2004-12-31 fiindcă BNR îşi exprimă arhiva în lei noi din 1 ianuarie 2005, deşi denominarea legală a fost la 1 iulie 2005. Aceeaşi fereastră ambiguă e declarată şi de `/calcul/denominare`.",
"dupa_2005": "Pentru date de după denominare: /financiar/v1/curs/ITL?data=AAAA-LL-ZZ."
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 404 | negasit | alta_epoca = the date is after 2004-12-31, and the response gives the path to /curs; negasit = the currency was never quoted in the ROL era; iesita_din_circulatie = it was quoted, but not on the requested date (the response gives the period when it was). |
| 422 | validare | A currency code that is not three letters, or a missing/malformed date. |
| 429 | cota_depasita | The 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": "A currency code that is not three letters, or a missing/malformed date.",
"detalii": {
"valuta": [
"The value sent does not satisfy the parameter rule."
]
}
}
}