oneapi
Autentificare
Financiar v1 / RiscCredit

Balanţa de plăţi

Balanţa de plăţi BPM6 — 208 poziţii, lunar din ianuarie 2005 şi trimestrial, cu exact aceleaşi
coduri
la ambele frecvenţe. Soldul contului curent în mai 2026: −2.711,0 milioane euro.

Structura e flux × poziţie. Şase fluxuri — credit, debit, sold, active nete, pasive nete, net —
peste un arbore de până la cinci niveluri: „CONTUL CURENT; Bunuri; Merchanting - export net;
Merchanting - bunuri...". 94 de poziţii stau la nivelul patru şi 57 la nivelul cinci, deci
* nivel_max există ca să poţi cere doar structura de sus.
*
* Identitatea sold = credit − debit se închide pe toate perechile, dar numai cu toleranţă de
* ±1 milion — şi toleranţa nu e aleasă din prudenţă, ci măsurată.
Pe contul curent abaterea e
* exact 0 sau exact 1, niciodată altceva (numărătoarea pe toată seria e în meta.nota_identitate):
* rotunjirea independentă a trei cifre
* exprimate în milioane. Cu o toleranţă de 0,51 identitatea ar fi părut că pică într-un sfert din luni.
* identitati.toleranta o declară, ca „toate perechile se închid" să nu sune mai tare decât e.

Verificarea identităţii se face pe toate poziţiile, nu pe cele întoarse: un filtru pe
flux=sold n-are voie să facă garanţia să dispară.

Ierarhia vine din denumire, care poartă calea completă. Prefixul codului dă azi acelaşi părinte în
toate cele 192 de cazuri, dar e o coincidenţă de construcţie; parinte se află din cale, fără
presupuneri.

Poziţiile fără nicio valoare pe toată seria stau la adâncimi diferite — până la nivelul patru —
deci se recunosc după lipsa valorilor pe TOATĂ seria, nu pe fereastra cerută şi nu după lungimea
codului. este_antet le marchează.

Merchanting-ul şi-a schimbat convenţia de semn: până în 2012 1BM = 1BMV − 1BMA, cu achiziţiile
pozitive; din 2013 1BM = 1BMA + 1BMV, cu achiziţiile negative. 1Z („Bunuri şi servicii") e frate
cu 1B şi 1S
, nu părintele lor: suma copiilor contului curent le numără de două ori.

Perioadele se scriu YYYY-MM la ambele frecvenţe; la trimestrial, luna de început a trimestrului.

GET
https://oneapi.ro/api/financiar/v1/balanta-plati

Parametri de interogare

NumeTipDescriereValori acceptate
frecventaopțional string | null Opţional, implicit lunar. Sau trimestrial — aceleaşi 208 poziţii. lunartrimestrial
de_laopțional string | null Opţional, YYYY-MM. Fără el, ultima perioadă publicată. ex. 2024-06-15
pana_laopțional string | null Opţional, YYYY-MM. Maximum 120 de perioade. ex. 2024-06-15
fluxopțional string | null Opţional: credit, debit, sold, active_nete, pasive_nete, net. creditdebitsoldactive_netepasive_netenet
nivel_maxopțional integer | null Opţional, 1–5. Limitează adâncimea arborelui. 1 – 5

Cum se comportă

  • Balanţa de plăţi în metodologia BPM6 — 208 poziţii, lunar din ianuarie 2005 şi trimestrial. Soldul contului curent în mai 2026: −2.711,0 milioane euro (credit 13.161, debit 15.872).
  • Cele două frecvenţe au EXACT aceleaşi coduri — verificat, zero diferenţe în ambele sensuri. E aceeaşi structură la altă granularitate, deci o rută cu un parametru, nu două care ar diverge la prima corectură.
  • Structura e flux × poziţie. Şase fluxuri — credit, debit, sold, active nete, pasive nete, net — peste un arbore de până la cinci niveluri: „CONTUL CURENT; Bunuri; Merchanting - export net; Merchanting - bunuri...". 94 de poziţii stau la nivelul patru şi 57 la nivelul cinci, de aceea există nivel_max.
  • Identitatea sold = credit − debit se închide pe toate perechile, dar numai cu toleranţă de ±1 milion — şi toleranţa e MĂSURATĂ, nu aleasă din prudenţă. Pe contul curent, abaterea e exact 0 sau exact 1, niciodată altceva — meta.nota_identitate dă numărătoarea pe toată seria: rotunjirea independentă a trei cifre exprimate în milioane. Cu o toleranţă de 0,51 identitatea ar fi părut că pică într-un sfert din luni. identitati.toleranta o declară, ca „toate perechile se închid" să nu sune mai tare decât e.
  • Verificarea identităţii se face pe TOATE poziţiile, nu pe cele întoarse. Un filtru pe flux=sold întoarce două poziţii, dar identitatea raportează în continuare cele 32 de perechi verificate: e garanţia că cifrele se leagă, şi n-are voie să dispară cu un filtru.
  • Ierarhia vine din denumire, care poartă calea completă. Prefixul codului dă azi acelaşi părinte în toate cele 192 de cazuri, dar e o coincidenţă de construcţie, nu o regulă declarată — aşa că parinte se află din cale, fără presupuneri. Verificat: zero părinţi nerezolvaţi.
  • Şase poziţii n-au nicio valoare pe toată seria şi stau la adâncimi diferite — până la nivelul patru: merchanting şi veniturile din active de rezervă la debit, activele de rezervă la pasive ş.a., unde BPM6 nu înregistrează nimic. Nu se recunosc după lungimea codului, ci după lipsa valorilor pe TOATĂ seria — nu pe fereastra cerută, unde o serie începută mai târziu ar părea goală. este_antet le marchează.
  • Merchanting-ul şi-a schimbat convenţia de semn. Până în 2012 1BM = 1BMV − 1BMA, cu achiziţiile (1BMA) pozitive; din 2013 1BM = 1BMA + 1BMV, cu achiziţiile negative. O singură formulă nu închide ambele perioade.
  • 1Z („Bunuri şi servicii") e frate cu 1B şi 1S, nu părintele lor: 1Z = 1B + 1S, în toate lunile. Nu aduna toţi copiii contului curent — bunurile şi serviciile s-ar număra de două ori.
  • Perioadele se scriu YYYY-MM la ambele frecvenţe; la trimestrial, luna de început a trimestrului. Maximum 120 de perioade.

La ce folosește

  • Deficitul de cont curent, lună de lună, cu componentele lui.
  • Exportul şi importul de servicii pe categorii — transport, turism, IT.
  • Contul financiar: investiţii directe, de portofoliu, active de rezervă.

Structura răspunsului

CâmpTipDescriere
data.frecventa string Frecvenţa la care sursa publică seria (zilnic, lunar, trimestrial, anual).
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 Mereu milioane EUR.
data.filtre array Filtrele aplicate efectiv, aşa cum le-a înţeles ruta — util când o valoare a fost normalizată.
data.perioade array Perioadele pentru care există valori.
data.pozitii[].cod string Codul din nomenclatorul sursei — cheia pe care se filtrează.
data.pozitii[].flux string Care dintre cele şase fluxuri.
data.pozitii[].eticheta string Eticheta afişabilă a valorii — versiunea citibilă a codului de alături.
data.pozitii[].cale array Calea ierarhică, fără segmentul de flux care o deschide.
data.pozitii[].nivel integer Adâncimea în arbore, 1–5.
data.pozitii[].parinte null Codul poziţiei-părinte, aflat din cale. null la rădăcini.
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[].este_antet boolean true la poziţiile fără nicio valoare pe toată seria (nu doar pe fereastră).
data.pozitii[].luni_publicate integer În câte perioade din fereastră poziţia are efectiv valoare.
data.pozitii[].valori object Valorile seriei, pe perioade.
data.identitati.identitate string Identitatea verificată — ce sumă trebuie să dea ce total.
data.identitati.perechi_verificate integer Câte triplete (sold, credit, debit) au putut fi verificate — pe toate poziţiile, nu doar pe cele întoarse.
data.identitati.perechi_inchise integer Câte perechi verificate s-au închis în toleranţă.
data.identitati.abatere_maxima string Cea mai mare abatere întâlnită între suma componentelor şi total.
data.identitati.toleranta string Toleranţa de rotunjire, în milioane. Măsurată din distribuţia abaterilor.
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.luni integer Numărul de luni acoperite.
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.nota_frecvente string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_identitate string Cum se verifică identitatea de mai sus şi ce înseamnă când nu se închide.
meta.nota_ierarhie string Cum se citeşte ierarhia clasificării şi ce niveluri nu se adună între ele.
meta.nota_antete string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_merchanting string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_1z string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_null string De ce lipsesc unele valori: sursa nu le-a publicat, nu le-a calculat ori le-a suprimat.
data.identitati.unde Poziţia şi perioada cu cea mai mare abatere. Apare doar când o pereche depăşeşte toleranţa.
meta.fara_date data e null, iar aici stă motivul. Nu există valori pentru frecvenţa cerută. Intervalul e în întregime în afara acoperirii. Se suprapune peste ea, dar n-are nicio valoare în el.
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/balanta-plati
{
    "data": {
        "frecventa": "lunar",
        "de_la": "2026-07",
        "pana_la": "2026-07",
        "unitate": "milioane EUR",
        "filtre": [],
        "perioade": [
            "2026-07"
        ],
        "pozitii": [
            {
                "cod": "BOP6L_N_4",
                "flux": "net",
                "eticheta": "ERORI ȘI OMISIUNI",
                "cale": [
                    "ERORI ȘI OMISIUNI"
                ],
                "nivel": 1,
                "parinte": null,
                "unitate": "milioane EUR",
                "este_antet": false,
                "luni_publicate": 1,
                "valori": {
                    "2026-07": "1375.00"
                }
            }
        ],
        "identitati": {
            "identitate": "sold = credit − debit",
            "perechi_verificate": 32,
            "perechi_inchise": 32,
            "abatere_maxima": "1.00",
            "toleranta": "1"
        }
    },
    "meta": {
        "sursa": "BNR — balanţa de plăţi, metodologia BPM6.",
        "acoperire": {
            "de_la": "2005-01",
            "pana_la": "2026-07"
        },
        "luni": 1,
        "pozitii_totale": 202,
        "pozitii_returnate": 202,
        "nota_frecvente": "Lunar şi trimestrial au exact aceleaşi 208 coduri — verificat, zero diferenţe. E aceeaşi structură la altă granularitate.",
        "nota_identitate": "Toleranţa de ±1 milion nu e aleasă din prudenţă, ci măsurată: pe contul curent, pe toată seria, abaterea e exact 0 în 192 perioade şi exact 1 în 67 — rotunjirea a trei cifre exprimate în milioane. Verificarea se face pe toate poziţiile, nu pe cele întoarse de filtre.",
        "nota_ierarhie": "`cale` şi `parinte` vin din denumire, care poartă calea completă. Prefixul codului dă azi acelaşi părinte, dar e o coincidenţă de construcţie, nu o regulă declarată de sursă.",
        "nota_antete": "6 poziţii n-au nicio valoare pe toată seria — BPM6 nu înregistrează nimic acolo (merchanting şi venituri din active de rezervă la debit, active de rezervă la pasive ş.a.) — şi stau la adâncimi diferite. `este_antet` le marchează, socotit pe toată seria, nu pe fereastra cerută.",
        "nota_merchanting": "Merchanting-ul şi-a schimbat convenţia de semn: până în 2012 `1BM = 1BMV − 1BMA`, cu achiziţiile (`1BMA`) pozitive; din 2013 `1BM = 1BMA + 1BMV`, cu achiziţiile negative. Aceeaşi formulă nu închide ambele perioade.",
        "nota_1z": "`1Z` („Bunuri şi servicii\") e frate cu `1B` şi `1S` sub contul curent, nu părintele lor: `1Z = 1B + 1S`. Nu aduna toţi copiii contului curent — bunurile şi serviciile s-ar număra de două ori.",
        "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 120 de perioade, flux în afara listei, sau nivel_max în afara intervalului 1–5. frecventa_necunoscuta — valoare în afara listei.
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 120 de perioade, flux în afara listei, sau nivel_max în afara intervalului 1–5. frecventa_necunoscuta — valoare în afara listei.",
        "detalii": {
            "frecventa": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}