Business v1 / Nomenclatoare
Fiscal calendar
The tax deadlines and obligations (optionally ?an=, ?luna=).
GET
https://oneapi.ro/api/business/v1/calendar-fiscal
Query parameters
NameTypeDescriptionAccepted values
anoptional
integer | null
Calendar year; defaults to the current one.
e.g. 2024
lunaoptional
integer | null
The month as an INTEGER, 1–12 (not
YYYY-MM), to see only its deadlines.
1 – 12
de_laoptional
string | null
The start of the interval,
YYYY-MM-DD — it applies to data, so condition-deadlines (without a day) stay out.
e.g. 2024-01-01
pana_laoptional
string | null
The end of the interval,
YYYY-MM-DD — to see only the deadlines up to a date.
e.g. 2024-12-31
How it behaves
- The fiscal calendar: the deadlines for filing declarations and paying obligations, as a reference for interpreting the tax vector.
- ⚠️ Do not assume the covered years are complete, nor that they are consecutive.
meta.acoperirestates exactly what exists, andmeta.goluriwhat is missing between the first and the last year — with the reason, where it can be read from the data. Build the list of years from those, not from an assumed range. - ⚠️ The year 2025 does NOT exist, and it is not a missed import: ANAF overwrote
Calendar_obligatii_fiscale_2025.htmwith the 2026 calendar, so the 2025 calendar is no longer published at its address. Verified on 29 Sep and reconfirmed on 14 Oct 2026. It appears inmeta.goluriwithmotiv: suprascris_la_sursa. - ⚠️ The current year is published MONTH BY MONTH by ANAF, not whole at the start of the year, and our chain refreshes it monthly. A year with nine months in
acoperireis the state of the source at the last fetch, not an incomplete import. - About 15% of the deadlines are CONDITIONS, not dates („within 30 days of incorporation"): they carry
data_limitaas text anddata: null. Thede_la/pana_lafilters work ondata, so those rows never fall inside a date window.
What it is for
- Building a deadline calendar in an accounting app.
- Sending reminders to clients before a due date.
- Interpreting the tax vector: what is filed, and by when.
Response structure
FieldTypeDescription
data[].an
integer
The reference year.
data[].luna
integer
The reference month (an integer, 1–12).
data[].data
string
The deadline as a calendar date (
YYYY-MM-DD), where one can be established. null for deadlines expressed as a CONDITION („within 30 days of incorporation"), which have no fixed day — about 15% of the rows. Ordering and the de_la/pana_la filters work on this field.
data[].data_limita
string
The deadline exactly as ANAF writes it, free text („Monday 26 January", „within 30 days of…").
data[].obligatie
string
The filing or payment obligation.
data[].categorii_contribuabili
string
Who the obligation applies to.
data[].baza_legala
string
The legal basis.
meta.acoperire[].an
integer
A year for which we have deadlines.
meta.acoperire[].luni
array
The months published for that year. ANAF publishes the current year MONTH BY MONTH, so a partial year is normal, not something missing on our side.
meta.goluri[].an
A year MISSING between the first and the last covered year.
meta.goluri[].motiv
suprascris_la_sursa if ANAF replaced that year's file with another one, or null if the reason cannot be read from the data.
meta.goluri[].fisier
The source file named after the missing year.
meta.goluri[].livrat_anul
The year that file actually contains.
Response examples
GEThttps://oneapi.ro/api/business/v1/calendar-fiscal
{
"data": [
{
"an": 2022,
"luna": 1,
"data": "2022-01-07",
"data_limita": "vineri 7 ianuarie",
"obligatie": "Depunerea Declarației de mențiuni privind schimbarea perioadei fiscale pentru persoanele impozabile înregistrate în scopuri de TVA care utilizează trimestrul calendaristic ca perioadă fiscală și care efectuează o achiziție intracomunitară taxabilă în România - Formularul 092",
"categorii_contribuabili": "Contribuabilii înregistrați în scop de TVA care utilizează ca perioadă fiscală trimestrul și care au efectuat o achiziție intracomunitară taxabilă în România, fiind astfel obligați să își modifice perioada fiscală, devenind plătitori de TVA lunar.",
"baza_legala": "Legea 227/2015 art. 322OPANAF 169/2019"
}
],
"meta": {
"acoperire": [
{
"an": 2022,
"luni": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
]
}
]
}
}
GEThttps://oneapi.ro/api/business/v1/calendar-fiscal?an=2024
{
"data": [
{
"an": 2024,
"luna": 1,
"data": "2024-01-03",
"data_limita": "miercuri 3 ianuarie",
"obligatie": "Depunerea Declaraţiei informative privind livrările/prestările şi achiziţiile efectuate pe teritoriul naţional de persoanele înregistrate în scopuri de TVA - aferente perioadei de raportare precedente (luna, trim. etc. ; perioada de raportare este cea declarată pentru depunerea decontului de TVA, prevăzută la art.322 din Legea nr.227/2015) - Formularul 394",
"categorii_contribuabili": "Persoanele impozabile înregistrate în scopuri de TVA în România conform art. 316 din Codul fiscal, pentru livrările de bunuri/prestările de servicii taxabile în România pentru care persoana obligată la plata taxei este furnizorul/prestatorul conform art. 307 alin. (1) sau (7) din Codul fiscal sau beneficiarul conform art. 331 din Codul fiscal; Persoanele impozabile înregistrate în scopuri de TVA în România conform art. 316 din Codul fiscal, care realizează achiziţii de bunuri sau servicii taxabile pentru care locul livrării/prestării este în România conform art. 275, respectiv art. 278 din Codul fiscal, inclusiv achiziţiile pentru care beneficiarul este obligat la plata TVA conform art. 307 alin. (2), (3), (5) şi (6) şi art. 331 din Codul fiscal, indiferent de data la care intervine exigibilitatea taxei.",
"baza_legala": "OPANAF 3769/2015"
}
],
"meta": {
"acoperire": [
{
"an": 2022,
"luni": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
]
}
]
}
}
GEThttps://oneapi.ro/api/business/v1/calendar-fiscal?luna=6
{
"data": [
{
"an": 2022,
"luna": 6,
"data": "2022-06-08",
"data_limita": "miercuri 8 iunie",
"obligatie": "Depunerea declaraţiei de menţiuni privind schimbarea perioadei fiscale pentru persoanele impozabile înregistrate în scopuri de TVA care utilizează trimestrul calendaristic ca perioadă fiscală şi care efectuează o achiziţie intracomunitară taxabilă în România După caz, contribuabilii depun: Formularul 010 - Declaraţie de înregistrare fiscală/Declaraţie de menţiuni/Declaraţie de radiere pentru persoane juridice, asocieri şi alte entităţi fără personalitate juridică. Formularul 013 - Declaraţie de înregistrare fiscală/Declaraţie de menţiuni/Declaraţie de radiere pentru contribuabilii nerezidenţi care desfăşoară activitate în România prin unul sau mai multe sedii permanente. Formularul 015 - Declaraţie de înregistrare fiscală/Declaraţie de menţiuni/Declaraţie de radiere pentru contribuabilii nerezidenţi care nu au sediu permanent în România Formularul 016 - Declaraţie de înregistrare fiscală/Declaraţie de menţiuni/Declaraţie de radiere pentru persoanele juridice străine care au locul de exercitare a conducerii efective în România Formularul 020 - Declaraţie de înregistrare fiscală/Declaraţie de menţiuni pentru persoanele fizice române şi străine care deţin cod numeric personal. Formularul 030 - Declaraţie de înregistrare fiscală/Declaraţie de menţiuni/Declaraţie de radiere pentru persoanele fizice care nu deţin cod numeric personal. Formularul 040 - Declaraţie de înregistrare fiscală/Declaraţie de menţiuni/Declaraţie de radiere pentru instituţiile publice. Formularul 070 - Declaraţie de înregistrare fiscală/Declaraţie de menţiuni/Declaraţie de radiere pentru persoanele fizice care desfăşoară activităţi economice în mod independent sau exercită profesii libere.sau Formularul 700 - Declaraţie pentru înregistrarea/modificarea în mediu electronic a menţiunilor ulterioare înregistrării fiscale, precum şi pentru radierea înregistrării fiscale.",
"categorii_contribuabili": "Contribuabilii înregistraţi în scop de TVA care utilizează ca perioadă fiscală trimestrul şi care au efectuat o achiziţie intracomunitară taxabilă în România, fiind astfel obligaţi să îşi modifice perioada fiscală, devenind plătitori de TVA lunar.",
"baza_legala": "Legea 227/2015 art. 322OPANAF 1699/2021"
}
],
"meta": {
"acoperire": [
{
"an": 2022,
"luni": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
]
}
]
}
}
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. |
| 422 | validare | An undeclared parameter or a value that fails validation (an, luna). The offending field is in detalii. |
| 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": "An undeclared parameter or a value that fails validation (an, luna). The offending field is in detalii.",
"detalii": {
"an": [
"The value sent does not satisfy the parameter rule."
]
}
}
}