Cómo leer el XML de una factura electrónica
Abrir el XML en un editor sirve para un documento. Para un cierre, hace falta una tabla. Aun así conviene saber qué estás leyendo.
A veces la factura no es la raíz
Muchos ZIP traen un AttachedDocument. La factura, la nota crédito o la nota débito va en un CDATA, en cac:Attachment/cac:ExternalReference/cbc:Description. Otro bloque puede traer el ApplicationResponse de la DIAN, con el código y la fecha de validación.
Otras veces el archivo ya es un Invoice, CreditNote o DebitNote suelto. Los prefijos de namespace (cbc:, cac:, fe: u otros) cambian según el proveedor. Lo que importa es el nombre local del elemento.
Campos que usa el Excel
cbc:IDes el prefijo más el número. Si el XML trae el prefijo autorizado en las extensiones DIAN, se separa por ahí.- Emisor y receptor:
AccountingSupplierPartyyAccountingCustomerParty. El NIT está enCompanyID; el DV, en@schemeID; el tipo de identificación (31 es NIT), en@schemeName. - IVA, INC e impuesto al consumo:
cac:TaxTotaldel documento, no el de cada línea. Código 01 es IVA, 04 es INC, 02 es IC. - Retenciones:
cac:WithholdingTaxTotal. 06 ReteRenta (retefuente), 05 ReteIVA, 07 ReteICA. - Totales:
cac:LegalMonetaryTotal. El total a pagar esPayableAmount, copiado tal cual. Las retenciones no se restan de ese valor porque en el UBL suelen informarse aparte. - Forma de pago:
PaymentMeans/ID(1 contado, 2 crédito). Medio:PaymentMeansCode.
El PDF es para leerlo una persona. El XML es el que cuadra con la contabilidad. Si el XML está mal formado, Planilla lo deja en la hoja Errores en lugar de inventar una fila.