OdooWiki OCA HUB

Colombia - Factura Electrónica Software Propio

l10n_co_electronic_invoice_self folder_open OCA/l10n-colombia open_in_new
Accounting/Localizations License: 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

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Configure 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

account_ediaccount_edi_ubl_ciil10n_co_electronic_invoicecertificate
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-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation 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.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).

No verified information in OCA: Installation, Configuration.

info

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.