oneapi
Sign in
Financiar v1 / RiscCredit

Financial soundness indicators

The six indicators from the IMF definition, quarterly since 2010 — the non-performing loan ratio, the Tier 1 capital ratio, leverage, return on assets, liquidity. All in percent. In 2026-Q1: non-performing 3.28%, capital 21.45%, leverage 8.64%, return 1.39%, liquidity 48.09%.

There is no accounting identity to check — these are ratios, not positions in a balance sheet. In its place, two things that can be demonstrated are reported: the coverage, quarter by quarter, and the distance from a related measure in another route.

The non-performing loan ratio is not the share of arrears in /risc-credit. Measured across the 65 quarters, the ratio between them has ranged from 0.85 to 2.03 — there were periods in which one was double the other. Over the last year they have converged to within 0.15 percentage points, which makes the confusion more likely, not less. The comparison is computed on every request.

GET
https://oneapi.ro/api/financiar/v1/stabilitate-financiara

Query parameters

NameTypeDescriptionAccepted values
indicatoroptional string | null Optional, one of the six keys. Without it, every indicator. fonduri_proprii_nivel_1efect_de_leviercredite_neperformante_pe_capitalrata_creditelor_neperformanterentabilitate_economicalichiditate_sub_3_luni
de_laoptional string | null Optional, YYYY-Tn or YYYY-MM. A month is rounded to the quarter containing it. e.g. 2024-06-15
pana_laoptional string | null Optional, YYYY-Tn or YYYY-MM. e.g. 2024-06-15e.g. 2024-06-30

How it behaves

  • Financial soundness indicators in the IMF definition, quarterly 2010-Q1 → 2026-Q1 — the non-performing loan ratio, the Tier 1 capital ratio, the leverage effect, non-performing loans net of provisions against capital, return on assets, and liquidity under three months. All in percent.
  • In 2026-Q1: non-performing loans 3.28%, Tier 1 capital 21.45%, leverage 8.64%, return on assets 1.39%, liquidity 48.09%.
  • There is no accounting identity to verify. These are ratios, not balance-sheet positions: they have no hierarchy and do not add up. In place of an identity, the route reports two things that can be demonstrated.
  • First: coverage. All six indicators have exactly 65 quarters, with no gaps — verified, not assumed. verificari.acoperire states it for the requested window.
  • Second: the distance from /risc-credit. The non-performing loan ratio here is not the share of overdue amounts there: one comes from prudential reporting, the other from the Central Credit Register, with different definitions. Measured across the 65 quarters, the ratio between them has ranged from 0.85 to 2.03 — there were periods when one was double the other.
  • Over the past year they have converged to within 0.15 percentage points — 3.28% against 3.17% in 2026-Q1. That closeness makes confusion more likely, not less, which is why the comparison is computed on every request and returned quarter by quarter.
  • The overdue share is a monthly series, so it is taken at the end of the quarter — like any ratio computed on stocks.
  • The indicator keys are spelled out (efect_de_levier), because the source's suffixes (FSKRTCA) tell nothing to someone looking for the indicator.

What it is for

  • The banking system's health in one request: capital, asset quality, profitability, liquidity.
  • The path of non-performing loans after the 2010 crisis, across the whole series.
  • Bank profitability against the non-performing ratio, quarter by quarter.

Response structure

FieldTypeDescription
data.de_la string Start of the interval the response covers.
data.pana_la string End of the interval the response covers, inclusive.
data.unitate string The unit of the values. Read it before plotting or adding them up.
data.filtre array The filters actually applied, as the route understood them — useful when a value was normalised.
data.perioade[].trimestru string The quarter the value refers to.
data.perioade[].data_referinta string The end of the quarter — when the ratios are computed.
data.perioade[].luna_sursa string The month as the source labels it, before normalisation.
data.indicatori[].cheie string The indicator's spelled-out key; cod keeps the source code.
data.indicatori[].cod string Code from the source code list — the key you filter on.
data.indicatori[].denumire string The name, exactly as the source publishes it.
data.indicatori[].unitate string Unit of measure of the values. Read it before plotting or summing them.
data.indicatori[].trimestre_publicate integer How many quarters the source actually published.
data.indicatori[].valori object The values of the series, by period.
data.verificari.acoperire object How many indicators have every quarter of the window, and where they are missing if they are.
data.verificari.acoperire.trimestre_in_fereastra integer
data.verificari.acoperire.indicatori_completi integer
data.verificari.acoperire.indicatori integer Indicators available on this route.
data.verificari.acoperire.goluri array
data.verificari.credite_neperformante object Not an identity. The ratio here against the share of overdue amounts from /risc-credit, with the minimum and maximum ratio over the window.
data.verificari.credite_neperformante.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.verificari.credite_neperformante.fata_de string
data.verificari.credite_neperformante.trimestre_comparate integer
data.verificari.credite_neperformante.raport_minim string
data.verificari.credite_neperformante.raport_maxim string
data.verificari.credite_neperformante.ultimele[].trimestru string The quarter the value refers to.
data.verificari.credite_neperformante.ultimele[].luna_referinta string
data.verificari.credite_neperformante.ultimele[].rata_neperformante string
data.verificari.credite_neperformante.ultimele[].pondere_restante string
data.verificari.credite_neperformante.ultimele[].diferenta_puncte string
data.verificari.credite_neperformante.ultimele[].raport string The ratio between the two quantities compared.
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.trimestre integer Quarters for which values exist.
meta.indicatori_totali integer
meta.indicatori_returnati integer
meta.nota_acoperire string Why the total is a lower bound, in prose. meta.total_e_limita_de_jos is the word to switch on in code.
meta.nota_neperformante string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_structura string How to read the structure in the response and which levels must not be added.
meta.nota_null string Why some values are missing: the source did not publish, did not compute, or suppressed them.
meta.fara_date data is null and this says why. No values in the database. The interval falls outside the coverage (2010-Q1 → present).
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/stabilitate-financiara
{
    "data": {
        "de_la": "2010-T1",
        "pana_la": "2026-T1",
        "unitate": "%",
        "filtre": [],
        "perioade": [
            {
                "trimestru": "2010-T1",
                "data_referinta": "2010-03-31",
                "luna_sursa": "2010-01"
            }
        ],
        "indicatori": [
            {
                "cheie": "fonduri_proprii_nivel_1",
                "cod": "FSIT_FSKRTC",
                "denumire": "Rata fondurilor proprii de nivel 1",
                "unitate": "%",
                "trimestre_publicate": 65,
                "valori": {
                    "2010-T1": "14.21",
                    "2010-T2": "13.41",
                    "2010-T3": "13.76",
                    "2010-T4": "14.22",
                    "2011-T1": "14.49",
                    "2011-T2": "13.61",
                    "2011-T3": "12.89",
                    "2011-T4": "11.97",
                    "2012-T1": "13.76",
                    "2012-T2": "13.65",
                    "2012-T3": "13.49",
                    "2012-T4": "13.79",
                    "2013-T1": "13.86",
                    "2013-T2": "13.57",
                    "2013-T3": "13.00",
                    "2013-T4": "14.09",
                    "2014-T1": "14.51",
                    "2014-T2": "14.87",
                    "2014-T3": "14.54",
                    "2014-T4": "14.56",
                    "2015-T1": "16.15",
                    "2015-T2": "15.61",
                    "2015-T3": "16.32",
                    "2015-T4": "16.72",
                    "2016-T1": "17.16",
                    "2016-T2": "16.77",
                    "2016-T3": "16.61",
                    "2016-T4": "17.55",
                    "2017-T1": "17.72",
                    "2017-T2": "17.84",
                    "2017-T3": "17.15",
                    "2017-T4": "17.95",
                    "2018-T1": "17.87",
                    "2018-T2": "17.58",
                    "2018-T3": "17.82",
                    "2018-T4": "18.64",
                    "2019-T1": "17.93",
                    "2019-T2": "17.68",
                    "2019-T3": "17.88",
                    "2019-T4": "20.05",
                    "2020-T1": "18.52",
                    "2020-T2": "20.75",
                    "2020-T3": "20.80",
                    "2020-T4": "23.22",
                    "2021-T1": "22.72",
                    "2021-T2": "22.08",
                    "2021-T3": "21.35",
                    "2021-T4": "20.86",
                    "2022-T1": "19.00",
                    "2022-T2": "18.89",
                    "2022-T3": "18.76",
                    "2022-T4": "20.48",
                    "2023-T1": "18.81",
                    "2023-T2": "19.68",
                    "2023-T3": "19.22",
                    "2023-T4": "20.66",
                    "2024-T1": "20.05",
                    "2024-T2": "21.12",
                    "2024-T3": "22.02",
                    "2024-T4": "22.15",
                    "2025-T1": "21.44",
                    "2025-T2": "21.58",
                    "2025-T3": "21.47",
                    "2025-T4": "22.00",
                    "2026-T1": "21.45"
                }
            }
        ],
        "verificari": {
            "acoperire": {
                "trimestre_in_fereastra": 65,
                "indicatori_completi": 6,
                "indicatori": 6,
                "goluri": []
            },
            "credite_neperformante": {
                "nota": "Nu e o identitate şi nu trebuie să se închidă: rata creditelor neperformante vine din raportările prudenţiale, ponderea sumelor restante din Centrala Riscului de Credit. Sunt două măsuri ale aceluiaşi fenomen, cu definiţii diferite.",
                "fata_de": "CRBL_POND — /risc-credit, bănci, toţi debitorii",
                "trimestre_comparate": 65,
                "raport_minim": "0.8549",
                "raport_maxim": "2.0334",
                "ultimele": [
                    {
                        "trimestru": "2025-T2",
                        "luna_referinta": "2025-06",
                        "rata_neperformante": "3.14",
                        "pondere_restante": "3.09",
                        "diferenta_puncte": "0.05",
                        "raport": "1.0161"
                    }
                ]
            }
        }
    },
    "meta": {
        "sursa": "BNR — SDDS PLUS, indicatori de stabilitate financiară în definiţia FMI (clasa 1487).",
        "acoperire": {
            "de_la": "2010-T1",
            "pana_la": "2026-T1"
        },
        "trimestre": 65,
        "indicatori_totali": 6,
        "indicatori_returnati": 6,
        "nota_acoperire": "6 din 6 indicatori au toate cele 65 trimestre ale ferestrei. Unde lipsesc, `verificari.acoperire.goluri` spune care.",
        "nota_neperformante": "Rata creditelor neperformante nu e ponderea sumelor restante din /risc-credit: pe cele 65 trimestre comparate, raportul dintre ele a umblat între 0.8549 şi 2.0334. Recent s-au apropiat mult, ceea ce face confuzia mai probabilă.",
        "nota_structura": "Cei şase indicatori sunt rapoarte independente, nu poziţii dintr-un bilanţ: n-au ierarhie şi n-au identitate contabilă de verificat.",
        "nota_null": "`null` într-un trimestru înseamnă că indicatorul n-a fost publicat atunci, nu zero."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareinterval_prea_lung beyond 80 quarters, or an indicator outside the list.
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": "interval_prea_lung beyond 80 quarters, or an indicator outside the list.",
        "detalii": {
            "indicator": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}