Colombia - Factura Electrónica Software Propio
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
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Configure Colombian electronic invoicing with your own software: generate, sign and send DIAN invoices, credit/debit notes and support documents, query their status, and send RADIAN events.
This module connects Odoo to the DIAN (Colombian tax authority) so you can issue electronic invoices using your own software instead of a third-party provider.
- On each sales or purchase journal you choose an operation mode: Demostración (demo, no sending), Habilitación (DIAN test environment) or Producción. You also fill in the software identification, PIN, technical key, resolution type, resolution number and dates, prefix and numbering range (separate values for production and habilitación).
- A button on the journal queries DIAN for the authorized numbering ranges.
- When you post an invoice, credit note, debit note or support document, Odoo builds the UBL XML, signs it, sends it to DIAN and stores the signed XML, the SOAP envelope, the DIAN response and the AttachedDocument in the chatter. In demo mode nothing is sent.
- Before sending, Odoo checks that the journal, company, customer and products have the required fiscal data (UNSPSC code or internal reference, tax, unit of measure), that taxes have a DIAN tax type, that a valid certificate exists, and for export invoices that the customer is foreign, the currency is USD and products have brand and model. Credit and debit notes must have a correction concept and reference an accepted invoice with CUFE/CUDE.
- Numbering follows the authorized range; if the end number is reached, Odoo blocks the creation of a new document.
- On the invoice you can query the DIAN status (by CUFE or ZipKey) and open a wizard to send RADIAN events (030, 031, 032, 033), which updates the RADIAN status and the list of events sent.
- The invoice PDF is adapted to DIAN requirements and includes a QR code linking to the DIAN validation page. When sending by email, a ZIP with the AttachedDocument XML and the PDF is attached.
- Supplier invoices received as DIAN XML or ZIP can be imported into Odoo.
Depends on
Models and fields (10)
- res.company · extends an existing model
- res.partner · extends an existing model
- account.move · extends an existing modell10n_co_radian_status (Estado RADIAN), l10n_co_radian_events_sent (Eventos RADIAN enviados), l10n_co_is_support_document (Es Documento Soporte)
- ir.attachment · extends an existing model
- account.journal · extends an existing modell10n_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 · extends an existing model
- account.move.send · extends an existing model
- account.edi.format · extends an existing model
- l10n_co.dian.self.service · new model
- l10n_co.dian.radian.event.wizard · new modelnote (Nota), move_id (Factura), event_type (Tipo de Evento)
Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 19.0
Confirmed on 2026-11-03 in branch 19.0 of OCA/l10n-colombia.
terminal Installation and usage
OCA documentation · Odoo 19.0Usage
Source · Odoo 19.0Requisitos
- Módulo
l10n_co_electronic_invoiceinstalado. - Módulo
certificatenativo 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)
SendTestSetAsyncretorna ZipKey → estado "Enviado".- Botón Consultar Estado DIAN ejecuta
GetStatusZip. - Si aceptado: genera AttachedDocument.
Producción (sincrónico)
SendBillSyncretorna resultado inmediato.- Botón Consultar Estado DIAN ejecuta
GetStatuspor 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.PaymentExchangeRatecon 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).
No verified information in OCA: Installation, Configuration.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.