Foreign direct investment
18 positions across five levels, on the directional principle — as transactions (monthly since 2013 or quarterly) or as stocks (quarterly). The source's three classes have exactly the same codes.
The total means something different for stocks than for transactions, and the name does not warn you: both total series are called „Direct investment". Measured, on stocks total = abroad − Romania closes across all quarters, while on transactions total = abroad + Romania closes across all periods — each assumption fails on the other class, with deviations of hundreds of billions. On stocks the total is the net position, on transactions the net flow. The response says which identity it checked.
The figures do not match the international investment position, and that is correct. The difference is the same amount on both sides — 16,442.50 and 16,442.54 million in 2026-Q1 — across all quarters: it is the directional principle, with reverse investment offset, against the asset/liability principle of the IIP.
The quarterly transactions are exactly the sum of the monthly ones (every quarter, maximum deviation 0.01), so it is a verified aggregation, not independent data. The two series end aligned (2026-06 monthly, 2026-Q2 quarterly).
Mind the sign: on transactions R (residents' investment abroad) carries an INVERTED sign relative to stocks and to the balance of payments — an outflow is negative — so T = R + N is the net inflow.
Stocks carry data_referinta, transactions do not — a quarterly stock is measured at the end of the quarter, a flow covers the period.
Query parameters
tranzactii. Or stocuri — note that the total changes meaning.
tranzactiistocuri
lunar for transactions, trimestrial for stocks. Stocks × monthly does not exist.
lunartrimestrial
YYYY-MM or YYYY-Tn. At quarterly frequency a month is rounded to the quarter containing it.
e.g. 2024-06-15
YYYY-MM or YYYY-Tn.
e.g. 2024-06-15
How it behaves
- Foreign direct investment on the directional principle — 18 positions across five levels, as transactions (monthly since January 2013, or quarterly) or as stocks (quarterly). The source's three classes carry exactly the same 18 codes, so this is one route with
tipandfrecventa. - The total means something different for stocks than for transactions, and the name gives no warning: both total series are called "Investiţii directe". Measured, for stocks
total = abroad − in Romaniacloses across all quarters — it is the net position, −126,547 million euro in 2026-Q1. For transactionstotal = abroad + in Romaniacloses across all periods, becauseR— residents' investment abroad — carries an INVERTED sign relative to stocks and to the balance of payments: an outflow is negative, andT = R + Nis the net inflow. Anyone comparingRwith balance-of-payments assets flips its sign; the response also says so inmeta.avertisment_semn. Each hypothesis fails on the other class, by hundreds of billions; applying one rule to both is off by 270 billion. The response states which was checked, inidentitati[].operatie. - These figures do not match the ones in the international investment position, and that is correct. FDI in the IIP is 24,718 / 151,265; here it is 8,275 / 134,822. The gap is the same amount on both sides — 16,442.50 and 16,442.54 million — across all quarters: the directional principle nets out reverse investment, against the asset/liability principle of the IIP. This is not an inference: the NBR's own class name says "principiul direcţional".
- Quarterly transactions are exactly the sum of the monthly ones — every quarter, maximum deviation 0.01. They are offered as a frequency for convenience, but they are a verified aggregation, not independent data; the two series end aligned (2026-06 monthly, 2026-Q2 quarterly).
- Stocks carry
data_referinta, transactions do not. A quarterly stock is measured at the end of the quarter, though the source labels it with the first month; a flow really does cover the period. - The tolerance is measured directly, not derived. In the investment position every value is a whole million, so the rounding error follows from the number of components. Here 4,301 of 4,730 values carry decimals (measured 15 Sep), up to six, so that rule does not apply — but the maximum deviation observed across the eight identities × three classes is 0.01, against a tolerance of 0.05.
- The tree is asymmetric: the "in Romania" branch splits into loans, trade credit and other claims; the "abroad" branch does not. The path-versus-code check finds zero disagreements in all three classes.
- No direction filter: the whole class is 18 positions and fits in one response.
What it is for
- The monthly flow of foreign investment into Romania, four months fresher than the quarterly series.
- The stock of FDI by sector — deposit-taking corporations against the rest of the economy.
- Equity against debt instruments, that is, how much of FDI is intragroup lending.
Response structure
intreprinderi or unitati_locale — two different concepts, never summed.
direcţional. It is why these figures differ from the investment position.
NXDI is the same position in stocks and in transactions.
null at the total.
diferenţă for the stock total, sumă everywhere else. It is the marker of the two meanings of the total.
tip=stocuri: the end of the quarter, when the stock is measured.
serie_inexistenta (the source never publishes that component), nepublicata_in_fereastra (it exists, but not in this interval) or fara_perioada_completa (the components exist but never in the same period). The verified count changes with the window, and this says why.
data is null and this says why. No values in the database for the requested combination. The interval falls entirely outside the coverage. It overlaps the coverage but holds no values.
fara_date is prose and may be rephrased, this is not.
Response examples
{
"data": {
"tip": "tranzactii",
"frecventa": "lunar",
"principiu": "direcţional",
"de_la": "2013-01",
"pana_la": "2026-07",
"unitate": "milioane EUR",
"filtre": [],
"perioade": [
{
"perioada": "2013-01",
"luna_sursa": "2013-01"
}
],
"pozitii": [
{
"cod": "IDT6L_T",
"sufix": "T",
"eticheta": "Investiţii directe",
"cale": [
"Investiţii directe"
],
"nivel": 1,
"parinte": null,
"unitate": "milioane EUR",
"perioade_publicate": 163,
"valori": {
"2013-01": "300.39",
"2013-02": "97.60",
"2013-03": "659.58",
"2013-04": "-344.28",
"2013-05": "258.93",
"2013-06": "-151.23",
"2013-07": "57.99",
"2013-08": "322.00",
"2013-09": "351.49",
"2013-10": "110.43",
"2013-11": "215.10",
"2013-12": "1045.94",
"2014-01": "318.33",
"2014-02": "312.73",
"2014-03": "58.32",
"2014-04": "110.24",
"2014-05": "345.12",
"2014-06": "161.94",
"2014-07": "637.45",
"2014-08": "22.08",
"2014-09": "201.54",
"2014-10": "293.25",
"2014-11": "281.13",
"2014-12": "-40.08",
"2015-01": "383.87",
"2015-02": "-152.42",
"2015-03": "757.40",
"2015-04": "-79.46",
"2015-05": "56.82",
"2015-06": "647.95",
"2015-07": "222.99",
"2015-08": "55.39",
"2015-09": "546.79",
"2015-10": "617.26",
"2015-11": "-315.37",
"2015-12": "213.28",
"2016-01": "60.01",
"2016-02": "722.53",
"2016-03": "68.29",
"2016-04": "343.23",
"2016-05": "323.45",
"2016-06": "560.29",
"2016-07": "712.29",
"2016-08": "248.02",
"2016-09": "243.47",
"2016-10": "177.76",
"2016-11": "172.12",
"2016-12": "881.81",
"2017-01": "285.80",
"2017-02": "569.06",
"2017-03": "244.47",
"2017-04": "134.29",
"2017-05": "332.41",
"2017-06": "110.80",
"2017-07": "647.34",
"2017-08": "683.06",
"2017-09": "782.94",
"2017-10": "434.10",
"2017-11": "312.49",
"2017-12": "346.13",
"2018-01": "305.15",
"2018-02": "477.92",
"2018-03": "661.52",
"2018-04": "108.45",
"2018-05": "25.75",
"2018-06": "15.03",
"2018-07": "646.34",
"2018-08": "1021.55",
"2018-09": "1022.36",
"2018-10": "220.28",
"2018-11": "220.25",
"2018-12": "220.38",
"2019-01": "648.06",
"2019-02": "814.41",
"2019-03": "-258.65",
"2019-04": "784.55",
"2019-05": "-130.58",
"2019-06": "832.17",
"2019-07": "659.56",
"2019-08": "931.99",
"2019-09": "95.09",
"2019-10": "24.88",
"2019-11": "40.89",
"2019-12": "406.67",
"2020-01": "916.22",
"2020-02": "-242.13",
"2020-03": "-1074.74",
"2020-04": "355.99",
"2020-05": "800.07",
"2020-06": "236.68",
"2020-07": "223.53",
"2020-08": "256.51",
"2020-09": "196.29",
"2020-10": "439.74",
"2020-11": "254.66",
"2020-12": "595.47",
"2021-01": "625.81",
"2021-02": "432.13",
"2021-03": "975.05",
"2021-04": "243.23",
"2021-05": "92.44",
"2021-06": "1166.30",
"2021-07": "210.91",
"2021-08": "595.21",
"2021-09": "1919.88",
"2021-10": "1459.36",
"2021-11": "200.34",
"2021-12": "927.62",
"2022-01": "849.42",
"2022-02": "1014.65",
"2022-03": "970.64",
"2022-04": "436.76",
"2022-05": "434.73",
"2022-06": "659.20",
"2022-07": "1528.39",
"2022-08": "239.03",
"2022-09": "1248.34",
"2022-10": "1054.76",
"2022-11": "217.94",
"2022-12": "701.18",
"2023-01": "512.45",
"2023-02": "686.55",
"2023-03": "750.60",
"2023-04": "163.30",
"2023-05": "27.42",
"2023-06": "314.29",
"2023-07": "1109.51",
"2023-08": "643.93",
"2023-09": "639.04",
"2023-10": "718.51",
"2023-11": "693.78",
"2023-12": "105.95",
"2024-01": "961.25",
"2024-02": "324.71",
"2024-03": "632.08",
"2024-04": "-249.92",
"2024-05": "-221.70",
"2024-06": "290.14",
"2024-07": "800.78",
"2024-08": "951.35",
"2024-09": "711.86",
"2024-10": "627.85",
"2024-11": "-298.37",
"2024-12": "211.39",
"2025-01": "365.30",
"2025-02": "393.30",
"2025-03": "736.16",
"2025-04": "547.08",
"2025-05": "631.07",
"2025-06": "737.39",
"2025-07": "1181.85",
"2025-08": "633.70",
"2025-09": "1142.53",
"2025-10": "124.96",
"2025-11": "511.87",
"2025-12": "541.62",
"2026-01": "343.82",
"2026-02": "641.44",
"2026-03": "203.74",
"2026-04": "-284.92",
"2026-05": "-213.77",
"2026-06": "-180.71",
"2026-07": "446.70"
}
}
],
"identitati": [
{
"identitate": "total = investiţii în străinătate + investiţii în România (fluxul net)",
"total": "IDT6L_T",
"componente": [
"IDT6L_R",
"IDT6L_N"
],
"operatie": "sumă",
"toleranta": "0.05",
"perioade_verificate": 163,
"perioade_inchise": 163,
"abatere_maxima": "0.01"
}
],
"identitati_neverificate": []
},
"meta": {
"sursa": "BNR — investiţii directe, principiul direcţional (clasa 1367).",
"acoperire": {
"de_la": "2013-01",
"pana_la": "2026-07"
},
"perioade": 163,
"pozitii_totale": 18,
"pozitii_returnate": 18,
"identitati_verificate": 8,
"identitati_inchise": 8,
"nota_total": "La tranzacţii totalul e intrarea netă: `total = străinătate + România`, verificat pe toate perioadele, fiindcă `R` (investiţiile rezidenţilor în străinătate) vine cu semn INVERSAT faţă de stocuri şi de balanţa de plăţi — o ieşire de capital e negativă. Ipoteza diferenţei pică în toate.",
"avertisment_semn": "`R` are aici semn inversat faţă de `tip=stocuri` şi faţă de activele de investiţii directe din /financiar/v1/balanta-plati: o investiţie a rezidenţilor în străinătate apare NEGATIVĂ. `T = R + N` e intrarea netă. Schimbă semnul lui `R` înainte să-l compari cu balanţa de plăţi.",
"nota_principiu": "Principiul direcţional compensează investiţia inversă, deci cifrele sunt mai mici decât investiţiile directe din poziţia investiţională, care e pe principiul activ/pasiv. Diferenţa e aceeaşi sumă pe ambele laturi în toate trimestrele — 16.442,50 şi 16.442,54 milioane în 2026-T1.",
"nota_frecvente": "Tranzacţiile trimestriale sunt exact suma celor lunare (toate trimestrele, abatere maximă 0,01) — o agregare verificată, nu date independente. Cele două serii se opresc aliniat: ultima lună e ultima lună a ultimului trimestru.",
"nota_toleranta": "Toleranţa de ±0.05 e măsurată direct, nu derivată: aici circa nouă valori din zece au zecimale, deci regula de rotunjire folosită la poziţia investiţională nu se aplică. Abaterea maximă observată pe cele opt identităţi × trei clase e 0,01.",
"nota_null": "`null` într-o perioadă înseamnă că poziţia n-a fost publicată atunci, nu zero."
}
}
{
"data": {
"tip": "tranzactii",
"frecventa": "lunar",
"principiu": "direcţional",
"de_la": "2024-06",
"pana_la": "2026-07",
"unitate": "milioane EUR",
"filtre": [],
"perioade": [
{
"perioada": "2024-06",
"luna_sursa": "2024-06"
}
],
"pozitii": [
{
"cod": "IDT6L_T",
"sufix": "T",
"eticheta": "Investiţii directe",
"cale": [
"Investiţii directe"
],
"nivel": 1,
"parinte": null,
"unitate": "milioane EUR",
"perioade_publicate": 26,
"valori": {
"2024-06": "290.14",
"2024-07": "800.78",
"2024-08": "951.35",
"2024-09": "711.86",
"2024-10": "627.85",
"2024-11": "-298.37",
"2024-12": "211.39",
"2025-01": "365.30",
"2025-02": "393.30",
"2025-03": "736.16",
"2025-04": "547.08",
"2025-05": "631.07",
"2025-06": "737.39",
"2025-07": "1181.85",
"2025-08": "633.70",
"2025-09": "1142.53",
"2025-10": "124.96",
"2025-11": "511.87",
"2025-12": "541.62",
"2026-01": "343.82",
"2026-02": "641.44",
"2026-03": "203.74",
"2026-04": "-284.92",
"2026-05": "-213.77",
"2026-06": "-180.71",
"2026-07": "446.70"
}
}
],
"identitati": [
{
"identitate": "total = investiţii în străinătate + investiţii în România (fluxul net)",
"total": "IDT6L_T",
"componente": [
"IDT6L_R",
"IDT6L_N"
],
"operatie": "sumă",
"toleranta": "0.05",
"perioade_verificate": 26,
"perioade_inchise": 26,
"abatere_maxima": "0.01"
}
],
"identitati_neverificate": []
},
"meta": {
"sursa": "BNR — investiţii directe, principiul direcţional (clasa 1367).",
"acoperire": {
"de_la": "2013-01",
"pana_la": "2026-07"
},
"perioade": 26,
"pozitii_totale": 18,
"pozitii_returnate": 18,
"identitati_verificate": 8,
"identitati_inchise": 8,
"nota_total": "La tranzacţii totalul e intrarea netă: `total = străinătate + România`, verificat pe toate perioadele, fiindcă `R` (investiţiile rezidenţilor în străinătate) vine cu semn INVERSAT faţă de stocuri şi de balanţa de plăţi — o ieşire de capital e negativă. Ipoteza diferenţei pică în toate.",
"avertisment_semn": "`R` are aici semn inversat faţă de `tip=stocuri` şi faţă de activele de investiţii directe din /financiar/v1/balanta-plati: o investiţie a rezidenţilor în străinătate apare NEGATIVĂ. `T = R + N` e intrarea netă. Schimbă semnul lui `R` înainte să-l compari cu balanţa de plăţi.",
"nota_principiu": "Principiul direcţional compensează investiţia inversă, deci cifrele sunt mai mici decât investiţiile directe din poziţia investiţională, care e pe principiul activ/pasiv. Diferenţa e aceeaşi sumă pe ambele laturi în toate trimestrele — 16.442,50 şi 16.442,54 milioane în 2026-T1.",
"nota_frecvente": "Tranzacţiile trimestriale sunt exact suma celor lunare (toate trimestrele, abatere maximă 0,01) — o agregare verificată, nu date independente. Cele două serii se opresc aliniat: ultima lună e ultima lună a ultimului trimestru.",
"nota_toleranta": "Toleranţa de ±0.05 e măsurată direct, nu derivată: aici circa nouă valori din zece au zecimale, deci regula de rotunjire folosită la poziţia investiţională nu se aplică. Abaterea maximă observată pe cele opt identităţi × trei clase e 0,01.",
"nota_null": "`null` într-o perioadă înseamnă că poziţia n-a fost publicată atunci, nu zero."
}
}
{
"data": {
"tip": "tranzactii",
"frecventa": "lunar",
"principiu": "direcţional",
"de_la": "2013-01",
"pana_la": "2024-06",
"unitate": "milioane EUR",
"filtre": [],
"perioade": [
{
"perioada": "2013-01",
"luna_sursa": "2013-01"
}
],
"pozitii": [
{
"cod": "IDT6L_T",
"sufix": "T",
"eticheta": "Investiţii directe",
"cale": [
"Investiţii directe"
],
"nivel": 1,
"parinte": null,
"unitate": "milioane EUR",
"perioade_publicate": 138,
"valori": {
"2013-01": "300.39",
"2013-02": "97.60",
"2013-03": "659.58",
"2013-04": "-344.28",
"2013-05": "258.93",
"2013-06": "-151.23",
"2013-07": "57.99",
"2013-08": "322.00",
"2013-09": "351.49",
"2013-10": "110.43",
"2013-11": "215.10",
"2013-12": "1045.94",
"2014-01": "318.33",
"2014-02": "312.73",
"2014-03": "58.32",
"2014-04": "110.24",
"2014-05": "345.12",
"2014-06": "161.94",
"2014-07": "637.45",
"2014-08": "22.08",
"2014-09": "201.54",
"2014-10": "293.25",
"2014-11": "281.13",
"2014-12": "-40.08",
"2015-01": "383.87",
"2015-02": "-152.42",
"2015-03": "757.40",
"2015-04": "-79.46",
"2015-05": "56.82",
"2015-06": "647.95",
"2015-07": "222.99",
"2015-08": "55.39",
"2015-09": "546.79",
"2015-10": "617.26",
"2015-11": "-315.37",
"2015-12": "213.28",
"2016-01": "60.01",
"2016-02": "722.53",
"2016-03": "68.29",
"2016-04": "343.23",
"2016-05": "323.45",
"2016-06": "560.29",
"2016-07": "712.29",
"2016-08": "248.02",
"2016-09": "243.47",
"2016-10": "177.76",
"2016-11": "172.12",
"2016-12": "881.81",
"2017-01": "285.80",
"2017-02": "569.06",
"2017-03": "244.47",
"2017-04": "134.29",
"2017-05": "332.41",
"2017-06": "110.80",
"2017-07": "647.34",
"2017-08": "683.06",
"2017-09": "782.94",
"2017-10": "434.10",
"2017-11": "312.49",
"2017-12": "346.13",
"2018-01": "305.15",
"2018-02": "477.92",
"2018-03": "661.52",
"2018-04": "108.45",
"2018-05": "25.75",
"2018-06": "15.03",
"2018-07": "646.34",
"2018-08": "1021.55",
"2018-09": "1022.36",
"2018-10": "220.28",
"2018-11": "220.25",
"2018-12": "220.38",
"2019-01": "648.06",
"2019-02": "814.41",
"2019-03": "-258.65",
"2019-04": "784.55",
"2019-05": "-130.58",
"2019-06": "832.17",
"2019-07": "659.56",
"2019-08": "931.99",
"2019-09": "95.09",
"2019-10": "24.88",
"2019-11": "40.89",
"2019-12": "406.67",
"2020-01": "916.22",
"2020-02": "-242.13",
"2020-03": "-1074.74",
"2020-04": "355.99",
"2020-05": "800.07",
"2020-06": "236.68",
"2020-07": "223.53",
"2020-08": "256.51",
"2020-09": "196.29",
"2020-10": "439.74",
"2020-11": "254.66",
"2020-12": "595.47",
"2021-01": "625.81",
"2021-02": "432.13",
"2021-03": "975.05",
"2021-04": "243.23",
"2021-05": "92.44",
"2021-06": "1166.30",
"2021-07": "210.91",
"2021-08": "595.21",
"2021-09": "1919.88",
"2021-10": "1459.36",
"2021-11": "200.34",
"2021-12": "927.62",
"2022-01": "849.42",
"2022-02": "1014.65",
"2022-03": "970.64",
"2022-04": "436.76",
"2022-05": "434.73",
"2022-06": "659.20",
"2022-07": "1528.39",
"2022-08": "239.03",
"2022-09": "1248.34",
"2022-10": "1054.76",
"2022-11": "217.94",
"2022-12": "701.18",
"2023-01": "512.45",
"2023-02": "686.55",
"2023-03": "750.60",
"2023-04": "163.30",
"2023-05": "27.42",
"2023-06": "314.29",
"2023-07": "1109.51",
"2023-08": "643.93",
"2023-09": "639.04",
"2023-10": "718.51",
"2023-11": "693.78",
"2023-12": "105.95",
"2024-01": "961.25",
"2024-02": "324.71",
"2024-03": "632.08",
"2024-04": "-249.92",
"2024-05": "-221.70",
"2024-06": "290.14"
}
}
],
"identitati": [
{
"identitate": "total = investiţii în străinătate + investiţii în România (fluxul net)",
"total": "IDT6L_T",
"componente": [
"IDT6L_R",
"IDT6L_N"
],
"operatie": "sumă",
"toleranta": "0.05",
"perioade_verificate": 138,
"perioade_inchise": 138,
"abatere_maxima": "0.01"
}
],
"identitati_neverificate": []
},
"meta": {
"sursa": "BNR — investiţii directe, principiul direcţional (clasa 1367).",
"acoperire": {
"de_la": "2013-01",
"pana_la": "2026-07"
},
"perioade": 138,
"pozitii_totale": 18,
"pozitii_returnate": 18,
"identitati_verificate": 8,
"identitati_inchise": 8,
"nota_total": "La tranzacţii totalul e intrarea netă: `total = străinătate + România`, verificat pe toate perioadele, fiindcă `R` (investiţiile rezidenţilor în străinătate) vine cu semn INVERSAT faţă de stocuri şi de balanţa de plăţi — o ieşire de capital e negativă. Ipoteza diferenţei pică în toate.",
"avertisment_semn": "`R` are aici semn inversat faţă de `tip=stocuri` şi faţă de activele de investiţii directe din /financiar/v1/balanta-plati: o investiţie a rezidenţilor în străinătate apare NEGATIVĂ. `T = R + N` e intrarea netă. Schimbă semnul lui `R` înainte să-l compari cu balanţa de plăţi.",
"nota_principiu": "Principiul direcţional compensează investiţia inversă, deci cifrele sunt mai mici decât investiţiile directe din poziţia investiţională, care e pe principiul activ/pasiv. Diferenţa e aceeaşi sumă pe ambele laturi în toate trimestrele — 16.442,50 şi 16.442,54 milioane în 2026-T1.",
"nota_frecvente": "Tranzacţiile trimestriale sunt exact suma celor lunare (toate trimestrele, abatere maximă 0,01) — o agregare verificată, nu date independente. Cele două serii se opresc aliniat: ultima lună e ultima lună a ultimului trimestru.",
"nota_toleranta": "Toleranţa de ±0.05 e măsurată direct, nu derivată: aici circa nouă valori din zece au zecimale, deci regula de rotunjire folosită la poziţia investiţională nu se aplică. Abaterea maximă observată pe cele opt identităţi × trei clase e 0,01.",
"nota_null": "`null` într-o perioadă înseamnă că poziţia n-a fost publicată atunci, nu zero."
}
}
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 | validare | interval_prea_lung beyond 180 periods, a type or frequency outside the list, nivel_max outside 1–5. combinatie_inexistenta — stocks at monthly frequency; the response lists the published combinations. |
| 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": "interval_prea_lung beyond 180 periods, a type or frequency outside the list, nivel_max outside 1–5. combinatie_inexistenta — stocks at monthly frequency; the response lists the published combinations.",
"detalii": {
"tip": [
"The value sent does not satisfy the parameter rule."
]
}
}
}