oneapi
Sign in
Financiar v1 / Calcul

Deflating an amount

The inverse of indexation: what an amount of TODAY was worth THEN. 1,000 lei of December 2025 are worth 635.53 lei in January 2020 money, 581.20 in January 2015 money, 360.20 in January 2005 money.

It is not /calcul/indexare with the arguments swapped. There, a request with de_la after pana_la correctly returns 422 — direction is part of the contract. Here you divide rather than multiply; the amount given lives at the other end of the interval, it is money from pana_la, not from de_la; and the result answers a different question.

With suma_de_referinta it answers directly the question „how much of a pay rise was just inflation". 3,000 lei in January 2020 becoming 5,000 in December 2025 is a nominal rise of +66.67%, but a real one of only +5.92%: inflation over the period was 57.35%.

The denomination trap is sharper here than in indexation. There, the amount goes in and comes out in the same era. Here it goes in as new lei and comes out in a month when old lei circulated: 1,000 lei of today deflated to January 1991 give 0.22 — correct as purchasing power, but a number that looks like an error. The result stays in the unit of the amount given, and when the eras differ in_moneda_epocii appears as well, with the factor beside it.

The coefficient is the same object as in indexation: the product of the monthly indices, with the starting month excluded. putere_de_cumparare is its inverse — how much of a leu of today remains in the target month's money.

GET
https://oneapi.ro/api/financiar/v1/calcul/deflatare

Query parameters

NameTypeDescriptionAccepted values
sumaoptional string | null Optional, money from pana_la. Without it, only the coefficient is returned. e.g. 1000e.g. 5000
suma_de_referintaoptional string | null Optional, what the amount was at de_la. Requires suma; yields the real increase, not just the nominal one. e.g. 1200.00
de_larequired string Required, YYYY-MM. The month whose money the amount is brought into. It does not enter the product. A full date is accepted too. e.g. 2024-06-15e.g. 2024e.g. 2015-01
pana_laoptional string | null Optional, defaults to the last covered month. The month the amount comes from. e.g. 2024-01
categorieoptional string | null Optional, defaults to total. Others: alimentare, nealimentare, servicii. totalalimentarenealimentareservicii

How it behaves

  • The inverse of indexation: what an amount of TODAY was worth BACK THEN. 1,000 lei of December 2025 are worth 635.53 lei in January 2020 money, 581.20 in January 2015 money, and 360.20 in January 2005 money.
  • This is not /calcul/indexare with the arguments swapped. There, a request with de_la after pana_la correctly returns 422 — direction is part of that contract. Here you divide rather than multiply; the amount lives at the other end of the interval, it is money from pana_la, not from de_la; and the result answers a different question.
  • With suma_de_referinta it answers directly the question "how much of a pay rise was just inflation". 3,000 lei in January 2020 becoming 5,000 in December 2025 is a nominal rise of +66.67%, but a real one of just +5.92%: inflation over the period was 57.35%.
  • The denomination trap bites harder here than in indexation. There, the amount goes in and comes out in the same monetary era. Here it goes in as new lei and comes out in a month when old lei circulated: 1,000 lei of today deflated to January 1991 give 0.22 — correct as purchasing power, but a number that looks like an error. suma_deflatata stays in the unit of the amount given, and in_moneda_epocii gives the same value in the money that actually circulated then: 2,239.35 old lei.
  • The coefficient is the same object as in indexation: the product of the monthly indices divided by 100, with the starting month excluded — its index describes a change that happened before the reference point. putere_de_cumparare is its inverse: how much of today's leu survives in the target month's money.
  • Category total is the full basket; alimentare, nealimentare and servicii deflate by a specific component.
  • INS publishes the index with roughly a two-month lag, so pana_la cannot go past the last covered month — meta.acoperire says so on every request.
  • If months are missing from the interval, the coefficient is computed over fewer of them and this is reported: luni against luni_asteptate. Otherwise it would look like a complete deflation.
  • The whole computation runs in exact decimal arithmetic: a product of several hundred factors in floating point accumulates error precisely where the result is a sum of money.

What it is for

  • How much of a pay rise or a pension increase was just inflation.
  • Comparing two prices from different years at the same purchasing power.
  • Expressing a present-day amount in the money of a reference year named in a contract or study.

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.categorie string Category in the source classification.
data.luni integer How many months actually entered the product.
data.luni_asteptate integer How many should have. A difference means months missing from the series.
data.coeficient string The product of the monthly indices — the same as in indexation.
data.coeficient_exact string The unrounded factor, for chained calculations.
data.inflatie_perioadei_procent string How much prices rose over the interval.
data.putere_de_cumparare string The inverse of the coefficient: how much of today's leu survives in the target month's money.
meta.sursa string The official source the data comes from, with its licence where one is required.
meta.formula string
meta.acoperire string How much the data we hold covers, compared to what the source publishes.
meta.nota_sens string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.inversul string
data.suma_deflatata string The amount brought into de_la money, in the unit of the amount given.
data.suma_deflatata_exacta string The same, unrounded.
data.pierdere string suma − suma_deflatata: how much melted away between the two months.
data.in_moneda_epocii Present only when the interval crosses 1 July 2005: the same value in old lei, with the factor alongside.
data.comparatie.crestere_nominala_procent How much the amount grew on paper.
data.comparatie.crestere_reala_procent How much it grew in purchasing power.
meta.fara_date data is null and this says why. No CPI data in the database. A month falls outside the CPI series; the response gives the coverage. The interval has no indices.
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/calcul/deflatare?de_la=2024-06-15
{
    "data": {
        "de_la": "2024-06",
        "pana_la": "2026-07",
        "categorie": "total",
        "luni": 25,
        "luni_asteptate": 25,
        "coeficient": "1.173609",
        "coeficient_exact": "1.17360901213229",
        "inflatie_perioadei_procent": "17.36",
        "putere_de_cumparare": "0.852073"
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — indicele preţurilor de consum, serie lunară.",
        "formula": "Suma se ÎMPARTE la coeficientul de indexare al perioadei, care e produsul indicilor lunari împărţiţi la 100, pentru lunile de după `de_la` până la `pana_la` inclusiv.",
        "acoperire": "1991-01 → 2026-07",
        "nota_sens": "`suma` e bani de la `pana_la`, aduşi în banii lui `de_la` — invers faţă de /financiar/v1/calcul/indexare, unde suma e de la `de_la`.",
        "inversul": "/financiar/v1/calcul/indexare"
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422interval_golThe target month is not before the month the amount comes from. Or suma_de_referinta without suma.
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": "interval_gol",
        "mesaj": "The target month is not before the month the amount comes from. Or suma_de_referinta without suma.",
        "detalii": {
            "suma": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}