Financiar v1 / Calcul
Late-payment interest, general regime
The statutory penalty interest due on an unpaid amount, under Government Ordinance 13/2011: the reference rate plus 4 percentage points, with neprofesional=1 for the 20% reduction in art. 3(3).
The period is sliced at every NBR monetary policy decision and at every calendar year boundary, and the response shows each slice with the days, the rate and the base used.
For relations between professionals, Law 72/2013 applies, with a different margin and a different anchoring: /calcul/penalitati/profesionisti.
GET
https://oneapi.ro/api/financiar/v1/calcul/penalitati/civile
Query parameters
NameTypeDescriptionAccepted values
sumarequired
string
Required. The unpaid debt, positive, at most 2 decimals.
e.g. 1000e.g. 2500.75e.g. 5000
scadentarequired
string
Required,
YYYY-MM-DD. The day the amount was due; interest runs from the following day.
e.g. 2024-06-15e.g. 2023-01-15
pana_laoptional
string | null
Optional, defaults to the current day. Cannot be in the future.
e.g. 2024-01-15
neprofesionaloptional
boolean | null
With
1, the rate is reduced by 20% (art. 3(3)).
e.g. true
How it behaves
- ⚠️ A due date falling on a non-working day is postponed. Article 2554 of the Civil Code: a term expiring on a non-working day is deemed to expire at the end of the first working day that follows. A due date of 25 December 2024 therefore moves to 27 December, and interest runs from the 28th, not the 26th. When it applied, the response carries
scadenta_prorogata; otherwise the field is absent. - The statutory penalty interest owed on an unpaid amount, from the due date up to a given date.
- The rate is the one in GO 13/2011 art. 3(2): the NBR reference plus 4 percentage points. With
neprofesional=1the 20% reduction under art. 3(3) applies, for relations not arising from the operation of a for-profit undertaking. - The period is cut at two kinds of points, and both are necessary: at every NBR monetary policy DECISION, because the rate changes, and at every calendar YEAR boundary, because the denominator changes (366 in a leap year). Slicing only on rates would mix 365- and 366-day bases within one term; slicing only on years would apply an old rate after NBR had changed it. Both mistakes produce plausible figures.
- Each slice is shown with its days, the reference, the rate applied, the day basis and its own interest — the result can be redone with pencil and paper.
- The conventions, verified: calendar days, starting the day AFTER the due date;
interest = amount × rate × days / days_in_year; SIMPLE interest, without compounding, because art. 8 of GO 13/2011 prohibits anatocism. - Rounding happens once, at the end. The slices shown are rounded to the cent and may not add up exactly to the total, by one cent; the
dobanda_exactaon each slice adds up exactly topenalitati_exacte. - Periods starting before 2011-09-01 are refused: at that time the reference rate was the official discount rate, a distinct series. The policy rate is not extrapolated backwards.
- For relations between professionals, Law 72/2013 applies, with a different margin and different anchoring — see
/calcul/penalitati/profesionisti.
What it is for
- Interest on an amount owed between private individuals.
- Statutory interest in a civil dispute.
Response structure
FieldTypeDescription
data.debit
string
The principal the interest is computed on, as submitted.
data.scadenta
string
data.scadenta_prorogata
string
data.de_la
string
Start of the interval the response covers.
data.pana_la
string
End of the interval the response covers, inclusive.
data.zile
integer
Number of days covered.
data.regim
string
The regime applied:
profesionisti.
data.neprofesional
boolean
Whether the reduction for non-professional relationships was applied.
data.penalitati
string
Total interest, rounded to the cent.
data.penalitati_exacte
string
Unrounded interest — the exact sum of the slices.
data.total
string
Debt plus interest.
data.perioade[].de_la
string
Start of the covered interval.
data.perioade[].pana_la
string
End of the covered interval, inclusive.
data.perioade[].zile
integer
Number of days covered.
data.perioade[].referinta
string
The central bank reference rate in force for the slice.
data.perioade[].rata
string
Rate, expressed as a percentage.
data.perioade[].baza_zile_an
integer
365 or 366, depending on the year the slice falls in.
data.perioade[].dobanda
string
Interest for the slice, rounded.
data.perioade[].dobanda_exacta
string
The unrounded value of the slice. These add up to
penalitati_exacte.
meta.temei
string
The legal basis for the values or for the way they are computed.
meta.feliere
string
Why the interval is cut where it is cut.
meta.convenții.zile
string
Number of days covered.
meta.convenții.baza
string
meta.convenții.capitalizare
string
meta.convenții.rotunjire
string
meta.atentie
string
meta.avertisment
string
A warning about a limit of the data that changes its interpretation.
meta.fara_date
data is null and this says why. The rate is missing for part of the requested period.
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/penalitati/civile?suma=1000&scadenta=2024-06-15
{
"data": {
"debit": "1000.00",
"scadenta": "2024-06-15",
"scadenta_prorogata": "2024-06-17",
"de_la": "2024-06-18",
"pana_la": "2026-10-07",
"zile": 842,
"regim": "civila",
"neprofesional": false,
"penalitati": "242.55",
"penalitati_exacte": "242.5493113255",
"total": "1242.55",
"perioade": [
{
"de_la": "2024-06-18",
"pana_la": "2024-07-07",
"zile": 20,
"referinta": "7.00",
"rata": "11.00",
"baza_zile_an": 366,
"dobanda": "6.01",
"dobanda_exacta": "6.0109289617"
}
]
},
"meta": {
"temei": "OG 13/2011 art. 3 alin. (2): rata de referinţă plus 4 puncte procentuale",
"feliere": "Perioada e tăiată la fiecare decizie de politică monetară a BNR şi la fiecare graniţă de an calendaristic.",
"convenții": {
"zile": "Calendaristice, din ziua următoare scadenţei până la data cerută inclusiv.",
"baza": "365 de zile, sau 366 în anii bisecţi — de aceea perioada se taie şi la graniţa de an.",
"capitalizare": "Niciuna. Dobânda se calculează pe debitul iniţial: art. 8 OG 13/2011 interzice anatocismul.",
"rotunjire": "O singură dată, la final. Feliile afişate sunt rotunjite la doi bani şi pot să nu se adune exact la total; `dobanda_exacta` de pe fiecare felie se adună exact la `penalitati_exacte`."
},
"atentie": "În raporturile dintre profesionişti şi între aceştia şi autorităţile contractante se aplică Legea 72/2013 — referinţă + 8 puncte, cu rata ancorată la prima zi a semestrului. Vezi /financiar/v1/calcul/penalitati/profesionisti.",
"avertisment": "Rezultatul e un calcul aritmetic pe date publice, nu o consultanţă juridică: regimul aplicabil, data scadenţei şi eventualele clauze contractuale de penalitate le stabileşte cine cunoaşte dosarul."
}
}
GEThttps://oneapi.ro/api/financiar/v1/calcul/penalitati/civile?suma=2500.75&scadenta=2024-06-15
{
"data": {
"debit": "2500.75",
"scadenta": "2024-06-15",
"scadenta_prorogata": "2024-06-17",
"de_la": "2024-06-18",
"pana_la": "2026-10-07",
"zile": 842,
"regim": "civila",
"neprofesional": false,
"penalitati": "606.56",
"penalitati_exacte": "606.5551902976",
"total": "3107.31",
"perioade": [
{
"de_la": "2024-06-18",
"pana_la": "2024-07-07",
"zile": 20,
"referinta": "7.00",
"rata": "11.00",
"baza_zile_an": 366,
"dobanda": "15.03",
"dobanda_exacta": "15.031830601"
}
]
},
"meta": {
"temei": "OG 13/2011 art. 3 alin. (2): rata de referinţă plus 4 puncte procentuale",
"feliere": "Perioada e tăiată la fiecare decizie de politică monetară a BNR şi la fiecare graniţă de an calendaristic.",
"convenții": {
"zile": "Calendaristice, din ziua următoare scadenţei până la data cerută inclusiv.",
"baza": "365 de zile, sau 366 în anii bisecţi — de aceea perioada se taie şi la graniţa de an.",
"capitalizare": "Niciuna. Dobânda se calculează pe debitul iniţial: art. 8 OG 13/2011 interzice anatocismul.",
"rotunjire": "O singură dată, la final. Feliile afişate sunt rotunjite la doi bani şi pot să nu se adune exact la total; `dobanda_exacta` de pe fiecare felie se adună exact la `penalitati_exacte`."
},
"atentie": "În raporturile dintre profesionişti şi între aceştia şi autorităţile contractante se aplică Legea 72/2013 — referinţă + 8 puncte, cu rata ancorată la prima zi a semestrului. Vezi /financiar/v1/calcul/penalitati/profesionisti.",
"avertisment": "Rezultatul e un calcul aritmetic pe date publice, nu o consultanţă juridică: regimul aplicabil, data scadenţei şi eventualele clauze contractuale de penalitate le stabileşte cine cunoaşte dosarul."
}
}
GEThttps://oneapi.ro/api/financiar/v1/calcul/penalitati/civile?suma=5000&scadenta=2023-01-15&pana_la=2024-01-15
{
"data": {
"debit": "5000.00",
"scadenta": "2023-01-15",
"scadenta_prorogata": "2023-01-16",
"de_la": "2023-01-17",
"pana_la": "2024-01-15",
"zile": 364,
"regim": "civila",
"neprofesional": false,
"penalitati": "548.43",
"penalitati_exacte": "548.4313945654",
"total": "5548.43",
"perioade": [
{
"de_la": "2023-01-17",
"pana_la": "2023-12-31",
"zile": 349,
"referinta": "7.00",
"rata": "11.00",
"baza_zile_an": 365,
"dobanda": "525.89",
"dobanda_exacta": "525.8904109589"
}
]
},
"meta": {
"temei": "OG 13/2011 art. 3 alin. (2): rata de referinţă plus 4 puncte procentuale",
"feliere": "Perioada e tăiată la fiecare decizie de politică monetară a BNR şi la fiecare graniţă de an calendaristic.",
"convenții": {
"zile": "Calendaristice, din ziua următoare scadenţei până la data cerută inclusiv.",
"baza": "365 de zile, sau 366 în anii bisecţi — de aceea perioada se taie şi la graniţa de an.",
"capitalizare": "Niciuna. Dobânda se calculează pe debitul iniţial: art. 8 OG 13/2011 interzice anatocismul.",
"rotunjire": "O singură dată, la final. Feliile afişate sunt rotunjite la doi bani şi pot să nu se adune exact la total; `dobanda_exacta` de pe fiecare felie se adună exact la `penalitati_exacte`."
},
"atentie": "În raporturile dintre profesionişti şi între aceştia şi autorităţile contractante se aplică Legea 72/2013 — referinţă + 8 puncte, cu rata ancorată la prima zi a semestrului. Vezi /financiar/v1/calcul/penalitati/profesionisti.",
"avertisment": "Rezultatul e un calcul aritmetic pe date publice, nu o consultanţă juridică: regimul aplicabil, data scadenţei şi eventualele clauze contractuale de penalitate le stabileşte cine cunoaşte dosarul."
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 404 | alt_regim_juridic | The period starts before 2011-09-01. |
| 422 | validare | Malformed amount, due date missing or in the future, pana_la before the due date or in the future. |
| 429 | cota_depasita | The 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": "Malformed amount, due date missing or in the future, pana_la before the due date or in the future.",
"detalii": {
"suma": [
"The value sent does not satisfy the parameter rule."
]
}
}
}