oneapi
Sign in
Financiar v1 / RiscCredit

Money supply M3 and its counterparts

Romania's monetary aggregates, monthly since January 2007 — with no gap at all for M1, M2 and M3. In June 2026: M1 = 488,562 million lei (+5.3% year on year), M2 = M3 = 803,868 million (+7.8%), of which currency in circulation 140,862 and overnight deposits 347,700.

Since October 2022, M3 is identical to M2 in Romania, month after month; the equality had already appeared intermittently since December 2018. The instruments that make up M3 above M2 — repos, money market fund shares, securities under two years — are no longer published: repos and securities since June 2018, MMF shares since February 2012. meta.nota_m3 gives the counts, computed from the data. Anyone reading „M3" believing it to be broader than M2 is not conceptually wrong, but in Romania the figure is the same.

The counterpart comes in the same response, not in a separate route, because the identity M3 = net foreign assets + net domestic assets can only be checked with both sides in view. It closes exactly — across the whole series, deviation 0.0000% — as do M1 = currency + overnight deposits and M2 = M1 + deposits ≤ 2 years + redeemable.

One does not close, and it is not hidden: M3 = M2 + repos + MMF shares + securities comes out in only part of the months, with a maximum deviation of 0.75%, because those components are published only in certain periods — MMF shares stop in February 2012, repos and securities in June 2018. identitati gives the verdict recomputed on the requested window, not declared from memory.

variatie_anuala is computed by us — the growth of the money supply is the very question. The series is read with an extra year of history behind it, so that the first months of the window do not come out empty.

luni_publicate says, for every series, in how many months of the window a value actually exists: components with gaps declare their gap, so that absence does not look like zero.

GET
https://oneapi.ro/api/financiar/v1/masa-monetara

Query parameters

NameTypeDescriptionAccepted values
de_laoptional string | null Optional, YYYY-MM. Without it, the last published month. e.g. 2024-06-15
pana_laoptional string | null Optional, YYYY-MM. At most 120 months. e.g. 2024-06-15

How it behaves

  • Romania's monetary aggregates, monthly since January 2007 — with no gap at all for M1, M2 and M3. In June 2026: M1 = 488,562 million lei (+5.3% year on year), M2 = M3 = 803,868 million (+7.8%), of which currency in circulation 140,862 and overnight deposits 347,700.
  • Since October 2022, M3 is identical to M2 in Romania. The last month with a difference is September 2022, and it was 9,928 thousand lei. The equality had already appeared intermittently since December 2018, so the total number of equal months is larger than the run since 2022; meta.nota_m3 gives both figures, computed from the data. The instruments that make up M3 beyond M2 — repos, money-market fund units, securities under two years — are not zero but no longer published: repos and securities since June 2018, fund units since February 2012. Reading "M3" as broader than M2 is not conceptually wrong, but in Romania the figure is the same.
  • The counterparts come in the same response, not in a separate route, because the identity M3 = net external assets + net domestic assets can only be checked with both sides in view. It closes exactly across the whole series, deviation 0.0000%.
  • So do M1 = currency + overnight deposits and M2 = M1 + deposits up to 2 years + deposits redeemable at notice, across the whole series.
  • One does not close, and it is not hidden: M3 = M2 + repos + fund units + securities holds in only part of the months, with a maximum deviation of 0.75%. The cause is that those components are published only in certain periods — fund units stop in February 2012, repos and securities in June 2018 — so the residual between M3 and M2 is not fully explained by the published components.
  • identitati gives the verdict recomputed OVER THE REQUESTED WINDOW, not declared from memory: for 2012, m3_componente closes in 4 of 12 months. se_inchide_intotdeauna says which identity is a rule and which is not.
  • variatie_anuala is computed by us — the growth of the money supply is the actual question, and otherwise the client fetches two months and divides. The series is read with an extra year behind it, so the first months of the window carry it too.
  • luni_publicate says, per series, in how many months of the window a value actually exists — components with gaps declare their gaps, so an absence does not read as zero.
  • Values are in thousands of lei, as the source publishes them; no silent conversion to millions.

What it is for

  • How fast the money supply is growing — the usual gauge of inflationary pressure.
  • Where the growth comes from: net external assets or domestic credit.
  • The share of currency in M1, as an indicator of payment behaviour.

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 Always mii lei (thousands of lei).
data.perioade array Periods for which values exist.
data.agregate[] array M1, M2, M3 and their components. parinte says which aggregate each is a component of.
data.agregate[].cod string Code from the source code list — the key you filter on.
data.agregate[].eticheta string Display label for the value — the readable version of the code next to it.
data.agregate[].denumire string The name, exactly as the source publishes it.
data.agregate[].parinte null The immediate parent in the hierarchy; null at the root.
data.agregate[].unitate string Unit of measure of the values. Read it before plotting or summing them.
data.agregate[].valori object The values of the series, by period.
data.agregate[].variatie_anuala object Growth against the same month a year earlier, in percent.
data.agregate[].luni_publicate integer In how many months of the window the series actually has a value.
data.contrapartida[] array Net external and net domestic assets, plus non-government credit.
data.contrapartida[].cod string Code from the source code list — the key you filter on.
data.contrapartida[].eticheta string Display label for the value — the readable version of the code next to it.
data.contrapartida[].denumire string The name, exactly as the source publishes it.
data.contrapartida[].parinte null The immediate parent in the hierarchy; null at the root.
data.contrapartida[].unitate string Unit of measure of the values. Read it before plotting or summing them.
data.contrapartida[].valori object The values of the series, by period.
data.contrapartida[].variatie_anuala object
data.contrapartida[].luni_publicate integer How many months the source actually published.
data.identitati[].identitate string The identity being checked — which sum must equal which total.
data.identitati[].stanga string
data.identitati[].dreapta array
data.identitati[].luni_verificate integer How many months entered the check.
data.identitati[].luni_inchise integer In how many of the checked months the sum closes to within 0.00001 relative deviation.
data.identitati[].abatere_maxima_procent string The largest deviation in the window.
data.identitati[].se_inchide_intotdeauna boolean false for the identity that is not a rule but depends on which components the source publishes.
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.luni integer Number of months covered.
meta.serii integer The series in the response.
meta.nota_m3 string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_identitati string How to read the identity checks in the response.
meta.nota_variatie string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_unitate string What to know about the unit of measure before comparing or summing values.
meta.nota_null string Why some values are missing: the source did not publish, did not compute, or suppressed them.
meta.bilantul_bancar string
meta.fara_date data is null and this says why. No money-supply values in the database. The interval falls outside the coverage; the response gives it.
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/masa-monetara
{
    "data": {
        "de_la": "2026-07",
        "pana_la": "2026-07",
        "unitate": "mii lei",
        "perioade": [
            "2026-07"
        ],
        "agregate": [
            {
                "cod": "ANL_M3",
                "eticheta": "M3",
                "denumire": "Masa monetară în sens larg (M3)",
                "parinte": null,
                "unitate": "mii lei",
                "valori": {
                    "2026-07": "809285188.10"
                },
                "variatie_anuala": {
                    "2026-07": "7.61"
                },
                "luni_publicate": 1
            }
        ],
        "contrapartida": [
            {
                "cod": "ANL_AEN",
                "eticheta": "active externe nete",
                "denumire": "ACTIVE EXTERNE NETE",
                "parinte": null,
                "unitate": "mii lei",
                "valori": {
                    "2026-07": "396125761.10"
                },
                "variatie_anuala": {
                    "2026-07": "1.71"
                },
                "luni_publicate": 1
            }
        ],
        "identitati": [
            {
                "identitate": "m3_contrapartida",
                "stanga": "ANL_M3",
                "dreapta": [
                    "ANL_AEN",
                    "ANL_AIN"
                ],
                "luni_verificate": 1,
                "luni_inchise": 1,
                "abatere_maxima_procent": "0.0000",
                "se_inchide_intotdeauna": true
            }
        ]
    },
    "meta": {
        "sursa": "BNR — instituţii financiare monetare, masa monetară M3 şi contrapartida acesteia.",
        "acoperire": {
            "de_la": "2007-01",
            "pana_la": "2026-07"
        },
        "luni": 1,
        "serii": 13,
        "nota_m3": "M3 e identic cu M2 în România în fiecare lună din 2022-10 încoace (46 de luni consecutive); pe toată seria sunt egale în 90 din 235 de luni. Componentele lui M3 peste M2 nu sunt zero, ci nu se mai publică — ultima valoare: împrumuturile repo până în 2018-06, titlurile sub 2 ani până în 2018-06, unităţile FPM până în 2012-02. De aceea diferenţa dintre M3 şi M2 nu se poate descompune în lunile de după. La fel, în interiorul lui M2, depozitele rambursabile după notificare au ultima valoare în 2018-06.",
        "nota_identitati": "`identitati` e refăcută pe fereastra cerută, nu declarată din memorie. Trei se închid exact; a patra — M3 din M2 plus componentele lui — nu, fiindcă acele componente se publică doar în anumite perioade.",
        "nota_variatie": "`variatie_anuala` e calculată de noi, ca raport faţă de nivelul de acum douăsprezece luni. Seria se citeşte cu un an în plus în spate, deci primele luni ale ferestrei o au şi ele.",
        "nota_unitate": "Valorile sunt în mii lei, cum le publică sursa — fără conversie tăcută în milioane.",
        "nota_null": "`null` într-o lună înseamnă că seria n-a fost publicată atunci, nu zero. `luni_publicate` numără lunile cu valoare.",
        "bilantul_bancar": "Bilanţul consolidat al instituţiilor financiare monetare e altă clasă; codurile ei sunt în /financiar/v1/serii."
    }
}

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 120 months, or a malformed month.
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 120 months, or a malformed month.",
        "detalii": {
            "de_la": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}