Revaluation of a foreign-currency balance
Revalues a foreign currency balance at the closing rate of a reporting period.
Something other than /calcul/diferente-curs, even though the arithmetic looks the same. There you give two dates and get a SETTLEMENT difference — an invoice issued in January, collected in August. Here you give a PERIOD, and you do not choose the rate: the rule chooses it, the one at the period's close. A balance revalued at some arbitrary day's rate is a revaluation at the wrong rate, and the figure looks just as convincing.
The period, in a single parameter with three forms: 2026-07 (month), 2026-T2 (quarter), 2026 (year). They are unambiguous by shape, and the second is the very label the NBR publishes.
The starting point is given either as valoare_lei — the figure from your books — or as de_la_perioada, the period at whose close the balance was last revalued. The second is the real monthly cycle and takes the rate from our data.
The response also says which banking day the closing rate comes from: that is what goes into the note to the financial statements.
Only MONETARY items are revalued — receivables, payables, cash. A non-refundable advance or stock paid for in foreign currency is not revalued. From the parameters there is no way to know what the balance is, so the route checks nothing: the limit is declared, not assumed.
Query parameters
creanta or datorie. No default.
creantadatorie
2026-07, 2026-T2 or 2026.
e.g. 2024-06e.g. 2024-03e.g. 2024-09
de_la_perioada.
e.g. 49500e.g. 23000e.g. 118000
valoare_lei.
e.g. 2023-T4
How it behaves
- Revalues a foreign-currency balance at the CLOSING rate of a reporting period.
- Different from
/calcul/diferente-curs, even though the arithmetic looks the same. There you give two dates and get a SETTLEMENT difference — an invoice issued in January, collected in August. Here you give a PERIOD, and you do not choose the rate: the rule does, the one at the close of the period. A balance revalued at the rate of an arbitrary day is a revaluation at the wrong rate, and the figure looks just as good. - The period, in a single parameter with three forms:
2026-07(month),2026-T2(quarter),2026(year). They are unambiguous by shape, and the second is the very label NBR publishes. - The starting point, in two mutually exclusive modes.
valoare_leiis the figure in the ledger.de_la_perioadatakes the closing rate of the period in which the balance was last revalued — the real monthly cycle, with the figure taken from our data. When you givevaloare_lei, the response also returnscurs_implicit, so you can see at what rate the balance is carried. - The sign comes from
pozitie, required and with no default: on a payable, an increase in the lei value is an expense, not income. The same rate movement is a gain on a receivable and a loss on a payable. - The response says which banking DAY the closing rate comes from — information the official NBR series does not carry, but which goes into the note to the accounts and is checked by an auditor.
- A period in progress has no closing rate and returns 404: the "close" of an unfinished period is simply the most recent rate. For a balance as of today, use
/calcul/diferente-curswith today's date. - Only MONETARY items are revalued — receivables, payables, cash. A non-refundable advance or inventory paid in foreign currency is not revalued. The parameters cannot tell what the balance is, so the route checks nothing: the limit is declared, not assumed.
cont_orientativ(765 favourable, 665 unfavourable) is INDICATIVE: the classification depends on accounting policy, not on our data.
What it is for
- Revaluing foreign-currency receivables and payables at month end.
- Revaluing foreign-currency cash at year end.
- Checking a revaluation done at the wrong rate.
Response structure
valoare_data or din_inchiderea_anterioara.
favorabila, nefavorabila or neutra.
765 or 665. Indicative — see the note.
data is null and this says why. The period is still in progress, the currency has no close for it, or the period is before 2005. The la field says which period produced the gap.
fara_date is prose and may be rephrased, this is not.
Response examples
{
"data": {
"suma": "10000",
"valuta": "EUR",
"denumire": "Euro",
"pozitie": "creanta",
"perioada": {
"eticheta": "2024-06",
"de_la": "2024-06-01",
"pana_la": "2024-06-30"
},
"inregistrat": {
"fel": "valoare_data",
"valoare_lei": "49500.00",
"curs_implicit": "4.95"
},
"reevaluat": {
"curs_inchidere": "4.9771",
"provine_din_ziua": "2024-06-28",
"valoare_lei": "49771.00"
},
"diferenta": {
"valoare": "271.00",
"valoare_exacta": "271",
"fel": "favorabila",
"variatie_valoare_lei": "271.00",
"cont_orientativ": "765"
}
},
"meta": {
"sursa": "BNR — cursul de schimb al pieţei valutare, serii de sfârşit de perioadă.",
"nota_curs": "Cursul e cel de la ÎNCHIDEREA perioadei, ales de regulă, nu de client. Pentru o diferenţă între două date alese de tine: /financiar/v1/calcul/diferente-curs.",
"nota_pozitie": "Semnul vine din `pozitie`: la datorie, creşterea valorii în lei e cheltuială, nu venit.",
"nota_cont": "Contul 765 e ORIENTATIV (plan general OMFP 1802/2014). Încadrarea ţine de politica contabilă, nu de datele noastre.",
"nota_monetare": "Se reevaluează doar elementele monetare — creanţe, datorii, disponibil. Ruta nu poate şti ce e soldul, deci nu verifică: limita e declarată.",
"nota_provenienta": "Ziua bancară din `reevaluat.provine_din_ziua` e informaţia care se trece în nota la bilanţ; seria oficială nu o conţine."
}
}
{
"data": {
"suma": "5000",
"valuta": "USD",
"denumire": "Dolar american",
"pozitie": "datorie",
"perioada": {
"eticheta": "2024-03",
"de_la": "2024-03-01",
"pana_la": "2024-03-31"
},
"inregistrat": {
"fel": "valoare_data",
"valoare_lei": "23000.00",
"curs_implicit": "4.6"
},
"reevaluat": {
"curs_inchidere": "4.6078",
"provine_din_ziua": "2024-03-29",
"valoare_lei": "23039.00"
},
"diferenta": {
"valoare": "-39.00",
"valoare_exacta": "-39",
"fel": "nefavorabila",
"variatie_valoare_lei": "39.00",
"cont_orientativ": "665"
}
},
"meta": {
"sursa": "BNR — cursul de schimb al pieţei valutare, serii de sfârşit de perioadă.",
"nota_curs": "Cursul e cel de la ÎNCHIDEREA perioadei, ales de regulă, nu de client. Pentru o diferenţă între două date alese de tine: /financiar/v1/calcul/diferente-curs.",
"nota_pozitie": "Semnul vine din `pozitie`: la datorie, creşterea valorii în lei e cheltuială, nu venit.",
"nota_cont": "Contul 665 e ORIENTATIV (plan general OMFP 1802/2014). Încadrarea ţine de politica contabilă, nu de datele noastre.",
"nota_monetare": "Se reevaluează doar elementele monetare — creanţe, datorii, disponibil. Ruta nu poate şti ce e soldul, deci nu verifică: limita e declarată.",
"nota_provenienta": "Ziua bancară din `reevaluat.provine_din_ziua` e informaţia care se trece în nota la bilanţ; seria oficială nu o conţine."
}
}
{
"data": {
"suma": "20000",
"valuta": "GBP",
"denumire": "Liră sterlină",
"pozitie": "creanta",
"perioada": {
"eticheta": "2024-09",
"de_la": "2024-09-01",
"pana_la": "2024-09-30"
},
"inregistrat": {
"fel": "valoare_data",
"valoare_lei": "118000.00",
"curs_implicit": "5.9"
},
"reevaluat": {
"curs_inchidere": "5.9563",
"provine_din_ziua": "2024-09-30",
"valoare_lei": "119126.00"
},
"diferenta": {
"valoare": "1126.00",
"valoare_exacta": "1126",
"fel": "favorabila",
"variatie_valoare_lei": "1126.00",
"cont_orientativ": "765"
}
},
"meta": {
"sursa": "BNR — cursul de schimb al pieţei valutare, serii de sfârşit de perioadă.",
"nota_curs": "Cursul e cel de la ÎNCHIDEREA perioadei, ales de regulă, nu de client. Pentru o diferenţă între două date alese de tine: /financiar/v1/calcul/diferente-curs.",
"nota_pozitie": "Semnul vine din `pozitie`: la datorie, creşterea valorii în lei e cheltuială, nu venit.",
"nota_cont": "Contul 765 e ORIENTATIV (plan general OMFP 1802/2014). Încadrarea ţine de politica contabilă, nu de datele noastre.",
"nota_monetare": "Se reevaluează doar elementele monetare — creanţe, datorii, disponibil. Ruta nu poate şti ce e soldul, deci nu verifică: limita e declarată.",
"nota_provenienta": "Ziua bancară din `reevaluat.provine_din_ziua` e informaţia care se trece în nota la bilanţ; seria oficială nu o conţine."
}
}
{
"data": {
"suma": "7500",
"valuta": "USD",
"denumire": "Dolar american",
"pozitie": "creanta",
"perioada": {
"eticheta": "2023-12",
"de_la": "2023-12-01",
"pana_la": "2023-12-31"
},
"inregistrat": {
"fel": "valoare_data",
"valoare_lei": "34000.00",
"curs_implicit": "4.53333333"
},
"reevaluat": {
"curs_inchidere": "4.4958",
"provine_din_ziua": "2023-12-29",
"valoare_lei": "33718.50"
},
"diferenta": {
"valoare": "-281.50",
"valoare_exacta": "-281.5",
"fel": "nefavorabila",
"variatie_valoare_lei": "-281.50",
"cont_orientativ": "665"
}
},
"meta": {
"sursa": "BNR — cursul de schimb al pieţei valutare, serii de sfârşit de perioadă.",
"nota_curs": "Cursul e cel de la ÎNCHIDEREA perioadei, ales de regulă, nu de client. Pentru o diferenţă între două date alese de tine: /financiar/v1/calcul/diferente-curs.",
"nota_pozitie": "Semnul vine din `pozitie`: la datorie, creşterea valorii în lei e cheltuială, nu venit.",
"nota_cont": "Contul 665 e ORIENTATIV (plan general OMFP 1802/2014). Încadrarea ţine de politica contabilă, nu de datele noastre.",
"nota_monetare": "Se reevaluează doar elementele monetare — creanţe, datorii, disponibil. Ruta nu poate şti ce e soldul, deci nu verifică: limita e declarată.",
"nota_provenienta": "Ziua bancară din `reevaluat.provine_din_ziua` e informaţia care se trece în nota la bilanţ; seria oficială nu o conţine."
}
}
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. |
| 422 | perioade_inversate | The starting period is not before the reporting one; missing pozitie; missing or doubled starting point; malformed parameters. |
| 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": "perioade_inversate",
"mesaj": "The starting period is not before the reporting one; missing pozitie; missing or doubled starting point; malformed parameters.",
"detalii": {
"suma": [
"The value sent does not satisfy the parameter rule."
]
}
}
}