❗️

Código de error interno 409007

Error de validación XSD


Causa

Este error se debe a que la estructura del CFDI que se pretende timbrar no es válida al momento de ser comparada con la definición del esquema XML (XSD) establecida por la autoridad.


Solución

Al recibir este código de error la API incluirá información relevante a la validación fallida dentro del parámetro Valorespor lo que el primer paso para diagnosticar el problema será revisar dicha información.

Existen diversas causas que podrían invalidar la estructura del XML de un CFDI, a continuación se enlistan los escenarios más comunes de acuerdo al mensaje que pudieramos recibir.

No se ha declarado el atributo '{NombreDelAtributo}'.

Este tipo de mensaje indica que el atributo especificado no se ha declarado debido a que no existe en la definición del esquema, la causa más común es una equivocación en el nombre, por ejemplo:

{
    "Categoria": "Anexo20",
    "Codigo": 409007,
    "CodigoSat": "CFDI40999",
    "Mensaje": "Error de validación XSD",
    "MensajeSat": "Error de validación XSD",
    "Valores": {
        "Mensaje": "No se ha declarado el atributo 'TipoDeFactor'.",
        "ResultadoValidacion": "Pendiente",
        "Ejecutado": "False"
    }
}

En este ejemplo la validación indica que el atributo TipoDeFactor ~~no es válido, si revisamos la documentación técnica del SAT (en este caso la referente al XSD del CFDI) nos podremos dar cuenta que el nombre correcto para este atributo debería ser TipoFactor.

El atributo '{NombreDelAtributo}' no es válido. El valor '{Valor}' no es válido según su tipo de datos '{TipoDeDato}' - Error de restricción de patrón.

Este tipo de mensaje indica que el valor del atributo especificado no cumple con el patrón esperado, las restricciones de patrón comúnmente se utilizan para definir longitudes mínimas y máximas, tipos de datos esperados como números, cadenas de texto o expresiones regulares para datos específicos como la estructura de un RFC o un CURP, por ejemplo:

{
  "Categoria": "Anexo20",
  "Codigo": 409007,
  "CodigoSat": "CFDI40999",
  "Mensaje": "Error de validación XSD",
  "MensajeSat": "Error de validación XSD",
  "Valores": {
    "Mensaje": "El atributo 'Descripcion' no es válido. El valor '' no es válido según su tipo de datos 'String' - Error de restricción de patrón.",
    "ResultadoValidacion": "Pendiente",
    "Ejecutado": "False"
  }
}

En este ejemplo la validación indica que el valor '' (Vacío) del atributo Descripción no es válido de acuerdo a la restricción de patrón, si revisamos la documentación técnica del SAT nos podremos dar cuenta que el tipo de dato esperado es de tipo string con una restricción de longitud mínima de 1 caracter y hasta 1000 caracteres.

El atributo '{NombreDelAtributo}' no es válido. El valor '{Valor}' no es válido según su tipo de datos '{TipoDeDato}' - Error en la restricción de Enumeration.

Este tipo de mensaje indica que el valor del atributo especificado no cumple con alguno de los valores esperados ya que proviene de un catálogo, por ejemplo:

{
  "Categoria": "Anexo20",
  "Codigo": 409007,
  "CodigoSat": "CFDI40999",
  "Mensaje": "Error de validación XSD",
  "MensajeSat": "Error de validación XSD",
  "Valores": {
    "Mensaje": "El atributo 'ObjetoImp' no es válido. El valor '09' no es válido según su tipo de datos 'http://www.sat.gob.mx/sitio_internet/cfd/catalogos:c_ObjetoImp' - Error en la restricción de Enumeration.",
    "ResultadoValidacion": "Pendiente",
    "Ejecutado": "False"
  }
}

En este ejemplo la validación indica que el valor 09 no es válido de acuerdo a la restricción de enumeración, si revisamos la documentación técnica del SAT nos podremos dar cuenta que el valor 09 no forma parte del catálogo c_ObjetoImp.

El elemento '{Elemento}' en espacio de nombres '{EspacioDeNombres}' tiene un elemento secundario '{ElementoSecundario}' en espacio de nombres '{EspacioDeNombres}' no válido. Lista esperada de elementos posibles: '{Elemento(s)Esperados}' en espacio de nombres '{EspacioDeNombres}'.

Este tipo de mensaje indica que el elemento/nodo especificado contiene un elemento secundario/hijo no esperado ya que los elementos/nodos esperan un orden específico, por ejemplo:

{
  "Categoria": "Anexo20",
  "Codigo": 409007,
  "CodigoSat": "CFDI40999",
  "Mensaje": "Error de validación XSD",
  "MensajeSat": "Error de validación XSD",
  "Valores": {
    "Mensaje": "El elemento 'Comprobante' en espacio de nombres 'http://www.sat.gob.mx/cfd/4' tiene un elemento secundario 'Receptor' en espacio de nombres 'http://www.sat.gob.mx/cfd/4' no válido. Lista esperada de elementos posibles: 'InformacionGlobal, CfdiRelacionados, Emisor' en espacio de nombres 'http://www.sat.gob.mx/cfd/4'.",
    "ResultadoValidacion": "Pendiente",
    "Ejecutado": "False"
  }
}

En este ejemplo la validación indica que el nodo Comprobante, contiene el nodo hijo Receptor, sin embargo de acuerdo al órden especificado en la documentación técnica del SAT nos podemos dar cuenta que la lista esperada de nodos de acuerdo al órden especificado debe ser el nodo InformacionGlobal, CfdiRelacionados o Emisor, por lo que para solucionar este error sólo hace falta acmodar los nodos en el orden correcto.