Ubicar los datos clave de una factura electrónica dentro de su XML y saber qué concluir de ellos.
Qué archivo tienes en la mano
La factura electrónica colombiana usa el estándar UBL 2.1 con extensiones de la DIAN. Al abrir el XML con un editor de texto, la primera etiqueta significativa dice qué es: Invoice es la factura de venta; CreditNote y DebitNote son notas crédito y débito; AttachedDocument es el sobre con el que el emisor entrega al comprador la factura ya validada. Si tu archivo es un AttachedDocument, dentro encontrarás el texto completo de la factura y la respuesta de la DIAN, escapados como texto.
Esa estructura importa porque los datos que buscas pueden estar en dos niveles: el sobre repite el número, el CUFE y los NIT, y la factura embebida los trae originalmente. Cuando ambos coinciden, el archivo es coherente. Cuando no coinciden, algo se manipuló o se mezclaron documentos, y ésa es una señal para detener el pago hasta aclararlo.
Dónde está cada dato
El CUFE va en cbc:UUID, normalmente con schemeName igual a CUFE-SHA384; son 96 caracteres hexadecimales. El número de la factura, con su prefijo, está en cbc:ID. La fecha de emisión está en cbc:IssueDate y la hora en cbc:IssueTime. La moneda aparece en cbc:DocumentCurrencyCode y el total a pagar en cac:LegalMonetaryTotal, dentro de cbc:PayableAmount.
El emisor está en cac:AccountingSupplierParty: su NIT en cac:PartyTaxScheme/cbc:CompanyID (el atributo schemeID suele traer el dígito de verificación por separado) y su razón social en cbc:RegistrationName. El receptor está en cac:AccountingCustomerParty con la misma estructura. Ahí compruebas dos cosas elementales: que el emisor es el proveedor con el que contrataste y que el receptor eres tú, con tu NIT exacto.
La respuesta de la DIAN que viene dentro
En el AttachedDocument viaja un ApplicationResponse: es la respuesta que la DIAN devolvió al emisor cuando validó la factura. Su cbc:ResponseCode y su cbc:Description dicen si el documento fue validado, validado con notificaciones o rechazado, y traen la fecha y hora de esa validación. Que esté presente y diga «validado» es una buena señal; que falte o diga «rechazado» significa que el documento no tiene efectos fiscales tal como te lo entregaron.
Esa respuesta es un dato del pasado, congelado en el archivo. Confirma que en su momento la DIAN aceptó la factura, pero no dice si después se anuló ni si el proveedor sigue activo. Para lo primero está la consulta del catálogo; para lo segundo, la consulta del RUT o del registro mercantil por NIT.
Lo que el XML no te dice
No te dice si la factura sigue vigente hoy, si hubo una nota crédito posterior, si el proveedor está activo, si el bien o servicio se recibió ni si el gasto es procedente. Tampoco permite recalcular el CUFE para «demostrar» que es auténtico: el algoritmo usa una clave técnica del emisor que no está en el archivo. Leer el XML es un control de coherencia y de datos, no un dictamen.
Por eso el orden razonable para cuentas por pagar es: leer el XML y comprobar quién, a quién, cuánto y con qué respuesta de la DIAN; consultar el CUFE en el catálogo público para ver su estado actual; y verificar el NIT del emisor en el RUT o el RUES. Tres controles distintos, cada uno con su fuente.
Hacerlo sin subir el archivo a ningún sitio
El extractor de CUFECheck lee el XML en tu navegador: localiza el CUFE, los NIT, la fecha, el total y la respuesta embebida, compara el sobre con la factura y te muestra las inconsistencias. El archivo no se envía al servidor en ese paso; sólo si decides consultar el catálogo se usa el CUFE para abrir la búsqueda oficial con el código cargado.
Al terminar puedes descargar una constancia local con lo leído y la hora de la lectura. No es un certificado de la DIAN ni una prueba de vigencia: es el registro de qué archivo revisaste, qué decía y cuándo, que es justo lo que un auditor pide cuando pregunta por qué se pagó una factura.
Lista rápida antes de decidir
- Abre el archivo con un editor de texto o con el extractor de CUFECheck; no hace falta un programa contable.
- Si la raíz es AttachedDocument, la factura (Invoice) y la respuesta de la DIAN (ApplicationResponse) van embebidas dentro.
- El CUFE está en cbc:UUID; el número de factura en cbc:ID; la fecha en cbc:IssueDate.
- Los NIT están en cac:AccountingSupplierParty (emisor) y cac:AccountingCustomerParty (receptor), dentro de cbc:CompanyID.
- El total a pagar está en cac:LegalMonetaryTotal/cbc:PayableAmount; el código de la respuesta DIAN en cbc:ResponseCode.
Preguntas frecuentes
¿Por qué recibo un archivo que se llama AttachedDocument y no Invoice?
Porque el emisor te entrega un contenedor: el AttachedDocument lleva dentro la factura firmada (Invoice) y la respuesta de validación de la DIAN (ApplicationResponse). Es el formato habitual de entrega al adquirente.
¿Puedo saber leyendo el XML si la factura sigue vigente hoy?
No. El XML refleja el estado en el momento de su emisión y validación. Si después se anuló con una nota crédito o cambió algo, eso no está en el archivo: hay que consultar el catálogo de la DIAN.
Este sitio reemplaza el catálogo de la DIAN?
No. CUFECheck ayuda a consultar el catálogo público, pero no sustituye el portal de la DIAN ni el criterio de tu contador o revisor fiscal.
El reporte PDF es una certificación DIAN?
No. Es un reporte PDF de verificación no oficial con fecha y hora de consulta. No es una constancia, certificado ni aval emitido por la DIAN.
Que pasa si el CUFE no aparece?
Verifica que pegaste el CUFE completo, sin espacios ni caracteres faltantes. Si el documento sigue sin aparecer, valida directamente en la DIAN y solicita soporte al emisor.
