Contabilidad17 de marzo de 2026

Asiento de cierre y apertura en Odoo 17: qué hace Odoo y cómo resolverlo en España

Odoo 17 no genera el asiento de cierre ni el de apertura, y el módulo de OCA que lo hace no está migrado a la 17. Qué exige la normativa española y qué opciones tienes en Community.

Fiscalidad EspañaOdoo 17Cierre de ejercicioOCA

«En Odoo 17 ya no hace falta el asiento de cierre y apertura, ¿verdad?»

Es una de las dudas que más se repite entre quien lleva su contabilidad con Odoo 17 Community en España: el asesor pide «hacer el asiento de cierre y el de apertura», y desde dentro de Odoo da la sensación de que eso ya no es necesario. La respuesta corta es que tenéis razón los dos, pero sobre cosas distintas. Odoo no necesita esos asientos para funcionar; los libros contables que se legalizan sí esperan verlos. Son dos capas diferentes, y confundirlas es justo lo que genera la discusión.

Vamos por partes, con las fuentes verificadas al lado de cada afirmación.

Qué hace Odoo 17 al cerrar el ejercicio: ningún asiento

Odoo 17 no genera ni asiento de cierre ni asiento de apertura. La propia documentación oficial lo dice de forma literal: el asiento de cierre de ejercicio es opcional, porque los informes se calculan en tiempo real sobre los apuntes.

«A specific year-end closing entry is optional in order to close out the profit and loss statement. The reports are created in real-time…» — Documentación oficial de Odoo 17, year-end closing

¿Y dónde va el resultado del ejercicio? A una cuenta de tipo especial, equity_unaffected («Resultado del ejercicio actual»), que Odoo calcula de forma dinámica, sin ningún apunte. En el plan contable español de Odoo, esa cuenta es la 129 (verificable en las plantillas de l10n_es: aparece en «PYMEs», «completo» y «asociaciones», no en el plan común). Por eso, desde el motor contable, la sensación de «ya no hace falta» es correcta.

Ojo: bloquear el ejercicio no es cerrarlo

Aquí tropieza mucha gente. La fecha de bloqueo de ejercicio fiscal (fiscalyear_lock_date) no crea ningún asiento: solo comprueba que no queden asientos en borrador ni extractos bancarios sin conciliar, y bloquea el periodo para que nadie lo altere. Cerrar contablemente y bloquear fechas son cosas independientes. Y si hacéis ambas, el orden importa: primero el asiento con fecha 31/12, y después el bloqueo. Al revés, Odoo no os dejará contabilizar.

Qué te está pidiendo realmente tu gestoría

Antes de montar nada, conviene aclarar qué significa «cierre» en cada boca, porque se usa para dos operaciones muy distintas:

  • La regularización: llevar los saldos de los grupos 6 (gastos) y 7 (ingresos) a la cuenta 129 con fecha 31/12. Es un asiento manual y ya está. Es exactamente lo que describe el PGC en el movimiento de la cuenta 129, y resuelve la mayoría de los casos.
  • Los tres asientos completos: pérdidas y ganancias + cierre de balance + apertura del ejercicio siguiente. Esto sí requiere herramienta, porque Odoo no lo hace nativamente.

La recomendación práctica: pregúntale a tu asesor cuál de las dos cosas necesita. Muchas veces basta con la regularización.

Qué exige la normativa española (y qué no)

Seamos honestos con lo que dice la norma y con lo que es costumbre. Lo que sí está en la ley:

  • El Código de Comercio (arts. 25 a 28) obliga a llevar libro de Inventarios y Cuentas anuales y libro Diario, y a que el de Inventarios «se abra con el balance inicial detallado».
  • El PGC (RD 1514/2007) describe, en la cuenta 129, la regularización: cargar/abonar las cuentas de los grupos 6 y 7 contra la 129 para determinar el resultado. Ese es el asiento de PyG.

Ahora la parte que conviene decir con transparencia: no hay una norma que exija literalmente un «asiento de cierre» y un «asiento de apertura» en el Libro Diario. Lo que la norma describe es la regularización contra la 129; el cierre y la apertura de balance son práctica contable consolidada, muy extendida y esperada por cualquiera que revise los libros, pero no un mandato que aparezca escrito con esas palabras. Si tu asesor tiene la referencia exacta, encantados de conocerla.

Y un matiz que causa confusión: la Instrucción de la DGRN de 12 de febrero de 2015 sobre legalización telemática de libros habla de «diligencia de cierre» — pero eso es una diligencia del fichero del libro, no un asiento contable, y de hecho para los libros presentados telemáticamente indica que no se requiere. No es lo mismo que un asiento de cierre.

El módulo de OCA que lo hace — y por qué en la 17 te deja en el hueco

Si de verdad necesitáis los tres asientos, el módulo de la comunidad (OCA) que los genera es account_fiscal_year_closing. Primer aviso: no está donde uno lo busca. No vive en OCA/l10n-spain ni en account-financial-tools, sino en OCA/account-closing. Genera los tres tipos de asiento (closing, opening, loss_profit), con plantillas configurables, previsualización antes de contabilizar y opción de cancelar (desconcilia y borra los apuntes).

Segundo aviso, y este es el gordo: no está migrado a la 17.0. La rama 17.0 del repositorio existe y está viva, pero ese módulo saltó de la 16.0 a la 18.0 directamente. Si estás en Odoo 17, estás justo en el hueco:

Versión de Odoo¿Está account_fiscal_year_closing?
14.0
15.0No
16.0
17.0No — nunca se migró
18.0
19.0

Y hay un tercer detalle: la plantilla del PGC español para este motor (l10n_es_account_fiscal_year_closing, de Tecnativa) lleva sin migrarse desde Odoo 10. Existió en la 8.0 y la 10.0, y en ninguna versión posterior. Así que, aunque portes el motor a la 17, la configuración de cierre para el plan español habría que reconstruirla a mano.

Aviso extra para Community: no tienes Balance ni Pérdidas y Ganancias de serie

Relacionado, porque te va a hacer falta al cerrar: Odoo 17 Community no incluye el Balance de Situación ni la Cuenta de Pérdidas y Ganancias nativos. Los informes financieros dinámicos son de Enterprise. En Community se resuelven con OCA:

  • account_financial_report (rama 17.0 disponible), o
  • l10n_es_mis_report (rama 17.0 disponible).

Lo señalamos porque buena parte de lo que leerás sobre «comprobar que el resultado queda a cero en el balance» da por hecho que tienes ese informe, y en Community de serie no lo tienes.

Entonces, ¿qué hago si estoy en Odoo 17 CE?

  1. Pregunta a tu asesor si necesita solo la regularización (grupos 6 y 7 contra la 129) o los tres asientos completos. Con la primera suele bastar.
  2. Si basta con la regularización: asiento manual con fecha 31/12 llevando 6xx y 7xx a la 129. Es lo que la propia documentación de Odoo recomienda.
  3. Si necesitas cierre + apertura completos, por orden de coste: portar el módulo de la 16.0 (o 18.0) a la 17.0 —es pequeño y solo depende de account, y sería una contribución útil a la comunidad—, o planificar el salto a Odoo 18, donde ya está.
  4. Al final de todo, pon la fecha de bloqueo a 31/12. Ese es el paso que da inalterabilidad, y es independiente de los asientos.

Resumen

Afirmación¿Cierto?
Odoo 17 genera solo el asiento de cierre y aperturaNo: no genera ninguno; el resultado va dinámicamente a la 129
Bloquear el ejercicio equivale a cerrarloNo: el bloqueo no crea apuntes, solo valida y protege el periodo
El módulo de cierre de OCA sirve en la 17No: account_fiscal_year_closing no está migrado a 17.0
Community trae Balance y PyGNo: son de Enterprise; en Community se resuelve con OCA
La regularización contra la 129 resuelve el caso habitualSí, en la mayoría de los casos

¿Estás en Odoo 17 y necesitas cerrar el ejercicio o planificar el salto a 18?

En Skanndar migramos y damos soporte de contabilidad Odoo para empresas españolas, incluida la parte de OCA y la localización fiscal. Si te has quedado en el hueco de la 17 o quieres hacer el cierre bien a la primera, lo miramos contigo.

¿Tienes un proyecto Odoo o una implantación que no termina de funcionar?

Cuéntamelo directamente — hago una auditoría gratuita para proyectos cualificados.