oneapi
Autentificare
Financiar v1 / RiscCredit

Datoria externă

Datoria externă a României în metodologia BPM6, în două tăieturi ale aceleiaşi cifre — pe scadenţe
cu debitori şi creditori, sau pe sectoare instituţionale cu scadenţe şi instrumente — plus varianta
netă. În mai 2026: 230.913,5 milioane euro.

Cele două tăieturi se leagă exact: termen lung + termen scurt dă acelaşi total ca datoria
brută pe sectoare, verificat pe toate lunile comune cu abatere maximă 0,1 — în mai 2026, 183.922,2 +
46.991,3 = 230.913,5. Controlul se calculează la fiecare cerere, în identitati.control_intre_taieturi.

Trimestrialul e stoc de sfârşit de trimestru. Comparat cu seria lunară pe eticheta din sursă nu
se potriveşte niciunul dintre trimestrele comune, cu abateri de până la 8.815; decalat cu două luni
se potrivesc toate. Perioadele trimestriale poartă data_referinta, iar controlul o foloseşte.

Ierarhia stă în locuri diferite la cele două tăieturi. La scadente o poartă denumirea —
DE6L_DP nu e prefixat de DE6L_DTML, deci regula pe cod ar lăsa douăsprezece serii fără părinte.
La sectoare o poartă codul: nouă serii se rezolvă doar aşa. _meta.ierarhie_din spune care.

Tăietura pe scadenţe amestecă un stoc cu un flux: „Datorie externă" e sold, „Serviciul datoriei"
sunt plăţile din perioadă. Aceeaşi unitate, naturi diferite, deci fiecare poziţie poartă natura.

Toleranţa vine din pasul de rotunjire măsurat al fiecărei clase: datoria brută publică o
zecimală, cea netă două. Aceeaşi familie, două precizii.

Datoria netă e o serie încheiată, oprită în 2018-T3, deşi are exact aceleaşi 59 de coduri ca cea
brută.

Totalul „III. (I+II)" nu e părinte, dar se verifică. III stă ca rădăcină lângă I şi II, cum
îl publică sursa; relaţia scrisă în denumire se verifică separat, în identitati.totaluri_din_denumire.

Un nod se poate închide doar pe o parte din perioade. Când o componentă nu e publicată, suma nu se
poate forma şi perioada se sare — la datoria netă, Banca Centrală lipseşte în 2007–2012. Nodurile
astea apar în identitati.descompunere.verificate_partial, cu perioadele sărite, nu ca „închise".

GET
https://oneapi.ro/api/financiar/v1/datorie-externa

Parametri de interogare

NumeTipDescriereValori acceptate
dimensiuneopțional string | null Opţional, implicit sectoare. Sau scadente — acelaşi total, altă defalcare. sectoarescadente
tipopțional string | null Opţional, implicit bruta. neta există doar pe sectoare, trimestrial, şi se opreşte în 2018-T3. brutaneta
frecventaopțional string | null Opţional; implicit lunar, iar la datoria netă trimestrial, fiindcă altfel nu există. lunartrimestrial
de_laopțional string | null Opţional, YYYY-MM sau YYYY-Tn. ex. 2024-06-15
pana_laopțional string | null Opţional, YYYY-MM sau YYYY-Tn. ex. 2024-06-15
nivel_maxopțional integer | null Opţional, 1–4. nivel_max=1 lasă doar totalurile. 1 – 4

Cum se comportă

  • Datoria externă a României în metodologia BPM6, în două tăieturi ale aceleiaşi cifre — pe scadenţe cu debitori şi creditori, sau pe sectoare instituţionale cu scadenţe şi instrumente — plus varianta netă. În mai 2026: 230.913,5 milioane euro.
  • Cele două tăieturi se leagă exact, de aceea sunt o rută cu un parametru şi nu două. termen lung + termen scurt dă acelaşi total ca datoria brută pe sectoare: verificat pe toate lunile comune, abatere maximă 0,1. În mai 2026, 183.922,2 + 46.991,3 = 230.913,5. Controlul se calculează la fiecare cerere, în identitati.control_intre_taieturi.
  • Trimestrialul e stoc de sfârşit de trimestru. Comparat cu seria lunară pe eticheta din sursă nu se potriveşte niciunul dintre trimestrele comune, cu abateri de până la 8.815; decalat cu două luni se potrivesc toate. Trimestrul 2024-T2 e 196.934,3, adică valoarea din iunie, nu cea din aprilie (188.119). Perioadele trimestriale poartă data_referinta, iar controlul o foloseşte.
  • E a treia rută din modul unde apare regula asta, după poziţia investiţională şi stocurile de investiţii directe. Orice serie de stoc trimestrială de la BNR e datată la sfârşit de perioadă, deşi eticheta arată începutul.
  • Ierarhia stă în locuri diferite la cele două tăieturi, iar ruta o declară. La scadente o poartă denumirea: DE6L_DP nu e prefixat de DE6L_DTML, deci regula pe cod ar lăsa douăsprezece serii fără părinte. La sectoare o poartă codul: nouă serii se rezolvă doar aşa. Zero dezacorduri la ambele acolo unde ambele reguli răspund, deci fiecare e corectă la ea acasă — _meta.ierarhie_din spune care s-a folosit.
  • Tăietura pe scadenţe amestecă un stoc cu un flux. „Datorie externă pe termen lung" e sold; „Serviciul datoriei pe termen lung" sunt plăţile din perioadă. Aceeaşi unitate, naturi diferite, deci fiecare poziţie poartă natura — nu se adună între ele.
  • Toleranţa vine din eroarea de rotunjire per cifră, măsurată pe clasă. Datoria brută publică o zecimală (abaterile sunt exclusiv −0,1, 0 şi +0,1), deci 0,05 per cifră; cea netă publică două, deci 0,005. Aceeaşi familie, două precizii.
  • Trei luni nu se închid, toate pe tăietura pe scadenţe: 2010-11 şi 2013-09 cu 0,4, şi 2024-03 cu 7,9 la 146.279 — adică 0,005%. Se raportează în identitati.descompunere.abateri, cu totalul şi suma componentelor.
  • Datoria netă e o serie încheiată, oprită în 2018-T3, deşi are exact aceleaşi 59 de coduri ca cea brută. Controlul între tăieturi nu i se aplică: măsoară altceva.
  • Un nod poate fi verificat doar pe o parte din perioade, şi atunci o spune. Când o componentă nu e publicată, suma nu se poate forma: la datoria netă, Banca Centrală lipseşte în 2007-T1 → 2012-T4, deci TDEN6T_D şi alte patru noduri se verifică doar din 2013. Apar în identitati.descompunere.verificate_partial, cu perioadele sărite şi componentele lipsă.
  • „III. Datorie externă (I+II)" e rădăcină, nu părinte. Stă lângă I şi II, cum îl publică sursa; relaţia scrisă în denumire se verifică separat, în identitati.totaluri_din_denumire, şi se închide în toleranţa clasei.

La ce folosește

  • Datoria externă a statului faţă de cea privată, lună de lună.
  • Cât din datorie e pe termen scurt — indicatorul de vulnerabilitate, alături de rezerve.
  • Serviciul datoriei: cât se plăteşte efectiv în fiecare perioadă.

Structura răspunsului

CâmpTipDescriere
data.dimensiune string Dimensiunea după care sunt defalcate valorile.
data.tip string intreprinderi sau unitati_locale — două concepte diferite, niciodată însumate.
data.frecventa string Frecvenţa la care sursa publică seria (zilnic, lunar, trimestrial, anual).
data.metodologie string Mereu BPM6.
data.de_la string Începutul intervalului acoperit de răspuns.
data.pana_la string Sfârşitul intervalului acoperit de răspuns, inclusiv.
data.unitate string Unitatea de măsură a valorilor. Citeşte-o înainte de a le pune pe un grafic sau de a le aduna.
data.filtre array Filtrele aplicate efectiv, aşa cum le-a înţeles ruta — util când o valoare a fost normalizată.
data.perioade[].perioada string Perioada la care se referă valoarea.
data.perioade[].luna_sursa string Luna aşa cum o etichetează sursa, înainte de normalizare.
data.pozitii[].cod string Codul din nomenclatorul sursei — cheia pe care se filtrează.
data.pozitii[].eticheta string Eticheta afişabilă a valorii — versiunea citibilă a codului de alături.
data.pozitii[].cale array Calea în ierarhie, de la rădăcină până la elementul curent.
data.pozitii[].nivel integer Nivelul din ierarhia clasificării — cu cât e mai adânc, cu atât e mai detaliat.
data.pozitii[].parinte null Codul poziţiei-părinte, din sursa declarată în meta.ierarhie_din.
data.pozitii[].natura string stoc sau flux. Numai tăietura pe scadenţe le amestecă; la sectoare totul e stoc.
data.pozitii[].unitate string Unitatea de măsură a valorilor. Citeşte-o înainte de a le pune pe un grafic sau de a le aduna.
data.pozitii[].perioade_publicate integer Câte perioade a publicat efectiv sursa.
data.pozitii[].valori object Valorile seriei, pe perioade.
data.identitati.descompunere.identitate string Identitatea verificată — ce sumă trebuie să dea ce total.
data.identitati.descompunere.noduri_cu_copii integer Câte noduri din ierarhie au cel puţin un descendent.
data.identitati.descompunere.noduri_inchise integer Câte noduri din ierarhie s-au închis în toleranţă.
data.identitati.descompunere.verificari integer Câte combinaţii au fost verificate.
data.identitati.descompunere.toleranta_regula string
data.identitati.descompunere.abateri array Nodurile care nu se închid, cu perioadele şi cifrele lor.
data.identitati.descompunere.noduri_verificate_partial integer
data.identitati.descompunere.verificate_partial array Nodurile cu perioade în care o componentă lipseşte, deci suma nu s-a putut forma: câte, între ce perioade, ce componente.
data.identitati.totaluri_din_denumire[] array Totalurile scrise în denumire ca sumă a altor rădăcini — „III. (I+II)" —, verificate pe fiecare perioadă.
data.identitati.totaluri_din_denumire[].total string
data.identitati.totaluri_din_denumire[].formula string
data.identitati.totaluri_din_denumire[].componente array Componentele care se adună în total.
data.identitati.totaluri_din_denumire[].toleranta string Cât se acceptă ca abatere înainte ca identitatea să fie considerată neînchisă — rotunjirea sursei, nu o eroare.
data.identitati.totaluri_din_denumire[].perioade_verificate integer
data.identitati.totaluri_din_denumire[].perioade_inchise integer
data.identitati.totaluri_din_denumire[].abatere_maxima string Cea mai mare abatere întâlnită între suma componentelor şi total.
data.identitati.control_intre_taieturi object Totalul pe scadenţe faţă de cel pe sectoare, la luna_referinta. Absent la datoria netă.
data.identitati.control_intre_taieturi.identitate string Identitatea verificată — ce sumă trebuie să dea ce total.
data.identitati.control_intre_taieturi.toleranta string Cât se acceptă ca abatere înainte ca identitatea să fie considerată neînchisă — rotunjirea sursei, nu o eroare.
data.identitati.control_intre_taieturi.perechi_verificate integer
data.identitati.control_intre_taieturi.perechi_inchise integer Câte perechi verificate s-au închis în toleranţă.
data.identitati.control_intre_taieturi.nota_datare string
data.identitati.control_intre_taieturi.perechi[].perioada string Perioada la care se referă valoarea.
data.identitati.control_intre_taieturi.perechi[].luna_referinta string
data.identitati.control_intre_taieturi.perechi[].pe_scadente string
data.identitati.control_intre_taieturi.perechi[].pe_sectoare string
data.identitati.control_intre_taieturi.perechi[].abatere string Diferenţa măsurată între cele două mărimi comparate.
data.identitati.control_intre_taieturi.perechi[].se_inchide boolean Dacă verificarea s-a închis în toleranţă.
meta.sursa string Sursa oficială din care vin datele, cu licenţa ei acolo unde e cerută.
meta.acoperire.de_la string Prima perioadă pentru care avem date.
meta.acoperire.pana_la string Ultima perioadă pentru care avem date.
meta.perioade integer Perioadele pentru care există valori.
meta.pozitii_totale integer Câte poziţii se potrivesc filtrelor, dincolo de pagina curentă.
meta.pozitii_returnate integer Câte poziţii s-au întors efectiv în răspunsul ăsta.
meta.ierarhie_din string
meta.nota_ierarhie string Cum se citeşte ierarhia clasificării şi ce niveluri nu se adună între ele.
meta.nota_control string Ce verificare de control s-a făcut pe valorile din răspuns.
meta.nota_totaluri string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_toleranta string De unde vine toleranţa şi de ce nu e zero.
meta.nota_null string De ce lipsesc unele valori: sursa nu le-a publicat, nu le-a calculat ori le-a suprimat.
data.perioade[].data_referinta Doar la frecvenţă trimestrială: sfârşitul trimestrului, momentul la care e măsurat stocul.
meta.fara_date data e null, iar aici stă motivul. Nu există valori în bază pentru combinaţia cerută. Intervalul e în afara acoperirii, care diferă pe combinaţii.
meta.fara_date_cod Cuvântul scurt şi STABIL al motivului, pentru clienţii care comută pe el în cod: fara_date e proză şi se poate reformula, ăsta nu.

Exemple de răspuns

GEThttps://oneapi.ro/api/financiar/v1/datorie-externa
{
    "data": {
        "dimensiune": "sectoare",
        "tip": "bruta",
        "frecventa": "lunar",
        "metodologie": "BPM6",
        "de_la": "2017-01",
        "pana_la": "2026-07",
        "unitate": "milioane EUR",
        "filtre": [],
        "perioade": [
            {
                "perioada": "2017-01",
                "luna_sursa": "2017-01"
            }
        ],
        "pozitii": [
            {
                "cod": "TDE6L_D",
                "eticheta": "I. Datoria externă",
                "cale": [
                    "I. Datoria externă"
                ],
                "nivel": 1,
                "parinte": null,
                "natura": "stoc",
                "unitate": "milioane EUR",
                "perioade_publicate": 115,
                "valori": {
                    "2017-01": "72141.3",
                    "2017-02": "72709.2",
                    "2017-03": "73786.9",
                    "2017-04": "74879.4",
                    "2017-05": "75164.7",
                    "2017-06": "76931.0",
                    "2017-07": "74958.6",
                    "2017-08": "74582.6",
                    "2017-09": "74681.5",
                    "2017-10": "73965.6",
                    "2017-11": "73520.9",
                    "2017-12": "73762.3",
                    "2018-01": "71654.7",
                    "2018-02": "74822.2",
                    "2018-03": "75664.4",
                    "2018-04": "74818.0",
                    "2018-05": "74503.0",
                    "2018-06": "73822.6",
                    "2018-07": "74219.3",
                    "2018-08": "74648.0",
                    "2018-09": "73988.5",
                    "2018-10": "74589.2",
                    "2018-11": "74510.9",
                    "2018-12": "73780.2",
                    "2019-01": "73126.6",
                    "2019-02": "74436.4",
                    "2019-03": "73959.9",
                    "2019-04": "76686.6",
                    "2019-05": "76902.2",
                    "2019-06": "78029.1",
                    "2019-07": "80152.9",
                    "2019-08": "81234.7",
                    "2019-09": "79683.8",
                    "2019-10": "80266.7",
                    "2019-11": "79188.8",
                    "2019-12": "77508.9",
                    "2020-01": "80447.4",
                    "2020-02": "82557.0",
                    "2020-03": "79382.4",
                    "2020-04": "78167.8",
                    "2020-05": "82832.4",
                    "2020-06": "83444.3",
                    "2020-07": "86765.4",
                    "2020-08": "86948.2",
                    "2020-09": "87796.1",
                    "2020-10": "89248.3",
                    "2020-11": "90581.1",
                    "2020-12": "95377.8",
                    "2021-01": "95734.4",
                    "2021-02": "93732.0",
                    "2021-03": "93310.5",
                    "2021-04": "103111.8",
                    "2021-05": "96666.6",
                    "2021-06": "97035.1",
                    "2021-07": "100325.2",
                    "2021-08": "103462.2",
                    "2021-09": "101253.4",
                    "2021-10": "100510.8",
                    "2021-11": "100260.3",
                    "2021-12": "101455.9",
                    "2022-01": "104266.9",
                    "2022-02": "102556.0",
                    "2022-03": "104121.9",
                    "2022-04": "102953.1",
                    "2022-05": "104886.3",
                    "2022-06": "103252.0",
                    "2022-07": "105579.7",
                    "2022-08": "105904.5",
                    "2022-09": "104722.4",
                    "2022-10": "106187.4",
                    "2022-11": "109329.9",
                    "2022-12": "110001.3",
                    "2023-01": "117120.3",
                    "2023-02": "118199.0",
                    "2023-03": "117745.1",
                    "2023-04": "118748.4",
                    "2023-05": "121808.5",
                    "2023-06": "124301.6",
                    "2023-07": "126387.6",
                    "2023-08": "125513.3",
                    "2023-09": "130391.4",
                    "2023-10": "130264.9",
                    "2023-11": "131194.1",
                    "2023-12": "135600.1",
                    "2024-01": "140189.3",
                    "2024-02": "142796.2",
                    "2024-03": "144401.5",
                    "2024-04": "141733.1",
                    "2024-05": "144756.2",
                    "2024-06": "148804.4",
                    "2024-07": "146517.8",
                    "2024-08": "147397.7",
                    "2024-09": "154849.6",
                    "2024-10": "152093.3",
                    "2024-11": "153224.3",
                    "2024-12": "154011.3",
                    "2025-01": "152606.8",
                    "2025-02": "157600.8",
                    "2025-03": "156246.5",
                    "2025-04": "158240.3",
                    "2025-05": "158314.6",
                    "2025-06": "160551.6",
                    "2025-07": "169253.0",
                    "2025-08": "170627.3",
                    "2025-09": "169867.4",
                    "2025-10": "174332.4",
                    "2025-11": "175963.8",
                    "2025-12": "176940.5",
                    "2026-01": "178256.5",
                    "2026-02": "178451.8",
                    "2026-03": "179218.3",
                    "2026-04": "180061.0",
                    "2026-05": "181239.9",
                    "2026-06": "182303.3",
                    "2026-07": "181207.0"
                }
            }
        ],
        "identitati": {
            "descompunere": {
                "identitate": "fiecare poziţie = suma copiilor ei direcţi",
                "noduri_cu_copii": 14,
                "noduri_inchise": 14,
                "verificari": 1610,
                "toleranta_regula": "(k+1) × 0.05 milioane pentru k componente, din eroarea de rotunjire per cifră măsurată pe clasă",
                "abateri": [],
                "noduri_verificate_partial": 0,
                "verificate_partial": []
            },
            "totaluri_din_denumire": [
                {
                    "total": "TDE6L_B",
                    "formula": "I+II",
                    "componente": [
                        "TDE6L_D",
                        "TDE6L_I"
                    ],
                    "toleranta": "0.1500",
                    "perioade_verificate": 115,
                    "perioade_inchise": 115,
                    "abatere_maxima": "0.1"
                }
            ],
            "control_intre_taieturi": {
                "identitate": "termen lung + termen scurt (pe scadenţe) = datoria brută (pe sectoare)",
                "toleranta": "0.1500",
                "perechi_verificate": 115,
                "perechi_inchise": 115,
                "nota_datare": "Comparaţia se face la `luna_referinta`. La frecvenţă trimestrială aceea e sfârşitul trimestrului: pe eticheta din sursă nu se potriveşte niciunul dintre trimestrele comune, decalat corect se potrivesc toate.",
                "perechi": [
                    {
                        "perioada": "2026-02",
                        "luna_referinta": "2026-02",
                        "pe_scadente": "229963.3",
                        "pe_sectoare": "229963.4",
                        "abatere": "0.1",
                        "se_inchide": true
                    }
                ]
            }
        }
    },
    "meta": {
        "sursa": "BNR — datoria externă, metodologia BPM6 (clasa 1747).",
        "acoperire": {
            "de_la": "2017-01",
            "pana_la": "2026-07"
        },
        "perioade": 115,
        "pozitii_totale": 59,
        "pozitii_returnate": 59,
        "ierarhie_din": "cod",
        "nota_ierarhie": "Ierarhia vine din cod la această tăietură. La `scadente` o poartă denumirea (`DE6L_DP` nu e prefixat de `DE6L_DTML`), la `sectoare` codul — fiecare regulă aplicată în locul greşit lasă poziţii fără părinte.",
        "nota_control": "115 din 115 perechi se închid. `termen lung + termen scurt` faţă de datoria brută pe sectoare, la luna de referinţă.",
        "nota_totaluri": "Totalul „III. (I+II)\" e rădăcină, ca în sursă, nu părinte al lui I şi II; relaţia din denumire se verifică în `identitati.totaluri_din_denumire`.",
        "nota_toleranta": "Toleranţa vine din eroarea de rotunjire per cifră, măsurată pe clasă (±0.05): datoria brută publică o zecimală, cea netă două.",
        "nota_null": "`null` într-o perioadă înseamnă că poziţia n-a fost publicată atunci, nu zero."
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validareinterval_prea_lung peste 240 de perioade, dimensiune, tip sau frecvenţă în afara listelor, ori nivel_max în afara intervalului 1–4. combinatie_inexistenta — răspunsul listează combinaţiile publicate.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "interval_prea_lung peste 240 de perioade, dimensiune, tip sau frecvenţă în afara listelor, ori nivel_max în afara intervalului 1–4. combinatie_inexistenta — răspunsul listează combinaţiile publicate.",
        "detalii": {
            "dimensiune": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}