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:
- Excel abre el XML pero pregunta por un esquema y después muestra dos o tres columnas con datos que no tienen nada que ver con la factura.
- Un conversor en línea devuelve una fila por archivo, pero el emisor, los totales y el CUFE salen en blanco.
- El valor que sí aparece es un número que no reconoce: no es el consecutivo de la factura sino el del sobre.
- El archivo pesa bastante —cientos de kilobytes, a veces megabytes— para ser una factura de tres renglones.
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:
- Abra el XML en un editor de textoBloc de notas, Notepad++, VS Code o el que use. No en Excel ni en el navegador.
- Busque
<![CDATA[Es donde empieza la factura embebida. - Copie desde ahí hasta
]]>Sin incluir las marcas. Lo que copió es un XML completo y válido. - 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.
¿Le toca hacer esto todos los meses?
AbreXML salió de ERP Gorilla, el sistema que hacemos para talleres de manufactura. Ahí las facturas de los proveedores entran solas y se concilian contra la contabilidad: nadie descarga, nadie arrastra, nadie revisa si falta alguna.
Si usted maneja un taller de metalmecánica, carpintería, vidriería o publicidad —o le lleva la contabilidad a uno— puede que le sirva.
Ver ERP GorillaPreguntas 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