oneapi
Sign in
Financiar v1 / Indici

Interbank operations

How much the banks actually lent each other and at what rate — daily, since 3 January 2005, with complete coverage of banking days.

The rate at which banks actually traded is systematically below the quoted ROBOR. Against overnight ROBOR: lower on 83% of the 5,432 common days, by an average of −0.147 points, and identical on only 86. For someone with a ROBOR-indexed loan, this is a figure not found anywhere else.

The default reference is overnight, and not by accident. The traded rate is a weighted average of what was traded that day, mostly overnight. Against longer tenors the difference grows — 86% below the quote at tomorrow-next, 94% at one week — but part of that growth is the term structure, not the gap between quote and trade. The other comparisons remain available, with comparabil_direct: false alongside.

Two measures that are not the same thing. tranzactii is what was traded that day — average volume 1,389 million lei, average rate 4.48%. stoc is the balance of operations outstanding — 4,498 million, 4.84%. The stock is 3.2 times larger, and the trading volume never exceeds it: verified, 0 out of 5,463 days. They come together precisely so that the stock rate is not taken for the day's price.

Zero trades means null for the rate, not 0. There are 31 days on which the market traded nothing at all, and exactly those have no rate — the two sets overlap perfectly. A 0 there would say „they lent at zero interest", which is a different thing from „they did not lend". fara_tranzactii marks them.

The comparison is made only on a common day: if ROBOR was not quoted then, the difference is missing for that day. The neighbouring day's quote is never borrowed.

GET
https://oneapi.ro/api/financiar/v1/interbancar

Query parameters

NameTypeDescriptionAccepted values
de_larequired string Required, YYYY-MM-DD. Cannot be in the future. e.g. 2024-06-15e.g. 2024-01-02
pana_laoptional string | null Optional. Defaults to the last published day. At most 366 days. e.g. 2024-06-30e.g. 2024-01-31e.g. 2024-06-15
referintaoptional string | null Optional, defaults to overnight. Or tomorrow_next, 1w, or fara. Only overnight is directly comparable. overnighttomorrow_next1wfara

How it behaves

  • How much banks lent each other and at what rate — daily since 3 January 2005, with complete coverage of banking days.
  • The rate banks actually traded at sits systematically below the quoted ROBOR. Against overnight ROBOR: lower on 83% of the 5,432 shared days, by −0.147 points on average, and identical on only 86. For anyone holding a ROBOR-indexed loan, that is a figure available nowhere else.
  • The default reference is overnight, and not by accident. The transacted rate is a weighted average of whatever traded that day, mostly overnight. Against longer tenors the gap widens — 86% below quote at tomorrow-next, 94% at one week — but part of that widening is the term structure, not the quote-versus-trade discrepancy. The others remain available, flagged comparabil_direct: false with the warning in meta.
  • Two measures that are not the same thing. tranzactii is what traded that day — average volume 1,389 million lei, average rate 4.48%. stoc is the outstanding balance of operations — 4,498 million, 4.84%. The stock is 3.2 times larger, and transaction volume never exceeds it: verified, 0 of 5,463 days. They come together precisely so the stock rate is not mistaken for the day's price.
  • Zero trades means null for the rate, not 0. There are 31 days on which the market traded nothing, and those are exactly the days without a rate — the two sets overlap perfectly. A 0 there would say "they borrowed at zero interest", which is not the same as "they did not borrow". fara_tranzactii flags them.
  • The comparison is made only on the shared day. If ROBOR was not quoted then, diferenta is absent for that day — the neighbouring day's quote is never borrowed.
  • Bounds outside the coverage are silently clamped to it, and meta.ajustat says what moved and from where. The cap is 366 days, as on the other daily routes.

What it is for

  • The real price of money on the interbank market, against the published quote.
  • Market liquidity: how much actually trades in a day.
  • Context for a ROBOR-indexed loan — how far the quote sits from actual trades.

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.unitati object Volumes in millions of lei, rates in percent per year.
data.unitati.volum string
data.unitati.rata string Rate, expressed as a percentage.
data.referinta.nume string The name, exactly as the source publishes it.
data.referinta.eticheta string Display label for the value — the readable version of the code next to it.
data.referinta.cod string Code from the source code list — the key you filter on.
data.referinta.comparabil_direct boolean true only for overnight; at longer tenors part of the gap is the term structure.
data.rezumat.tranzactii.zile integer Number of days covered.
data.rezumat.tranzactii.volum_mediu string
data.rezumat.tranzactii.volum_total string
data.rezumat.tranzactii.rata_medie string
data.rezumat.tranzactii.zile_fara_tranzactii integer How many days in the interval had no transaction at all.
data.rezumat.stoc.zile integer Number of days covered.
data.rezumat.stoc.volum_mediu string
data.rezumat.stoc.volum_total string
data.rezumat.stoc.rata_medie string
data.rezumat.stoc.zile_fara_tranzactii integer How many days in the interval had no transaction at all.
data.rezumat.fata_de_referinta object How many days were compared, on how many trading was below the quote, and the average gap.
data.rezumat.fata_de_referinta.zile_comparate integer
data.rezumat.fata_de_referinta.zile_sub_cotat integer
data.rezumat.fata_de_referinta.diferenta_medie string
data.zile[].data string
data.zile[].tranzactii object Volume and rate of what traded that day.
data.zile[].tranzactii.volum string
data.zile[].tranzactii.rata string Rate, expressed as a percentage.
data.zile[].tranzactii.fara_tranzactii boolean true on days with zero volume — then rata is null, because there was no price.
data.zile[].stoc object Volume and rate of the outstanding balance of operations.
data.zile[].stoc.volum string
data.zile[].stoc.rata string Rate, expressed as a percentage.
data.zile[].stoc.fara_tranzactii boolean
data.zile[].referinta.nume string The name, exactly as the source publishes it.
data.zile[].referinta.cotat string That day's ROBOR quote. null if it was not quoted.
data.zile[].referinta.diferenta string Transacted rate minus quoted rate. Negative = traded below the quote.
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.zile_publicate integer The total number of quotes in the response, across all series.
meta.zile_interval integer How many calendar days the requested interval spans.
meta.nota_masuri string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_referinta string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_zero string What a zero means here: a measured null value, not missing data.
meta.nota_zi_comuna string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.robor string
meta.fara_date string data is null and this says why. No interbank market data in the database. The interval falls outside the coverage; the response gives it.
meta.fara_date_cod string 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/interbancar?de_la=2024-06-15&pana_la=2024-06-30
{
    "data": {
        "de_la": "2024-06-15",
        "pana_la": "2024-06-30",
        "unitati": {
            "volum": "milioane_ron",
            "rata": "procent_pe_an"
        },
        "referinta": {
            "nume": "overnight",
            "eticheta": "ROBOR overnight",
            "cod": "BBZ_BORON",
            "comparabil_direct": true
        },
        "rezumat": {
            "tranzactii": {
                "zile": 9,
                "volum_mediu": "242.32",
                "volum_total": "2180.90",
                "rata_medie": "6.00",
                "zile_fara_tranzactii": 0
            },
            "stoc": {
                "zile": 9,
                "volum_mediu": "343.21",
                "volum_total": "3088.90",
                "rata_medie": "6.00",
                "zile_fara_tranzactii": 0
            },
            "fata_de_referinta": {
                "zile_comparate": 9,
                "zile_sub_cotat": 2,
                "diferenta_medie": "0.00"
            }
        },
        "zile": [
            {
                "data": "2024-06-17",
                "tranzactii": {
                    "volum": "67.00",
                    "rata": "5.93",
                    "fara_tranzactii": false
                },
                "stoc": {
                    "volum": "186.00",
                    "rata": "5.99",
                    "fara_tranzactii": false
                },
                "referinta": {
                    "nume": "overnight",
                    "cotat": "6.00",
                    "diferenta": "-0.07"
                }
            }
        ]
    },
    "meta": {
        "sursa": "BNR — operaţiuni interbancare, serii zilnice.",
        "acoperire": {
            "de_la": "2005-01-03",
            "pana_la": "2026-09-18"
        },
        "zile_publicate": 9,
        "zile_interval": 16,
        "nota_masuri": "`tranzactii` e ce s-a tranzacţionat în ziua respectivă; `stoc` e soldul operaţiunilor în derulare. Stocul e în medie de 3,2 ori mai mare, iar volumul tranzacţiilor nu-l depăşeşte niciodată — verificat pe toate cele 5.463 de zile.",
        "nota_referinta": "Rata tranzacţionată e majoritar overnight, deci comparaţia cu ROBOR overnight e directă. Istoric: mai mică în 83% din zile, cu o medie de −0,147 puncte.",
        "nota_zero": "Într-o zi fără nicio tranzacţie nu există rată — `rata` e `null`, nu 0, iar `fara_tranzactii` o marchează. Sunt 31 de astfel de zile în toată seria.",
        "nota_zi_comuna": "Diferenţa faţă de referinţă se calculează doar când ambele cifre există în ACEEAŞI zi. Nu se împrumută cotaţia zilei vecine.",
        "robor": "/financiar/v1/robor"
    }
}

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 366 days, a malformed date, pana_la before de_la, or a reference 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 366 days, a malformed date, pana_la before de_la, or a reference outside the list.",
        "detalii": {
            "de_la": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}