Saltar al contenido principal

Errores DIAN frecuentes

La DIAN identifica los problemas de validación con códigos (regla schematron). Esta tabla reúne los más frecuentes encontrados durante la integración, con su causa y solución.

CódigoDescripciónCausaSolución
FAK41TaxScheme del adquiriente inválidoEl par cbc:ID / cbc:Name del TaxScheme del adquiriente está cruzado (p. ej. ZZ + "No causa").Usar el par correcto: ZZ"No aplica", ZY"No causa" (Tabla 13.2.2 del Anexo v1.9).
FAD09eIssueDate inconsistentecbc:IssueDate distinto de la fecha de la firma XAdES.Fijar IssueDate/IssueTime en el builder desde la hora del servidor; el cliente no controla estos campos del XML.
ZB01Elemento de documento incorrectoUna nota crédito o débito usa elementos propios de Invoice.Usar los elementos propios: NC → cbc:CreditNoteTypeCode, cac:CreditNoteLine, cbc:CreditedQuantity; ND → cbc:DebitNoteTypeCode, cac:DebitNoteLine, cbc:DebitedQuantity, con su namespace raíz correcto.
FAB27bSoftwareSecurityCode inválidoFórmula incorrecta (p. ej. usar NIT + technicalKey).Calcular SHA384(softwareId + softwarePin + numero).
FAB10aAuthorizationProvider / ProviderID inválidoEl sts:ProviderID del AuthorizationProvider no contiene el NIT de la DIAN ni su esquema correcto.El ProviderID debe ser el NIT de la DIAN (800197268) con sus atributos schemeID/schemeName/schemeAgencyID correctos.
FAK24Inconsistencia en TaxTotalEl cbc:TaxAmount declarado no coincide con el calculado (BaseAmount × Percent), o los subtotales por tasa no cuadran.Calcular el TaxSubtotal por porcentaje de IVA y asegurar que la suma de impuestos coincida con el TaxTotal.

:::tip Referencia autoritativa Para el detalle completo y oficial de cada regla, consulta el Anexo Técnico v1.9 de la DIAN. Las descripciones de FAB10a y FAK24 son guías prácticas basadas en sus reglas; verifica siempre contra el mensaje exacto que devuelva la DIAN. :::

ResponseCode "02" = aceptada (en habilitación)

El ApplicationResponse que devuelve la DIAN tiene un ResponseCode a nivel de documento (cac:DocumentResponse > cac:Response > cbc:ResponseCode):

  • "00"aceptada
  • "02"aceptada (en habilitación la descripción suele ser "Documento validado por la DIAN")
  • cualquier otro valor → rechazada

La regla de parseo del sistema es:

isValid = (ResponseCode === '00' || ResponseCode === '02')

Es decir, "02" no es un error: es una aceptación válida, típica del ambiente de habilitación.

errores[] vs notificaciones[]

La respuesta de emisión distingue dos listas según el ResponseCode a nivel de línea (cac:LineResponse):

ListaCuándo apareceSignificado
errores[]El documento fue rechazadoProblemas que bloquean la emisión. Hay que corregirlos y reintentar.
notificaciones[]El documento fue aceptadoAdvertencias informativas ("Aprobado con notificación"). El documento es válido.

:::info Códigos genéricos inofensivos Un ResponseCode de línea "0000" o "0" es un código genérico inofensivo: no representa un error. :::

Ver también Emitir documentos electrónicos para cómo se mapean estos campos en el response (estado, errores, notificaciones).