Financiar v1 / Calcul
Late-payment interest between professionals
The statutory penalty interest under Law 72/2013 for contracts between professionals and between them and contracting authorities: the reference rate plus 8 percentage points, with the rate anchored to the first day of the half-year.
The period is sliced at half-year and calendar year boundaries — not at NBR decisions, because the rate does not change during a half-year.
GET
https://oneapi.ro/api/financiar/v1/calcul/penalitati/profesionisti
Query parameters
NameTypeDescriptionAccepted values
sumarequired
string
Required. The unpaid debt.
e.g. 1000e.g. 2500.75e.g. 20000
scadentarequired
string
Required,
YYYY-MM-DD.
e.g. 2024-06-15e.g. 2023-03-01
pana_laoptional
string | null
Optional, defaults to the current day.
e.g. 2024-03-01
neprofesionaloptional
boolean | null
With
1 applies the statutory interest for relationships where at least one party is NOT a professional — the one reduced by 20%, per GO 13/2011.
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. - Statutory penalty interest under Law 72/2013, for contracts between professionals and between them and contracting authorities: the reference plus 8 percentage points.
- The rate is anchored to the first calendar day of the half-year and applies for the whole half-year, so the period is cut at half-year and year boundaries — NOT at NBR decisions. The same interval produces different slices than the general regime, and a different result.
- The difference is real: for a due date in March 2024 and a calculation up to August 2026, the general regime yields five slices and roughly RON 2,603 of interest on a RON 10,000 debt, while the professionals' regime yields six slices and roughly RON 3,610. That is not rounding — the margins and anchoring differ.
- The
neprofesionalparameter is rejected with 422: the 20% reduction does not apply to relations between professionals, and ignoring it silently would let the client believe it had been granted. - The same conventions as the general regime: calendar days from the day after the due date, 365/366 basis, simple interest without compounding, rounding once at the end.
- Periods starting before 2011-09-01 are refused.
What it is for
- Interest on an unpaid business-to-business invoice.
- Interest owed by a contracting authority.
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
First day counted — the day after the due date.
data.pana_la
string
Last day counted, inclusive.
data.zile
integer
Number of calendar days in the interval.
data.regim
string
The regime applied:
profesionisti.
data.neprofesional
boolean
Whether the reduction for non-professional relationships was applied.
data.penalitati
string
Interest due, rounded to the cent.
data.penalitati_exacte
string
Unrounded interest — use it when you add several computations together.
data.total
string
Principal plus interest.
data.perioade[].de_la
string
Start of the slice — the interval is cut at half-year and year boundaries.
data.perioade[].pana_la
string
End of the slice, inclusive.
data.perioade[].zile
integer
Days in the slice.
data.perioade[].referinta
string
The central bank reference rate in force for the slice.
data.perioade[].rata
string
The rate applied: reference plus the statutory margin.
data.perioade[].baza_zile_an
integer
365, or 366 in leap years — hence the cut at the year boundary.
data.perioade[].dobanda
string
Interest for the slice, rounded.
data.perioade[].dobanda_exacta
string
Unrounded slice interest; these add up exactly to
penalitati_exacte.
meta.temei
string
The legal basis for the rate and how it is applied.
meta.feliere
string
Why the interval is cut where it is cut.
meta.convenții
object
Computation conventions: days, basis, compounding, rounding.
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.avertisment
string
The result is arithmetic on public data, not legal advice.
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/profesionisti?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": "profesionisti",
"neprofesional": false,
"penalitati": "336.97",
"penalitati_exacte": "336.97058163",
"total": "1336.97",
"perioade": [
{
"de_la": "2024-06-18",
"pana_la": "2024-06-30",
"zile": 13,
"referinta": "7.00",
"rata": "15.00",
"baza_zile_an": 366,
"dobanda": "5.33",
"dobanda_exacta": "5.3278688524"
}
]
},
"meta": {
"temei": "Legea 72/2013 coroborat cu OG 13/2011 art. 3 alin. (2^1): rata de referinţă plus 8 puncte procentuale. Rata în vigoare în prima zi calendaristică a semestrului se aplică pentru întregul semestru.",
"feliere": "Perioada e tăiată la graniţele de semestru şi de an calendaristic — nu la deciziile BNR, fiindcă rata nu se schimbă în cursul semestrului.",
"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`."
},
"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/profesionisti?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": "profesionisti",
"neprofesional": false,
"penalitati": "842.68",
"penalitati_exacte": "842.6791820117",
"total": "3343.43",
"perioade": [
{
"de_la": "2024-06-18",
"pana_la": "2024-06-30",
"zile": 13,
"referinta": "7.00",
"rata": "15.00",
"baza_zile_an": 366,
"dobanda": "13.32",
"dobanda_exacta": "13.3236680327"
}
]
},
"meta": {
"temei": "Legea 72/2013 coroborat cu OG 13/2011 art. 3 alin. (2^1): rata de referinţă plus 8 puncte procentuale. Rata în vigoare în prima zi calendaristică a semestrului se aplică pentru întregul semestru.",
"feliere": "Perioada e tăiată la graniţele de semestru şi de an calendaristic — nu la deciziile BNR, fiindcă rata nu se schimbă în cursul semestrului.",
"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`."
},
"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/profesionisti?suma=20000&scadenta=2023-03-01&pana_la=2024-03-01
{
"data": {
"debit": "20000.00",
"scadenta": "2023-03-01",
"scadenta_prorogata": null,
"de_la": "2023-03-02",
"pana_la": "2024-03-01",
"zile": 366,
"regim": "profesionisti",
"neprofesional": false,
"penalitati": "2990.27",
"penalitati_exacte": "2990.2739726026",
"total": "22990.27",
"perioade": [
{
"de_la": "2023-03-02",
"pana_la": "2023-06-30",
"zile": 121,
"referinta": "6.75",
"rata": "14.75",
"baza_zile_an": 365,
"dobanda": "977.95",
"dobanda_exacta": "977.9452054794"
}
]
},
"meta": {
"temei": "Legea 72/2013 coroborat cu OG 13/2011 art. 3 alin. (2^1): rata de referinţă plus 8 puncte procentuale. Rata în vigoare în prima zi calendaristică a semestrului se aplică pentru întregul semestru.",
"feliere": "Perioada e tăiată la graniţele de semestru şi de an calendaristic — nu la deciziile BNR, fiindcă rata nu se schimbă în cursul semestrului.",
"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`."
},
"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 the statutory threshold. |
| 422 | validare | parametru_inaplicabil for neprofesional; or malformed amount/dates. |
| 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": "parametru_inaplicabil for neprofesional; or malformed amount/dates.",
"detalii": {
"suma": [
"The value sent does not satisfy the parameter rule."
]
}
}
}