Financiar v1 / Conversie
Cross conversion, through the leu
Converts an amount between two foreign currencies, using the NBR quotations of both and passing through the leu. The result is not an official NBR rate — the NBR does not publish parities between foreign currencies. curs.componente shows the two quotations used.
For conversions involving the leu, use /conversie.
GET
https://oneapi.ro/api/financiar/v1/conversie/incrucisata
Query parameters
NameTypeDescriptionAccepted values
sumarequired
string
Required. Decimal point, at most 6 decimals, no thousands separators.
e.g. 1000e.g. 2500e.g. 5000
dinrequired
string
A foreign currency, three-letter code. Cannot be
RON.
max 3 car.
inrequired
string
A foreign currency, different from
din. Cannot be RON.
max 3 car.
dataoptional
string | null
Optional,
YYYY-MM-DD. Defaults to the current day.
e.g. 2024-06-14e.g. 2024-05-20
How it behaves
- Converts an amount between two foreign currencies, using the NBR quotes of both and passing through the leu.
- The result is NOT an official NBR rate. NBR does not publish parities between foreign currencies — there is no "NBR EUR/USD rate". The figure here is mathematically correct, but it cannot be presented as an official rate.
curs.componenteshows exactly the two quotes it was derived from. - It is a separate route from
/conversieprecisely so the distinction is not lost: there, a single official quote is used; here, two, and the result has a different status. Merged into one route, the unofficial figure could pass for an official one. - Both quotes must come from the same day. If they do not, the request is refused with 409 rather than producing a rate between two different market days — a plausible wrong result is worse than an error.
curs.factorhonours the same contract as on the official route:suma × factor = suma_convertita_exacta, digit for digit.- For parities published directly between currencies, the source is the ECB (
/bce/curs) — there the figure is official and does not pass through the leu.
What it is for
- Estimating an amount in another foreign currency, starting from NBR quotes.
- Comparing two offers expressed in different currencies.
Response structure
FieldTypeDescription
data.suma
string
Sum of the values, in the unit indicated alongside.
data.din
string
data.in
string
data.suma_convertita
string
The result rounded to 2 decimals.
data.suma_convertita_exacta
string
The unrounded result, for chained calculations.
data.curs.factor
string
The number the amount was multiplied by: the quote of
din divided by the quote of in.
data.curs.componente[]
array
The two official NBR quotes used, with the published value and the multiplier.
data.curs.componente[].valuta
string
ISO 4217 currency code.
data.curs.componente[].valoare
string
The value published by the source for the combination above.
data.curs.componente[].multiplicator
integer
Factor the value is multiplied by to reach the base unit.
data.curs.componente[].valoare_unitara
string
The value per single unit.
data.curs.data
string
The day the quote comes from.
null when the currencies are identical.
data.curs.data_ceruta
string
The date the client asked for, before alignment to a day that has data.
data.curs.exact
boolean
true if the quote is from the requested day.
data.curs.zile_inapoi
integer
data.curs.prin
string
Always
RON on this route: the currency the conversion passed through.
meta.sursa
string
The official source the data comes from, with its licence where one is required.
meta.curs
string
meta.rotunjire
string
meta.avertisment
string
A warning about a limit of the data that changes its interpretation.
meta.nota
string
A note on how to read the response — a pitfall, a convention or a limit of the source.
meta.fara_date
data is null and this says why. The requested date is before 2005-01-03.
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/conversie/incrucisata?suma=1000&din=USD&in=GBP&data=2024-06-14
{
"data": {
"suma": "1000",
"din": "USD",
"in": "GBP",
"suma_convertita": "787.10",
"suma_convertita_exacta": "787.10244364",
"curs": {
"factor": "0.78710244364",
"componente": [
{
"valuta": "USD",
"valoare": "4.6576",
"multiplicator": 1,
"valoare_unitara": "4.6576"
}
],
"data": "2024-06-14",
"data_ceruta": "2024-06-14",
"exact": true,
"zile_inapoi": 0,
"prin": "RON"
}
},
"meta": {
"sursa": "Banca Naţională a României",
"curs": "incrucisat",
"rotunjire": "2 zecimale, jumătate în sus. `suma_convertita_exacta` e nerotunjită — foloseşte-o dacă rezultatul intră într-un alt calcul.",
"avertisment": "Curs încrucişat, calculat prin leu. BNR nu publică direct paritatea între două valute străine, deci cifra NU e un curs oficial BNR. Pentru parităţi publicate direct, sursa e BCE.",
"nota": "Cotaţie publicată în ziua cerută."
}
}
GEThttps://oneapi.ro/api/financiar/v1/conversie/incrucisata?suma=2500&din=CHF&in=JPY&data=2024-05-20
{
"data": {
"suma": "2500",
"din": "CHF",
"in": "JPY",
"suma_convertita": "428199.81",
"suma_convertita_exacta": "428199.809575625",
"curs": {
"factor": "171.27992383025",
"componente": [
{
"valuta": "CHF",
"valoare": "5.037",
"multiplicator": 1,
"valoare_unitara": "5.037"
}
],
"data": "2024-05-20",
"data_ceruta": "2024-05-20",
"exact": true,
"zile_inapoi": 0,
"prin": "RON"
}
},
"meta": {
"sursa": "Banca Naţională a României",
"curs": "incrucisat",
"rotunjire": "2 zecimale, jumătate în sus. `suma_convertita_exacta` e nerotunjită — foloseşte-o dacă rezultatul intră într-un alt calcul.",
"avertisment": "Curs încrucişat, calculat prin leu. BNR nu publică direct paritatea între două valute străine, deci cifra NU e un curs oficial BNR. Pentru parităţi publicate direct, sursa e BCE.",
"nota": "Cotaţie publicată în ziua cerută."
}
}
GEThttps://oneapi.ro/api/financiar/v1/conversie/incrucisata?suma=5000&din=EUR&in=USD&data=2024-06-14
{
"data": {
"suma": "5000",
"din": "EUR",
"in": "USD",
"suma_convertita": "5342.99",
"suma_convertita_exacta": "5342.987804875",
"curs": {
"factor": "1.068597560975",
"componente": [
{
"valuta": "EUR",
"valoare": "4.9771",
"multiplicator": 1,
"valoare_unitara": "4.9771"
}
],
"data": "2024-06-14",
"data_ceruta": "2024-06-14",
"exact": true,
"zile_inapoi": 0,
"prin": "RON"
}
},
"meta": {
"sursa": "Banca Naţională a României",
"curs": "incrucisat",
"rotunjire": "2 zecimale, jumătate în sus. `suma_convertita_exacta` e nerotunjită — foloseşte-o dacă rezultatul intră într-un alt calcul.",
"avertisment": "Curs încrucişat, calculat prin leu. BNR nu publică direct paritatea între două valute străine, deci cifra NU e un curs oficial BNR. Pentru parităţi publicate direct, sursa e BCE.",
"nota": "Cotaţie publicată în ziua cerută."
}
}
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 | negasit = unknown currency; delistata = one of the currencies is no longer quoted. |
| 409 | conflict | cotatii_din_zile_diferite = the two currencies have no quote on the same day. |
| 422 | validare | nu_e_incrucisata = one of the currencies is the leu, use /conversie. valute_identice = both sides are the same currency. |
| 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": "nu_e_incrucisata = one of the currencies is the leu, use /conversie. valute_identice = both sides are the same currency.",
"detalii": {
"suma": [
"The value sent does not satisfy the parameter rule."
]
}
}
}