oneapi
Sign in
Financiar v1 / CursInchidere

Closing exchange rate (official NBR)

The end-of-period rate for a month (?luna=YYYY-MM), a quarter (?trimestru=YYYY-Qn, written 2024-T2) or a year (?an=YYYY), as the NBR publishes it — the figure foreign-currency balances are revalued with at the reporting date. Without a period, the latest published month. The response also states WHICH DAY the figure comes from, in provine_din_ziua.

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

Query parameters

NameTypeDescriptionAccepted values
lunaoptional string | null A month, YYYY-MM, from 2005. With no period at all, the latest published month. e.g. 2024-06
trimestruoptional string | null A quarter, YYYY-Qn written as 2024-T2, like the central-bank label. e.g. 2024-T2
anoptional integer | null A year, YYYY, from 2005 up to the last completed and published year. 2005 – 2100
valutalistoptional text Optional filter: ?valuta=EUR,USD. Without it every currency of the period is returned. e.g. EURe.g. EUR,USD

How it behaves

  • The end-of-period rate published by the central bank, for a month (?luna=YYYY-MM), a quarter (?trimestru=YYYY-Qn, written 2024-T2) or a year (?an=YYYY) — only one. Without a period, the latest published month.
  • The month-end exchange rate as published by NBR — the figure used to revalue foreign-currency balances at the reporting date.
  • Not to be confused with the average. The average applies to FLOWS — income, expenses, transactions occurring during the period. The closing rate applies to BALANCES — receivables, payables, foreign-currency holdings at the reporting date. Both figures are real and close, so the mistake is silent; hence separate routes rather than a ?tip= switch.
  • The response also says WHICH DAY the figure comes from, in provine_din_ziua — information the official NBR series does not carry. For a balance-sheet revaluation, the day is what goes into the note and what an auditor checks.
  • A period still in progress returns 404 with perioada_neincheiata, pointing to /curs. The closing rate of an unfinished period is simply the most recent rate — served here, it would be quoted as a balance-sheet value.
  • Values are RON per ONE unit of currency, already divided by the multiplier — unlike /curs, where five currencies are published per 100.
  • Verified across 7,567 month×currency pairs: the published value is exactly the quote of the last banking day of the month, with a maximum deviation of 0.00004.
  • The quarter-end exchange rate, for interim filings and financial statements.
  • Verified across 2,524 quarter×currency pairs: the published value is exactly the quote of the last banking day of the quarter. The quarter is written 1–4 or T1–T4.
  • The 31 December rate — the figure used to revalue foreign-currency balances at the close of the financial year.
  • Verified across 619 year×currency pairs: the published value is exactly the quote of the last banking day of the year, with ZERO deviation.

What it is for

  • Revaluing foreign-currency receivables and payables at month end.
  • Monthly close in accounting.
  • Checking the rate used in a filing.
  • Revaluing balances for a quarterly filing.
  • Interim financial statements.
  • Revaluing balances at the year-end close.
  • Preparing annual financial statements.

Response structure

FieldTypeDescription
data.luna string The month the data refers to.
data.de_la string Start of the interval the response covers.
data.pana_la string End of the interval the response covers, inclusive.
data.moneda_baza string The currency the rates are quoted against.
data.valori[].valuta string ISO 4217 currency code.
data.valori[].denumire string The name, exactly as the source publishes it.
data.valori[].valoare_unitara string The closing rate published by NBR, RON per ONE unit.
data.valori[].provine_din_ziua string The banking day the quote comes from. Not in the official series; derived from the daily quotes.
data.valori[].verificare.cotatia_zilei string That day's quote, brought to one unit.
data.valori[].verificare.diferenta string Official minus the day's quote. Zero or rounding.
meta.sursa string The official source the data comes from, with its licence where one is required.
meta.acoperire.de_la string The first period we have data for.
meta.acoperire.pana_la string The last period we have data for.
meta.valute integer Currencies covered by the response.
meta.nota_utilizare string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_provenienta string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_unitate string What to know about the unit of measure before comparing or summing values.
meta.fara_valori Requested currencies with no value for that period.
meta.fara_date data is null and this says why. The series are not in the database. The period is still being written (the reason points to /curs), it is before 2005, or none of the requested currencies has a closing value.
meta.fara_date_cod The short, STABLE word for the reason, for clients that branch on it in code: fara_date is prose and may be rephrased, this is not.

Response examples

GEThttps://oneapi.ro/api/financiar/v1/curs-inchidere?valuta=EUR
{
    "data": {
        "luna": "2026-08",
        "de_la": "2026-08-01",
        "pana_la": "2026-08-31",
        "moneda_baza": "RON",
        "valori": [
            {
                "valuta": "EUR",
                "denumire": "Euro",
                "valoare_unitara": "5.2586",
                "provine_din_ziua": "2026-08-31",
                "verificare": {
                    "cotatia_zilei": "5.2586",
                    "diferenta": "0"
                }
            }
        ]
    },
    "meta": {
        "sursa": "BNR — cursul de schimb al pieţei valutare, serii lunare de sfârşit de perioadă.",
        "acoperire": {
            "de_la": "2005-01-01",
            "pana_la": "2026-08-01"
        },
        "valute": 1,
        "nota_utilizare": "Cursul de închidere se aplică SOLDURILOR în valută la data raportării. Pentru fluxurile petrecute în cursul perioadei se foloseşte media: /financiar/v1/curs-mediu",
        "nota_provenienta": "`provine_din_ziua` e ziua bancară din care vine cotaţia — informaţie pe care seria oficială nu o conţine, dar care se trece în nota la bilanţ.",
        "nota_unitate": "Valorile sunt RON pentru O unitate de valută, deja împărţite la multiplicator."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareSeveral periods at once (luna, trimestru, an do not combine), a period written other than YYYY-MM, YYYY-Tn or YYYY, a period before 2005 (in old lei: /curs-istoric/mediu), an invalid currency code.
429cota_depasitaThe 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": "Several periods at once (luna, trimestru, an do not combine), a period written other than YYYY-MM, YYYY-Tn or YYYY, a period before 2005 (in old lei: /curs-istoric/mediu), an invalid currency code.",
        "detalii": {
            "luna": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}