OdooWiki OCA HUB

Colombia - Factura Electrónica Software Propio

l10n_co_electronic_invoice_self folder_open OCA/l10n-colombia open_in_new
Accounting/Localizations Licencia: AGPL-3

Integración directa con los servicios web de la DIAN para la emisión de facturación electrónica colombiana en modo software propio.

Funcionalidades:

  • Generación de XML UBL 2.1 con extensiones DIAN
  • Firma digital XAdES-EPES y envelope SOAP con WS-Security
  • Envío SendTestSetAsync (habilitación) y SendBillSync (producción)
  • Consulta de estado: GetStatusZip y GetStatus (por CUFE)
  • Consulta de rangos de numeración y clave técnica (GetNumberingRange)
  • Generación de AttachedDocument con CDATA
  • Eventos RADIAN con flujo secuencial (030, 031, 032, 033)
  • Importación de facturas de proveedor desde XML o ZIP
  • Representación gráfica PDF según requisitos DIAN
  • Generación de ZIP (PDF + XML) para envío por email

Modos de operación: Demostración, Habilitación y Producción.

Documentos soportados:

  • Factura electrónica de venta (01)
  • Factura electrónica de exportación (02)
  • Nota crédito electrónica (91) con o sin referencia
  • Nota débito electrónica (92)
  • Documento soporte (05)
  • Nota de ajuste documento soporte (95)

Copyright (C) 2025 IKU Solutions - Yan Chirino

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 19.0

Configura la facturación electrónica colombiana con tu propio software: genera, firma y envía facturas DIAN, notas crédito/débito y documentos de soporte, consulta su estado y envía eventos RADIAN.

Este módulo conecta Odoo con la DIAN (autoridad fiscal colombiana) para que puedas emitir facturas electrónicas usando tu propio software en lugar de un proveedor externo.

  • En cada diario de ventas o compras eliges un modo de operación: Demostración (demo, sin envío), Habilitación (entorno de pruebas de la DIAN) o Producción. También rellenas la identificación del software, el PIN, la clave técnica, el tipo de resolución, el número y las fechas de la resolución, el prefijo y el rango de numeración (valores separados para producción y habilitación).
  • Un botón en el diario consulta a la DIAN los rangos de numeración autorizados.
  • Cuando publicas una factura, nota crédito, nota débito o documento soporte, Odoo construye el XML UBL, lo firma, lo envía a la DIAN y almacena el XML firmado, el sobre SOAP, la respuesta de la DIAN y el AttachedDocument en el chatter. En modo demo no se envía nada.
  • Antes de enviar, Odoo comprueba que el diario, la compañía, el cliente y los productos tengan los datos fiscales requeridos (código UNSPSC o referencia interna, impuesto, unidad de medida), que los impuestos tengan un tipo de impuesto DIAN, que exista un certificado válido y, para facturas de exportación, que el cliente sea extranjero, la moneda sea USD y los productos tengan marca y modelo. Las notas crédito y débito deben tener un concepto de corrección y referenciar una factura aceptada con CUFE/CUDE.
  • La numeración sigue el rango autorizado; si se alcanza el número final, Odoo bloquea la creación de un nuevo documento.
  • En la factura puedes consultar el estado en la DIAN (por CUFE o ZipKey) y abrir un asistente para enviar eventos RADIAN (030, 031, 032, 033), que actualiza el estado RADIAN y la lista de eventos enviados.
  • El PDF de la factura está adaptado a los requisitos de la DIAN e incluye un código QR que enlaza a la página de validación de la DIAN. Al enviar por correo electrónico, se adjunta un ZIP con el XML del AttachedDocument y el PDF.
  • Las facturas de proveedor recibidas como XML o ZIP de la DIAN se pueden importar en Odoo.

Depende de

account_ediaccount_edi_ubl_ciil10n_co_electronic_invoicecertificate
Modelos y campos (10)
  • res.company · amplía un modelo existente
  • res.partner · amplía un modelo existente
  • account.move · amplía un modelo existentel10n_co_radian_status (Estado RADIAN), l10n_co_radian_events_sent (Eventos RADIAN enviados), l10n_co_is_support_document (Es Documento Soporte)
  • ir.attachment · amplía un modelo existente
  • account.journal · amplía un modelo existentel10n_co_dian_test_set_id (TestSetId (Hab.)), l10n_co_dian_software_pin (Pin), l10n_co_dian_operation_mode (Modo de Operación), l10n_co_dian_resolution_type (Tipo de Resolución), l10n_co_dian_resolution_type_test (Tipo de Resolución (Habilitación)), l10n_co_electronic_document_prefix (Prefijo), l10n_co_dian_software_technical_key (Clave técnica (Producción)), l10n_co_electronic_document_message (Mensaje de Resolución), l10n_co_dian_software_identification (Identificación), l10n_co_electronic_document_end_number (Número de Fin), l10n_co_electronic_document_resolution (Resolución), l10n_co_electronic_document_prefix_test (Prefijo (Hab.)), l10n_co_dian_software_technical_key_test (Clave Técnica (Hab.)), l10n_co_electronic_document_message_test (Mensaje Resolución (Hab.)), l10n_co_electronic_document_start_number (Número de Inicio), l10n_co_electronic_document_end_number_test (Número de Fin (Hab.)), l10n_co_electronic_document_resolution_test (Resolución (Hab.)), l10n_co_electronic_document_start_number_test (Número de Inicio (Hab.)), l10n_co_electronic_document_end_resolution_date (Fecha de Fin de Resolución), l10n_co_electronic_document_start_resolution_date (Fecha de Inicio de Resolución), l10n_co_electronic_document_end_resolution_date_test (Fecha Fin Resolución (Hab.)), l10n_co_electronic_document_start_resolution_date_test (Fecha Inicio Resolución (Hab.))
  • account.move.line · amplía un modelo existente
  • account.move.send · amplía un modelo existente
  • account.edi.format · amplía un modelo existente
  • l10n_co.dian.self.service · modelo nuevo
  • l10n_co.dian.radian.event.wizard · modelo nuevonote (Nota), move_id (Factura), event_type (Tipo de Evento)

Texto generado por IA (DeepSeek) al leer el código de la versión 19.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. El módulo es muy grande y solo se ha leído una parte del código. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 2 confirmadas, 7 sin información de 9 versiones.

Fuentes · Odoo 19.0

Confirmado el 2026-11-03 en la rama 19.0 de OCA/l10n-colombia.

terminal Instalación y uso

Documentación de OCA · Odoo 19.0

Requisitos

  • Módulo l10n_co_electronic_invoice instalado.
  • Módulo certificate nativo de Odoo (habilitación y producción).
  • Python: xmlsig, lxml, cryptography, xmltodict, requests, qrcode.

Configuración del diario

Contabilidad > Configuración > Diarios → pestaña DIAN:

  • Modo de Operación: Demostración, Habilitación o Producción.
  • Software ID y PIN: asignados por la DIAN al registrar el software.
  • TestSetId (solo habilitación): UUID del set de pruebas.

Habilitación/Demostración — configurar manualmente:

  • Tipo de resolución, resolución, prefijo, rango, clave técnica.

Producción — botón "Obtener resolución DIAN":

  • Configurar resolución y prefijo antes de consultar.
  • Llena automáticamente rango, fechas y clave técnica.
  • Si hay múltiples prefijos con la misma resolución, el match usa resolución + prefijo.

Configuración de empresa

  • NIT con dígito de verificación (ej: 000000000-0).
  • Régimen fiscal (IVA / No responsable).
  • Responsabilidades fiscales.
  • Código CIIU.

Configuración de clientes

Nacionales: país Colombia, NIT/CC, tipo de identificación, régimen fiscal, responsabilidades fiscales.

Extranjeros: país, nombre, tipo de identificación (ID Extranjera o NIT otro país), número de identificación.

Consumidor final: se asigna tipo 13 (CC) automáticamente si no tiene tipo configurado.

Configuración de impuestos

Cada impuesto debe tener el campo Tipo de impuesto DIAN (l10n_co_tax_type_id) configurado con el código correcto: 01 (IVA), 03 (ICA), 04 (INC), 05 (ReteIVA), etc.

Configuración de productos

  • Código UNSPSC o referencia interna.
  • Impuesto y unidad de medida con código UNECE.
  • Para exportación (tipo 02): marca y modelo obligatorios.

Certificado digital

Cargar en Ajustes > Certificados (.pem + clave privada). En demostración se usa certificado demo incluido.

Flujo de facturación

  • Crear y confirmar la factura.
  • El CRON EDI genera el XML, firma y envía a DIAN.
  • Resultado en el chatter (aceptado, rechazado, error).
  • Si aceptado: se genera AttachedDocument.

Habilitación (asíncrono)

  • SendTestSetAsync retorna ZipKey → estado "Enviado".
  • Botón Consultar Estado DIAN ejecuta GetStatusZip.
  • Si aceptado: genera AttachedDocument.

Producción (sincrónico)

  • SendBillSync retorna resultado inmediato.
  • Botón Consultar Estado DIAN ejecuta GetStatus por CUFE.

Factura de exportación (tipo 02)

  • Moneda: USD en Odoo, pero el XML va en COP con TRM.
  • Cliente con país distinto de Colombia.
  • Productos con marca y modelo configurados.
  • CustomizationID = "32" automático.
  • PaymentExchangeRate con TRM (COP/USD).

Notas crédito y débito

  • Con referencia: desde botón en la factura. Requiere CUFE y estado aceptado en la factura original.
  • Sin referencia: crear manualmente. Requiere periodo de facturación (fecha inicio y fin).
  • Concepto de corrección obligatorio (tabla DIAN 13.2.4/13.2.5).

Importación de facturas de proveedor

Arrastrar XML o ZIP al card del diario de compras. Detecta automáticamente XMLs DIAN y extrae partner, líneas, CUFE y tipo de documento.

Eventos RADIAN

Desde factura de proveedor confirmada con CUFE:

  • 030 - Acuse de recibo.
  • 032 - Recibo del bien/servicio.
  • 033 - Aceptación expresa, o 031 - Reclamo.

Flujo secuencial validado. Estado RADIAN en "Otra información".

PDF (Representación gráfica)

Incluye: denominación DIAN, info fiscal emisor/receptor, QR DIAN, CUFE/CUDE, mensaje de resolución, referencia NC/ND, forma de pago.

---

Copyright (C) 2025 IKU Solutions - Yan Chirino Licencia AGPL-3.0 o posterior (http://www.gnu.org/licenses/agpl).

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Configuración.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.