Ir al contenido
AbreXMLFacturación electrónica a Excel
Sus archivos no salen de este equipo

Por qué el XML de la DIAN sale vacío en Excel

Abre el XML en Excel y las columnas salen en blanco. El archivo no está dañado y usted no hizo nada mal: lo que descargó no es la factura, es el sobre que la contiene.

Actualizado el 16 de octubre de 2026 · ERP Gorilla

Respuesta corta

El XML que entrega la DIAN casi siempre es un AttachedDocument: un documento envoltorio que lleva la factura real adentro, metida como texto dentro de un bloque CDATA. Los conversores genéricos y el propio Excel leen el sobre, no encuentran los campos donde los esperan y devuelven una tabla con columnas vacías.

La solución es usar una herramienta que abra el sobre y lea lo que hay adentro. AbreXML lo hace automáticamente y sin subir el archivo a ningún lado.

Cómo se reconoce el problema

Los síntomas son siempre los mismos, y es útil saber distinguirlos de un archivo realmente dañado:

Si abre el XML en un editor de texto y lo primero que ve después de la declaración es <AttachedDocument, ya tiene el diagnóstico.

Qué es el AttachedDocument

Es un tipo de documento del estándar UBL pensado para transportar otros documentos. La DIAN lo usa para entregarle, en un solo archivo, la factura electrónica junto con todo lo que la acompaña: la representación gráfica, los datos del proceso de validación, la firma y los eventos asociados.

Tiene sentido desde el punto de vista del proceso. El problema es que quien recibe el archivo espera una factura y recibe un contenedor, y la diferencia solo se nota cuando intenta leerlo.

Cómo se ve por dentro

La factura viaja dentro de cac:Attachment → cac:ExternalReference → cbc:Description, en un bloque CDATA:

<?xml version="1.0" encoding="UTF-8"?>
<AttachedDocument xmlns="urn:oasis:names:specification:ubl:schema:xsd:AttachedDocument-2">
  <cbc:ID>13098</cbc:ID>                     <!-- del sobre, no de la factura -->
  <cbc:IssueDate>2026-10-09</cbc:IssueDate>
  <cac:SenderParty>…</cac:SenderParty>
  <cac:Attachment>
    <cac:ExternalReference>
      <cbc:Description><![CDATA[
        <?xml version="1.0" encoding="UTF-8"?>
        <Invoice>                            <!-- la factura de verdad -->
          <cbc:ID>SETP990000123</cbc:ID>
          <cbc:UUID schemeName="CUFE-SHA384">7d8a1f3c…</cbc:UUID>
          <cac:AccountingSupplierParty>…</cac:AccountingSupplierParty>
          <cac:LegalMonetaryTotal>
            <cbc:PayableAmount>2856000.00</cbc:PayableAmount>
          </cac:LegalMonetaryTotal>
        </Invoice>
      ]]></cbc:Description>
    </cac:ExternalReference>
  </cac:Attachment>
</AttachedDocument>

Un CDATA le dice al lector de XML «lo que viene aquí es texto literal, no lo interpretes». Para el analizador, esa factura entera es una cadena de caracteres, igual que lo sería un comentario o una dirección. Por eso un conversor que busca cbc:PayableAmount no lo encuentra: sí está en el archivo, pero no como elemento.

Y por eso también el cbc:ID que sí se lee es el del sobre —13098 en el ejemplo— y no el consecutivo de la factura. No es un dato equivocado: es el dato correcto del documento equivocado.

Cómo extraer la factura

La forma directa

Suelte los archivos en AbreXML. Detecta la raíz AttachedDocument, busca dentro de los CDATA uno que contenga una Invoice, una CreditNote o una DebitNote, y lo vuelve a leer como si fuera el archivo original. Funciona igual con un archivo o con dos mil, y nada se sube a ningún servidor.

A mano, si solo es uno

Para un archivo suelto sirve cualquier editor de texto:

  1. Abra el XML en un editor de textoBloc de notas, Notepad++, VS Code o el que use. No en Excel ni en el navegador.
  2. Busque <![CDATA[Es donde empieza la factura embebida.
  3. Copie desde ahí hasta ]]>Sin incluir las marcas. Lo que copió es un XML completo y válido.
  4. Péguelo en un archivo nuevoGuárdelo con extensión .xml. Ese archivo sí es la factura, y cualquier lector lo abre bien.

Para más de tres o cuatro archivos esto deja de ser razonable, que es exactamente la razón por la que existe AbreXML.

Cuando el problema es otro

No todo XML vacío es un AttachedDocument. Estos son los otros casos que vemos:

Es un XML de evento, no una factura

Los acuses de recibo, las aceptaciones expresas y los rechazos también se entregan en un AttachedDocument, pero adentro no llevan una factura. AbreXML los marca como «AttachedDocument sin factura embebida». No hay nada que extraer: no es una factura.

Es la representación gráfica, no el XML

Algunos portales entregan un ZIP con el PDF y el XML. Si abre el PDF esperando datos estructurados, no los va a encontrar: el PDF es una imagen del documento. El que sirve es el XML.

El archivo sí está dañado

Si el XML se truncó en la descarga o se editó y quedó mal cerrado, ningún lector lo abre. AbreXML lo reporta como «El archivo no es XML válido». En ese caso toca volverlo a descargar del portal.

El mismo problema en Ecuador

Colombia no es el único caso. En Ecuador, el SRI devuelve los comprobantes autorizados envueltos en un elemento <autorizacion> que lleva el comprobante real dentro de otro CDATA: mismo mecanismo, mismo síntoma, misma solución. Está explicado en la página de Ecuador.

México, Perú, Bolivia y Chile entregan el documento directamente, sin envoltorio.

Preguntas frecuentes

¿Por qué el XML de la DIAN sale vacío cuando lo abro en Excel?

Porque el archivo que entrega la DIAN casi siempre es un AttachedDocument: un sobre que lleva la factura real adentro, dentro de un bloque CDATA. Excel lee el sobre, que no tiene los campos de la factura, y muestra columnas en blanco.

¿Qué es un AttachedDocument?

Es un tipo de documento del estándar UBL pensado para transportar otros documentos. La DIAN lo usa para entregar en un solo archivo la factura electrónica junto con su representación gráfica, los datos del proceso de validación y la firma.

¿Está dañado mi archivo?

No. El archivo está bien; lo que pasa es que quien lo lee espera una factura y encuentra un contenedor. Si al abrirlo en un editor de texto lo primero que ve es <AttachedDocument, ese es el diagnóstico.

¿Cómo extraigo la factura que está adentro?

Para muchos archivos, suéltelos en AbreXML: detecta el sobre, saca la factura y la lee automáticamente. Para uno suelto, puede abrirlo en un editor de texto, copiar todo lo que hay entre <![CDATA[ y ]]> y pegarlo en un archivo nuevo con extensión .xml.

¿Por qué el número que aparece no es el de mi factura?

Porque es el consecutivo del AttachedDocument, no el de la factura. Son dos documentos distintos y cada uno tiene su propio número. El de la factura está adentro del CDATA.

¿Pasa lo mismo con los XML de otros países?

En Ecuador sí: el SRI envuelve el comprobante en un elemento autorizacion con el mismo mecanismo de CDATA. México, Perú, Bolivia y Chile entregan el documento directamente, sin envoltorio.

¿Le falló un archivo? ¿Falta un formato?

Si un XML suyo no se leyó bien, si necesita una columna que no está o si usa un formato que todavía no reconocemos, escríbanos. Un archivo de ejemplo —aunque venga con los datos cambiados— es lo que más ayuda a corregirlo rápido.

hola@abrexml.com