Declarații ANAF (bază)¶
Modulul Romania - ANAF Declarations Base (l10n_ro_declaration) este cadrul comun al declarațiilor fiscale din România depuse la ANAF. Fiecare declarație are propriul modul, care calculează declarația din înregistrările contabile postate ale perioadei, construiește fișierul XML oficial și îl verifică înainte de depunere. Modulul de bază furnizează ceea ce au în comun toate: gestionarea perioadelor și a termenelor, fluxul stărilor, mesajele de validare, datele declarantului, validarea XML-ului față de schema oficială și conexiunea la validatorul ANAF DUKIntegrator.
Declarație |
Conținut |
Temei legal |
Modul |
|---|---|---|---|
Decontul de TVA (Decont de TVA), lunar, trimestrial, semestrial sau anual, cu reconcilierea cu decontul precompletat ANAF e-TVA. |
OPANAF 174/2026, perioade începând cu ianuarie 2026. |
|
|
Declarația recapitulativă a operațiunilor intracomunitare (Declarația recapitulativă, VIES), lunară. |
OPANAF 705/2020. |
|
|
Declarația informativă privind livrările și achizițiile interne (Declarația informativă). |
OPANAF 3769/2015, înlocuit prin OPANAF 2194/2025, operațiuni începând cu august 2025. |
|
|
Fișier SAF-T (Fișierul Standard de Control Fiscal). |
Consultați pagina SAF-T. |
|
|
Declarația anuală privind impozitul pe profit și ajutor pentru impozitul trimestrial pe veniturile microîntreprinderilor. |
OPANAF 206/2025, anul de raportare 2025. |
|
|
Situațiile financiare anuale și raportările contabile anuale, precum și raportarea semestrială. |
OMF 2036/2025 (exercițiul financiar 2025), OMF 1194/2025 (raportare semestrială). |
|
Declarațiile se instalează din meniul Aplicații; instalați modulul fiecărei declarații. Modulul de bază se instalează automat ca dependență. Modulele D390 și D394 necesită modulul D300 (își verifică totalurile față de decontul de TVA din aceeași perioadă), iar modulul D101 necesită modulul situațiilor financiare.
Important
Declarațiile sunt disponibile numai pentru companiile a căror țară fiscală este România și a căror monedă este RON. O declarație nu poate fi creată pentru o altă companie, iar calculul este refuzat dacă moneda companiei nu este RON.
Sumele declarațiilor sunt rotunjite la lei întregi (în sus de la jumătate), conform cerințelor formularelor ANAF.
Declarațiile sunt pregătite în Odoo, dar depunerea lor la ANAF este o etapă manuală în afara Odoo, consultați Depunerea la ANAF.
Configurare¶
Datele companiei¶
Accesați și derulați până la secțiunea Declarații ANAF România, afișată pentru companiile din România. Valorile sunt stocate pe companie și propuse la fiecare declarație nouă.
Setare |
Câmpuri |
Folosit pentru |
|---|---|---|
Declarant |
Nume declarant, Prenume declarant, Funcție declarant, CNP/CUI declarant, Telefon declarant, E-mail declarant |
Persoana care semnează declarațiile (nume, prenume, funcție). Numele, prenumele și funcția sunt obligatorii: validarea eșuează dacă una dintre ele este goală. Telefonul și e-mailul sunt implicit cele ale companiei. |
Activitate și perioadă fiscală TVA |
Cod CAEN principal, Perioadă fiscală TVA, Cont bancar pentru declarații |
Codul CAEN al activității principale efectiv desfășurate (exact 4 cifre); perioada fiscală TVA (Lunar, Trimestrial, Semestrial sau Anual), care este propusă ca tip de perioadă al declarațiilor noi; și contul bancar tipărit pe declarații (implicit, primul cont bancar al companiei). |
Reprezentant fiscal / împuternicit |
Denumire/nume reprezentant, CUI/CNP împuternicit, Domiciliul fiscal al reprezentantului |
Opțional. Împuternicitul (împuternicit) care depune declarațiile în numele companiei. |
Validare DUKIntegrator |
URL serviciu validare DUK, Token serviciu validare DUK, Solicită PDF DUK |
Conexiunea la validatorul ANAF, consultați Validarea cu DUKIntegrator. |
Modulele declarațiilor adaugă propriile setări în această secțiune; de exemplu, modulul D394 adaugă datele persoanei care întocmește declarația.
Compania are nevoie de un CUI valid în câmpul său CIF: validarea verifică cifra sa de control. O companie al cărei CIF nu începe cu RO nu este înregistrată în scopuri de TVA, iar declarațiile de TVA afișează un avertisment.
Drepturi de acces¶
Meniul este afișat utilizatorilor care au acces la o companie a cărei țară fiscală este România și care au un drept de acces contabil. Contabilii pot crea și modifica declarațiile, utilizatorii cu acces contabil doar în citire le pot doar citi, iar consilierii contabili (managerii) le pot și șterge și pot edita configurarea. Un utilizator vede numai declarațiile companiilor selectate în comutatorul de companii.
Coduri de taxă și reguli de corespondență¶
Declarațiile nu citesc direct taxele. Fiecare taxă din planul de conturi din România este legată de un cod de taxă românesc, care indică fiecărei declarații unde este raportată operațiunea: rândurile D300, tipul operațiunii D390 etc. Legătura este câmpul Cod de taxă românesc al taxei (), care este completat automat pentru taxele din planul de conturi din România.
Consilierii contabili pot verifica și completa catalogul în (acest meniu le este rezervat):
Coduri de taxă românești: codurile, cu cota TVA, genul operațiunii și tratamentul D300, D390 și D394 al fiecărui cod. Acestea sunt date de bază globale, partajate de toate companiile.
Reguli de corespondență taxe: reguli care atribuie un cod de taxă unei operațiuni în funcție de taxă, tipul documentului, poziția fiscală, locația partenerului (România, UE, non-UE), categoria produsului sau un interval de date. Sunt utilizate, de exemplu, pentru taxele istorice de 19%, 9% și 5% și pentru taxele de TVA la încasare.
Notă
Dacă o taxă utilizată în perioadă nu are cod de taxă și nici regulă, declarația afișează un mesaj de eroare, iar operațiunea este omisă. Legați taxa de un cod sau creați o regulă și calculați din nou declarația.
Pregătirea unei declarații¶
Toate declarațiile funcționează în același mod. Deschideți declarația din și faceți clic pe Nou.
Alegeți perioada. Tip perioadă este propus din Perioadă fiscală TVA a companiei, iar anul și numărul perioadei din ultima perioadă încheiată. Formularul afișează datele perioadei (Perioadă) și Termen de depunere legal. Datele declarantului sunt copiate din companie și pot fi modificate în declarație.
Faceți clic pe Calculează. Rândurile declarației sunt completate din înregistrările contabile postate ale perioadei, iar declarația trece în starea Calculată. Verificările locale rulează în același timp, iar constatările lor sunt listate în fila Validare.
Verificați rândurile și completați datele care nu pot fi calculate din contabilitate. Valorile editate sunt păstrate atunci când declarația este recalculată cu Recalculează.
Faceți clic pe Validează. Odoo rulează din nou verificările locale, construiește XML-ul, îl verifică față de schema XSD oficială și, dacă validatorul DUK este configurat, îl validează cu DUKIntegrator. Dacă nicio constatare nu este o eroare, declarația trece în starea Validat; în caz contrar rămâne Calculată.
Faceți clic pe Exportă XML. Fișierul XML este atașat la declarație și descărcat, iar declarația trece în starea Exportată.
Depuneți declarația la ANAF (consultați Depunerea la ANAF), apoi faceți clic pe Marchează ca depusă.
Fișierul XML se numește <form>_<CUI>_<period>_v<version>.xml, de exemplu D300_12345678_2026-01_v1.xml (2026-T1 pentru un trimestru, 2026-S1 pentru un semestru, 2026 pentru un an).
Termene¶
Termen de depunere este calculat de la sfârșitul perioadei. Dacă cade într-un weekend sau într-o sărbătoare legală din România (calendarul bazei localizării), este mutat în următoarea zi lucrătoare.
D300 și D390: data de 25 a lunii următoare perioadei.
D394: data de 30 a lunii următoare perioadei.
D101: data de 25 iunie a anului următor.
Situații financiare anuale: 150 de zile după sfârșitul anului; raportare semestrială: 45 de zile.
Corecții¶
O declarație exportată, depusă sau arhivată nu mai poate fi modificată. Pentru a o corecta, faceți clic pe Creează rectificativă (Creează declarația corectată în D394). Odoo copiază declarația ca versiune nouă a aceleiași perioade (Tip declarație Rectificativă, Versiune + 1), legată de declarația pe care o corectează, iar dumneavoastră o calculați, validați, exportați și depuneți ca pe prima. Când versiunea corectată este marcată ca depusă, versiunile anterioare sunt arhivate. Conținutul exact al unei rectificative depinde de declarație: consultați pagina acesteia.
Mesaje de validare¶
Constatările verificărilor sunt salvate ca mesaje de validare. Butoanele Erori și Avertismente din partea de sus a declarației le deschid, iar listează mesajele tuturor declarațiilor, cu filtre după severitate și după sursa mesajului (XSD, DUKIntegrator sau verificările locale). Fiecare mesaj are un cod, rândul în cauză și, când este cazul, nota contabilă și partenerul, pentru a le deschide direct.
O eroare blochează validarea. Un avertisment nu o blochează: citiți-l și corectați contabilitatea sau declarația dacă este justificat.
Validarea cu DUKIntegrator¶
DUKIntegrator este programul Java cu care ANAF verifică declarațiile înainte de depunere; acesta conține regulile oficiale de validare ale fiecărui formular. Odoo verifică singur fiecare XML față de schema XSD inclusă în modul, dar regulile ANAF sunt mai stricte. De aceea, Odoo trimite XML-ul către un mic serviciu de validare DUK, care rulează DUKIntegrator și returnează rezultatul. Serviciul este livrat cu modulul în addons/l10n_ro_declaration/tools/duk_service și se instalează separat de Odoo, pe un server care poate accesa static.anaf.ro.
Notă
Programele ANAF (fișiere jar) nu fac parte din modul și nu sunt redistribuite: sunt descărcate de pe site-ul ANAF cu scriptul furnizat.
Ce verifică validarea¶
Când faceți clic pe Validează, Odoo rulează trei verificări în această ordine și înregistrează rezultatul în fila Validare:
Verificările locale ale declarației (datele companiei, declarantul, regulile formularului, verificări încrucișate cu alte declarații).
Verificarea XSD (Verificare XSD): Valid, Invalid sau Schemă lipsă.
Verificarea DUKIntegrator (Validare DUK).
Validare DUK |
Semnificație |
|---|---|
Valid |
DUKIntegrator a răspuns |
Valid cu avertismente |
DUKIntegrator a raportat doar avertismente (linii |
Erori |
DUKIntegrator a raportat cel puțin o eroare (linii |
Neconfigurat |
Nu este configurat niciun URL de serviciu. Pasul este omis, fără niciun mesaj, iar declarația poate ajunge în starea Validat fără să fi fost verificată cu regulile ANAF. |
Serviciu indisponibil |
Serviciul nu a răspuns, a răspuns cu o eroare (de exemplu, tokenul este greșit) sau DUKIntegrator nu a putut rula (de exemplu, validatorul formularului nu este instalat). Odoo înregistrează un avertisment, care nu blochează validarea. |
Atenționare
Validat înseamnă doar că Odoo nu a găsit nicio eroare. Dacă Validare DUK este Neconfigurat sau Serviciu indisponibil, declarația nu a fost validată de DUKIntegrator. Instalați serviciul și asigurați-vă că starea este Valid înainte de depunere.
Când Solicită PDF DUK este bifat (implicit), serviciul returnează și PDF-ul oficial produs de programul ANAF, cu XML-ul atașat, dacă validarea reușește. Acesta este atașat la declarație ca PDF DUK. D101 și situațiile financiare sunt validate fără PDF: PDF-ul ANAF al acestor formulare conține anexele declarației (note, rapoarte), care sunt asamblate cu programul de asistență ANAF.
Instalarea serviciului de validare DUK¶
Serviciul necesită Java (OpenJDK 21 a fost utilizat pentru verificare) și Python 3 și este pornit cu fișierele ANAF într-un singur folder (DUK_HOME). Modulul oferă un Dockerfile care conține Java și Python.
Descărcați programele ANAF. Pe un computer care poate accesa
static.anaf.ro, rulați scriptuldownload_duk.shdin folderul serviciului, cu folderul de destinație și formularele de validat:$ ./download_duk.sh /srv/duk D300 D390 D394 D406Scriptul descarcă
DUKIntegrator.jar, bibliotecile sale, configurația, precum și fișierele jar de validare și de PDF ale fiecărui formular solicitat (D300Validator.jar,D300Pdf.jar…) din fluxul de actualizări ANAF (versiuni.xml). Solicitați toate formularele pe care le utilizați; de exemplu, adăugațiD101,S1002,S1003,S1004șiS1005pentru declarația privind impozitul pe profit și situațiile financiare. Când se solicităD406, scriptul instalează șiDUKIntegrator_AnLunaUI.jar, validatorul sensibil la perioadă utilizat pentru fișierul SAF-T (consultați SAF-T D406 (România)). Rulați din nou scriptul când ANAF publică versiuni noi ale validatoarelor.Alegeți un token. Serviciul refuză să pornească fără un token (
DUK_TOKEN), pe care Odoo îl trimite ca token bearer. Utilizați un secret aleatoriu lung. Opțiunea--insecurepornește serviciul fără token și este destinată numai computerelor de test private.Porniți serviciul. De exemplu, cu Docker:
$ docker build -t eyssen/duk-service . $ docker run -d --name duk -p 127.0.0.1:8080:8080 -e DUK_TOKEN=<secret> \ -v /srv/duk:/opt/duk:ro eyssen/duk-service
Sau direct pe server:
DUK_HOME=/srv/duk DUK_PORT=8080 DUK_TOKEN=<secret> python3 duk_service.py. Implicit, serviciul ascultă numai pe127.0.0.1.Verificați-l.
curl http://localhost:8080/healthrăspunde{"status": "ok"}, iarcurl -H "Authorization: Bearer <secret>" http://localhost:8080/infolistează validatoarele instalate.
Important
Nu expuneți serviciul pe Internet. Publicați portul pe o interfață privată sau o rețea privată la care are acces numai serverul Odoo și păstrați tokenul secret.
Serviciul se configurează cu variabile de mediu:
Variabilă |
Implicit |
Semnificație |
|---|---|---|
|
|
Folder cu |
|
niciuna |
Token bearer, obligatoriu dacă serviciul nu este pornit cu |
|
|
Adresa și portul serviciului ( |
|
|
Secunde permise pentru o validare. Măriți valoarea pentru fișiere SAF-T mari. |
|
|
Numărul de validări care rulează simultan. O cerere care așteaptă mai mult de |
|
400 MB |
Dimensiunea maximă a fișierului XML. |
|
|
Executabilul Java și opțiuni suplimentare, de exemplu |
Conectarea Odoo la serviciu¶
Accesați , secțiunea Declarații ANAF România, setarea Validare DUKIntegrator, și completați:
URL serviciu validare DUK: URL-ul de bază al serviciului, de exemplu
http://duk:8080. Lăsați-l gol pentru a omite validarea ANAF.Token serviciu validare DUK:
DUK_TOKENal serviciului. Numai administratorii văd acest câmp.Solicită PDF DUK: bifați-l pentru a primi PDF-ul oficial.
În loc să configurați fiecare companie, serviciul poate fi setat o singură dată pentru baza de date cu parametrii de sistem l10n_ro_declaration.duk_service_url și l10n_ro_declaration.duk_service_token (modul dezvoltator, ). O companie care are propriul URL utilizează propriul token; tokenul parametrului de sistem este trimis numai către URL-ul parametrului de sistem, niciodată către un URL introdus pe o companie. Pot fi setați și parametrii l10n_ro_declaration.duk_service_timeout (secunde, implicit 120) și l10n_ro_declaration.duk_raw_threshold (octeți, implicit 20 MB; fișierele mai mari sunt transmise în flux către serviciu).
Depunerea la ANAF¶
Odoo pregătește și verifică declarațiile, dar nu le trimite la ANAF: modulele declarațiilor nu au nicio conexiune la serviciile de depunere ale ANAF. După validare:
Faceți clic pe Exportă XML și, dacă a fost solicitat, deschideți PDF DUK în fila Validare.
Depuneți singuri declarația la ANAF, de exemplu prin SPV (Spațiul Privat Virtual, spațiul virtual privat al contribuabilului pe portalul ANAF), cu fișierul pe care portalul îl cere pentru formular.
Reveniți în Odoo și faceți clic pe Marchează ca depusă. Opțional, introduceți Data depunerii și Număr de înregistrare (număr de înregistrare) atribuit declarației de ANAF. Aceste două câmpuri sunt informative: Odoo nu le verifică.
Notă
Integrarea e-Factura, care trimite facturi către SPV, este o funcționalitate separată și nu depune declarațiile.