Declaraciones ANAF (base)¶
El módulo Romania - ANAF Declarations Base (l10n_ro_declaration) es el marco común de las declaraciones fiscales rumanas presentadas ante la ANAF. Cada declaración tiene su propio módulo, que calcula la declaración a partir de los apuntes contables contabilizados del periodo, genera el archivo XML oficial y lo comprueba antes de presentarlo. El módulo base proporciona lo que todas comparten: la gestión de periodos y plazos, el flujo de estados, los mensajes de validación, los datos del declarante, la validación del XML con el esquema oficial y la conexión con el validador de la ANAF DUKIntegrator.
Declaración |
Contenido |
Base legal |
Módulo |
|---|---|---|---|
Declaración de IVA (Decont de TVA), mensual, trimestral, semestral o anual, con la conciliación con la declaración precumplimentada e-TVA de la ANAF. |
OPANAF 174/2026, periodos a partir de enero de 2026. |
|
|
Declaración recapitulativa de las operaciones intracomunitarias (Declarația recapitulativă, VIES), mensual. |
OPANAF 705/2020. |
|
|
Declaración informativa sobre las entregas y adquisiciones nacionales (Declarația informativă). |
OPANAF 3769/2015, sustituida por la OPANAF 2194/2025, operaciones a partir de agosto de 2025. |
|
|
Archivo SAF-T (Fișierul Standard de Control Fiscal). |
Consulte la página de SAF-T. |
|
|
Declaración anual del impuesto sobre beneficios y asistente para el impuesto trimestral de las microempresas. |
OPANAF 206/2025, ejercicio 2025. |
|
|
Cuentas anuales e informes contables anuales, e informe semestral. |
OMF 2036/2025 (ejercicio 2025), OMF 1194/2025 (informe semestral). |
|
Las declaraciones se instalan desde el menú Aplicaciones; instale el módulo de cada declaración. El módulo base se instala automáticamente como dependencia. Los módulos D390 y D394 requieren el módulo D300 (comprueban sus totales con la declaración de IVA del mismo periodo), y el módulo D101 requiere el módulo de cuentas anuales.
Importante
Las declaraciones solo están disponibles para las empresas cuyo país fiscal es Rumanía y cuya moneda es el RON. No se puede crear una declaración para otra empresa, y el cálculo se rechaza si la moneda de la empresa no es el RON.
Los importes de las declaraciones se redondean a lei enteros (redondeo hacia arriba en la mitad), como exigen los formularios de la ANAF.
Las declaraciones se preparan en Odoo, pero su presentación ante la ANAF es un paso manual fuera de Odoo, véase Presentación ante la ANAF.
Configuración¶
Datos de la empresa¶
Vaya a y desplácese hasta la sección Declaraciones ANAF de Rumanía, que aparece para las empresas rumanas. Los valores se almacenan en la empresa y se proponen en cada nueva declaración.
Ajuste |
Campos |
Utilizado para |
|---|---|---|
Declarante |
Apellido del declarante, Nombre del declarante, Cargo del declarante, CNP/CUI del declarante, Teléfono del declarante, Correo del declarante |
La persona que firma las declaraciones (nume, prenume, funcție). El apellido, el nombre y el cargo son obligatorios: la validación falla si alguno está vacío. El teléfono y el correo electrónico toman por defecto los de la empresa. |
Actividad y periodo de IVA |
Código CAEN principal, Periodo de IVA, Cuenta bancaria de las declaraciones |
El código CAEN de la actividad principal realmente ejercida (exactamente 4 dígitos); el periodo de IVA (Mensual, Trimestral, Semestral o Anual), que se propone como tipo de periodo de las nuevas declaraciones; y la cuenta bancaria impresa en las declaraciones (por defecto, la primera cuenta bancaria de la empresa). |
Representante fiscal |
Nombre del representante, CUI/CNP del representante, Dirección del representante |
Opcional. El apoderado (împuternicit) que presenta las declaraciones en nombre de la empresa. |
Validación con DUKIntegrator |
URL del servicio de validación DUK, Token del servicio de validación DUK, Solicitar PDF DUK |
La conexión con el validador de la ANAF, véase Validación con DUKIntegrator. |
Los módulos de declaraciones añaden sus propios ajustes a esta sección; por ejemplo, el módulo D394 añade los datos de la persona que elabora la declaración.
La empresa necesita un CUI válido en su campo NIF: la validación comprueba su dígito de control. Una empresa cuyo NIF no empieza por RO no está registrada a efectos de IVA, y las declaraciones de IVA muestran un aviso.
Permisos de acceso¶
El menú se muestra a los usuarios que tienen acceso a una empresa cuyo país fiscal es Rumanía y que tienen un derecho de acceso de contabilidad. Los contables pueden crear y modificar las declaraciones, los usuarios con acceso de solo lectura a la contabilidad solo pueden leerlas, y los asesores contables (responsables) también pueden eliminarlas y editar la configuración. Un usuario solo ve las declaraciones de las empresas seleccionadas en el selector de empresas.
Códigos de impuesto y reglas de correspondencia¶
Las declaraciones no leen directamente los impuestos. Cada impuesto del plan contable rumano está vinculado a un código fiscal rumano, que indica a cada declaración dónde se notifica la operación: las filas de la D300, el tipo de operación de la D390, etc. El vínculo es el campo Código de impuesto rumano del impuesto (), que se rellena automáticamente para los impuestos del plan contable rumano.
Los asesores contables pueden revisar y completar el catálogo en (este menú les está reservado):
Códigos de impuesto rumanos: los códigos, con el tipo de IVA, la clase de operación y el tratamiento D300, D390 y D394 de cada código. Son datos maestros globales, compartidos por todas las empresas.
Reglas de correspondencia de impuestos: reglas que asignan un código fiscal a una operación según el impuesto, el tipo de documento, la posición fiscal, la ubicación del contacto (Rumanía, UE, fuera de la UE), la categoría de producto o un intervalo de fechas. Se utilizan, por ejemplo, para los impuestos históricos al 19 %, 9 % y 5 %, y para los impuestos de IVA de caja.
Nota
Si un impuesto utilizado en el periodo no tiene código fiscal ni regla, la declaración muestra un mensaje de error y la operación se deja fuera. Vincule el impuesto a un código, o cree una regla, y vuelva a calcular la declaración.
Preparar una declaración¶
Todas las declaraciones funcionan de la misma manera. Abra la declaración desde y haga clic en Nuevo.
Elija el periodo. El Tipo de periodo se propone a partir del Periodo de IVA de la empresa, y el año y el número de periodo a partir del último periodo finalizado. El formulario muestra las fechas del periodo (Periodo) y el Plazo legal. Los datos del declarante se copian de la empresa y pueden modificarse en la declaración.
Haga clic en Calcular. Las filas de la declaración se rellenan a partir de los apuntes contables contabilizados del periodo y la declaración pasa al estado Calculada. Las comprobaciones locales se ejecutan al mismo tiempo y sus resultados se enumeran en la pestaña Validación.
Revise las filas y complete los datos que no pueden calcularse a partir de la contabilidad. Los valores editados se conservan cuando se vuelve a calcular la declaración con Recalcular.
Haga clic en Validar. Odoo ejecuta de nuevo las comprobaciones locales, genera el XML, lo comprueba con el esquema XSD oficial y, si el validador DUK está configurado, lo valida con DUKIntegrator. Si ningún resultado es un error, la declaración pasa a Validada; de lo contrario, permanece en Calculada.
Haga clic en Exportar XML. El archivo XML se adjunta a la declaración y se descarga, y la declaración pasa a Exportada.
Presente la declaración ante la ANAF (véase Presentación ante la ANAF) y después haga clic en Marcar como presentada.
El archivo XML se denomina <form>_<CUI>_<period>_v<version>.xml, por ejemplo D300_12345678_2026-01_v1.xml (2026-T1 para un trimestre, 2026-S1 para un semestre, 2026 para un año).
Plazos¶
La Fecha límite se calcula a partir del final del periodo. Si cae en fin de semana o en un día festivo nacional rumano (calendario de la base de la localización), se traslada al siguiente día hábil.
D300 y D390: el día 25 del mes siguiente al periodo.
D394: el día 30 del mes siguiente al periodo.
D101: el 25 de junio del año siguiente.
Estados financieros anuales: 150 días después del final del ejercicio; informe semestral: 45 días.
Correcciones¶
Una declaración que se ha exportado, presentado o archivado no puede modificarse. Para corregirla, haga clic en Crear rectificativa (Crear declaración corregida en la D394). Odoo copia la declaración como una nueva versión del mismo periodo (Tipo de declaración Rectificativa, Versión + 1), vinculada a la declaración que corrige, y usted la calcula, valida, exporta y presenta como la primera. Cuando la versión corregida se marca como presentada, las versiones anteriores se archivan. El contenido exacto de una rectificativa depende de la declaración: consulte su página.
Mensajes de validación¶
Los resultados de las comprobaciones se guardan como mensajes de validación. Los botones Errores y Advertencias de la parte superior de la declaración los abren, y enumera los de todas las declaraciones, con filtros por gravedad y por origen del mensaje (XSD, DUKIntegrator o las comprobaciones locales). Cada mensaje tiene un código, la fila afectada y, cuando procede, el asiento contable y el contacto, para abrirlos directamente.
Un error bloquea la validación. Una advertencia no: léala y corrija la contabilidad o la declaración si está justificado.
Validación con DUKIntegrator¶
DUKIntegrator es el programa Java con el que la ANAF comprueba las declaraciones antes de su presentación; contiene las reglas de validación oficiales de cada formulario. Odoo comprueba por sí mismo cada XML con el esquema XSD incluido en el módulo, pero las reglas de la ANAF son más estrictas. Por ello, Odoo envía el XML a un pequeño servicio de validación DUK, que ejecuta DUKIntegrator y devuelve el resultado. El servicio se suministra con el módulo en addons/l10n_ro_declaration/tools/duk_service y se instala por separado de Odoo, en un servidor que pueda acceder a static.anaf.ro.
Nota
Los programas de la ANAF (archivos jar) no forman parte del módulo y no se redistribuyen: se descargan del sitio web de la ANAF con el script proporcionado.
Qué comprueba la validación¶
Al hacer clic en Validar, Odoo ejecuta tres comprobaciones en este orden y registra el resultado en la pestaña Validación:
Las comprobaciones locales de la declaración (datos de la empresa, declarante, reglas del formulario, comprobaciones cruzadas con otras declaraciones).
La comprobación XSD (Comprobación XSD): Válido, No válido o Falta el esquema.
La comprobación de DUKIntegrator (Validación DUK).
Validación DUK |
Significado |
|---|---|
Válido |
DUKIntegrator respondió |
Válido con advertencias |
DUKIntegrator solo notificó advertencias (líneas |
Errores |
DUKIntegrator notificó al menos un error (líneas |
No configurado |
No hay ninguna URL de servicio configurada. El paso se omite sin ningún mensaje, y la declaración puede alcanzar el estado Validado sin haber sido comprobada con las reglas de la ANAF. |
Servicio no disponible |
El servicio no respondió, respondió con un error (por ejemplo, el token es incorrecto) o DUKIntegrator no pudo ejecutarse (por ejemplo, el validador del formulario no está instalado). Odoo registra una advertencia, que no bloquea la validación. |
Advertencia
Validado solo significa que Odoo no ha encontrado ningún error. Si Validación DUK está en No configurado o Servicio no disponible, la declaración no ha sido validada por DUKIntegrator. Instale el servicio y asegúrese de que el estado sea Válido antes de presentar.
Cuando Solicitar PDF DUK está marcado (por defecto), el servicio también devuelve el PDF oficial generado por el programa de la ANAF, con el XML adjunto, si la validación se realiza correctamente. Se adjunta a la declaración como PDF DUK. La D101 y los estados financieros se validan sin el PDF: el PDF de la ANAF de estos formularios contiene los anexos de la declaración (notas, informes), que se elaboran con el programa de asistencia de la ANAF.
Instalar el servicio de validación DUK¶
El servicio necesita Java (se utilizó OpenJDK 21 para verificarlo) y Python 3, y se inicia con los archivos de la ANAF en una misma carpeta (DUK_HOME). El módulo proporciona un Dockerfile que contiene Java y Python.
Descargue los programas de la ANAF. En una máquina que pueda acceder a
static.anaf.ro, ejecute el scriptdownload_duk.shde la carpeta del servicio con la carpeta de destino y los formularios que desea validar:$ ./download_duk.sh /srv/duk D300 D390 D394 D406El script descarga
DUKIntegrator.jar, sus bibliotecas, la configuración y los jar de validación y de PDF de cada formulario solicitado (D300Validator.jar,D300Pdf.jar…) desde el canal de actualizaciones de la ANAF (versiuni.xml). Solicite todos los formularios que utilice; por ejemplo, añadaD101,S1002,S1003,S1004yS1005para la declaración del impuesto sobre beneficios y los estados financieros. Cuando se solicitaD406, el script también instalaDUKIntegrator_AnLunaUI.jar, el validador con control de periodo utilizado para el archivo SAF-T (véase SAF-T D406 (Rumanía)). Ejecute el script de nuevo cuando la ANAF publique nuevas versiones de los validadores.Elija un token. El servicio se niega a iniciarse sin un token (
DUK_TOKEN), que Odoo envía como bearer token. Utilice un secreto largo y aleatorio. La opción--insecureinicia el servicio sin token y está pensada únicamente para máquinas de prueba privadas.Inicie el servicio. Por ejemplo, con 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
O directamente en el servidor:
DUK_HOME=/srv/duk DUK_PORT=8080 DUK_TOKEN=<secret> python3 duk_service.py. Por defecto, el servicio escucha únicamente en127.0.0.1.Compruébelo.
curl http://localhost:8080/healthresponde{"status": "ok"}, ycurl -H "Authorization: Bearer <secret>" http://localhost:8080/infoenumera los validadores instalados.
Importante
No exponga el servicio en Internet. Publique el puerto en una interfaz privada o en una red privada a la que solo pueda acceder el servidor de Odoo, y mantenga el token en secreto.
El servicio se configura con variables de entorno:
Variable |
Valor predeterminado |
Significado |
|---|---|---|
|
|
Carpeta con |
|
ninguno |
Bearer token, obligatorio salvo que el servicio se inicie con |
|
|
Dirección y puerto del servicio ( |
|
|
Segundos permitidos para una validación. Auméntelo para archivos SAF-T grandes. |
|
|
Número de validaciones que se ejecutan al mismo tiempo. Una solicitud que espera más de |
|
400 MB |
Tamaño máximo del archivo XML. |
|
|
Ejecutable de Java y opciones adicionales, por ejemplo |
Conectar Odoo con el servicio¶
Vaya a , sección Declaraciones ANAF de Rumanía, ajuste Validación DUKIntegrator, y complete:
URL del servicio de validación DUK: la URL base del servicio, por ejemplo
http://duk:8080. Déjela vacía para omitir la validación de la ANAF.Token del servicio de validación DUK: el
DUK_TOKENdel servicio. Solo los administradores ven este campo.Solicitar PDF DUK: márquelo para recibir el PDF oficial.
En lugar de configurar cada empresa, el servicio puede definirse una sola vez para la base de datos con los parámetros del sistema l10n_ro_declaration.duk_service_url y l10n_ro_declaration.duk_service_token (modo desarrollador, ). Una empresa que tiene su propia URL utiliza su propio token; el token del parámetro del sistema solo se envía a la URL del parámetro del sistema, nunca a una URL escrita en una empresa. También pueden definirse los parámetros l10n_ro_declaration.duk_service_timeout (segundos, 120 por defecto) y l10n_ro_declaration.duk_raw_threshold (bytes, 20 MB por defecto; los archivos mayores se transmiten en flujo al servicio).
Presentación ante la ANAF¶
Odoo prepara y comprueba las declaraciones, pero no las envía a la ANAF: los módulos de declaraciones no tienen conexión con los servicios de presentación de la ANAF. Tras la validación:
Haga clic en Exportar XML y, si se solicitó, abra el PDF DUK en la pestaña Validación.
Presente usted mismo la declaración ante la ANAF, por ejemplo a través del SPV (Spațiul Privat Virtual, el espacio privado virtual del contribuyente en el portal de la ANAF), con el archivo que el portal exige para el formulario.
De vuelta en Odoo, haga clic en Marcar como presentada. Opcionalmente, introduzca la Fecha de presentación y el Número de registro (număr de înregistrare) que la ANAF asignó a la declaración. Estos dos campos son informativos: Odoo no los comprueba.
Nota
La integración de e-Factura, que envía facturas al SPV, es una función independiente y no presenta las declaraciones.