ANEXO 20 VERSIÓN 4.0 - Publicado SAT: 13.01.2022

Validaciones adicionales a realizar por el proveedor.


Del Comprobante fiscal digital por Internet:

Elemento: Comprobante

Atributos:

Fecha
Validar Al momento de la recepción del archivo XML por parte del Proveedor de Certificación, éste debe verificar que la fecha y hora no debe ser:
  • Mayor que la fecha y hora aumentada en el plazo que se especifique en la Resolución Miscelánea Fiscal vigente - Obligaciones de los proveedores en el proceso de certificación de CFDI.
  • Menor que la fecha y hora disminuida en el plazo que se especifique en la Resolución Miscelánea Fiscal vigente - Obligaciones de los proveedores en el proceso de certificación de CFDI.
Sello
Validar

Desencriptar el contenido de este atributo usando el certificado incluido en el atributo "Certificado".

Generar la cadena original del comprobante

Aplicar el algoritmo de digestión SHA-256.

El resultado de la digestión debe ser igual al resultado de la desencripción del sello.

FormaPago
Validar

Si el valor registrado en el atributo TipoDeComprobante es “T”, “N” o “P” este atributo no debe existir.

En caso contrario este atributo debe existir y contener una clave vigente del Catálogo c_FormaPago.

El valor de este atributo debe ser “99” cuando el atributo MetodoPago contenga el valor “PPD”.

Certificado
Validar

El atributo debe contener un archivo .cer válido.

El número de certificado registrado en el archivo debe ser igual al registrado en el atributo "NoCertificado".

El certificado debe ser emitido por el Servicio de Administración Tributaria.

El certificado debe estar vigente a la fecha y hora de expedición del comprobante.

El certificado no debe estar revocado a la fecha y hora de expedición del comprobante.

El RFC registrado en el certificado debe ser igual al registrado en el emisor del CFDI. El RFC registrado en el certificado puede ser distinto del registrado en el emisor del CFDI, sólo cuando el RFC del emisor se encuentre en la lista de RFC inscritos no cancelados en el SAT y

  • El Proveedor de Certificación de CFDI es el SAT y cuando el XML del CFDI contenga el complemento de Registro Fiscal Simplificado, entonces el RFC en el certificado debe ser SAT970701NN3.
  • O la entidad que certifica es un Proveedor de Certificación y Generación de CFDI para el sector primario o un Proveedor de Certificación de expedición de CFDI a través del adquirente de bienes o servicios, en cuyo caso el certificado será el CESD del proveedor.

El certificado debe ser del tipo "Certificado de Sello Digital", excepto cuando el Proveedor de Certificación de CFDI es un proveedor de Certificación y Generación de CFDI para el sector primario o proveedor certificación de expedición de CFDI a través del adquirente de bienes o servicios, en cuyo caso el certificado es un CESD.

SubTotal
Validar El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. Cuando el TipoDeComprobante sea “I”, “E” o “N”, el importe registrado en el atributo debe ser igual al redondeo de la suma de los importes de los conceptos registrados. Cuando el TipoDeComprobante sea “T” o “P” el importe registrado en el atributo debe ser igual a cero.
Descuento
Validar

El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

El valor registrado debe ser menor o igual que el atributo Subtotal.

Cuando el TipoDeComprobante sea “I”, “E” o “N” y algún concepto incluya el atributo Descuento, debe existir este atributo y debe ser igual al redondeo de la suma de los atributos Descuento registrados en los conceptos; en otro caso se debe omitir este atributo.

Moneda
Validar

Si es diferente de MXN y XXX, debe existir el tipo de cambio.

Si es XXX no debe existir el tipo de cambio, si es MXN puede omitirse el atributo TipoCambio y si se incluye debe tener el valor "1".

Si el TipoDeComprobante es “N”, este atributo debe tener el valor MXN.

Tomar del Catálogo c_Moneda la cantidad de decimales que acepta la divisa y los atributos con tipo de dato importe deben ser redondeados hasta esa cantidad de decimales (cero y hasta cuatro decimales).

TipoCambio
Validar

El tipo de cambio debe tener un valor que se encuentre entre el límite superior mas el valor que se publica para la fecha de la operación y el valor que se publica para la fecha de la operación menos el límite inferior.

El límite superior se obtiene multiplicando el valor publicado del tipo de cambio por la suma de uno más el porcentaje aplicable a la moneda tomado del Catálogo c_Moneda.

El límite inferior se obtiene multiplicando el valor publicado del tipo de cambio por la suma de uno menos el porcentaje aplicable a la moneda tomado del Catálogo c_Moneda. Si este límite fuera negativo se toma cero.

Cuando el valor de este atributo se encuentre fuera de los límites establecidos, debe existir el atributo Confirmacion.

Total
Validar

El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

Cuando el TipoDeComprobante sea “T” o “P”, el importe registrado en el atributo debe ser igual a cero.

El valor del atributo debe ser igual al subtotal menos descuentos más las contribuciones recibidas (impuestos trasladados - federales y/o locales, derechos, productos, aprovechamientos, aportaciones de seguridad social, contribuciones de mejoras) menos los impuestos retenidos federales y/o locales

El SAT publica el límite para el valor máximo de este atributo en:

El valor máximo aplicable para el comprobante se determina de la siguiente manera:

  1. Si existen límites personalizados en la lista de RFC (l_RFC) se usan esos límites como valor máximo aplicable.
  2. Si no existen, se usan los límites establecidos en el Catálogo c_TipoDeComprobante.
    • Dentro de dicho Catálogo se identifica el tipo de comprobante del CFDI
      • Si el valor es “I” o “E”, se toma el valor máximo aplicable especificado en la columna que corresponde con ese encabezado.
      • Si el valor es “N”, se identifica en el complemento de nómina si existen valores en los siguientes atributos:
        1. Si solo existe TotalSueldos, el valor máximo aplicable, es el especificado en la columna con encabezado NS.
        2. Si solo existe TotalSeparacionIndemnizacion o TotalJubilacionPensionRetiro, el valor máximo aplicable, es el especificado en la columna con encabezado NdS.
        3. Si existe TotalSueldos y TotalSeparacionIndemnizacion o TotalJubilacionPensionRetiro, el valor máximo aplicable para el CFDI es la suma del valor especificado en la columna NS, más el especificado en la columna NdS.
  3. Cuando el valor equivalente en MXN del atributo Total sea mayor que el valor máximo aplicable debe existir el atributo Confirmacion.
TipoDeComprobante
Validar

Se debe omitir el atributo CondicionesDePago cuando el TipoDeComprobante es “T”, “P” o “N”.

Se debe omitir el atributo Descuento de los conceptos cuando el TipoDeComprobante es “T” o “P”.

Se debe omitir el elemento Impuestos cuando el TipoDeComprobante es “T”, “P” o “N”.

Se debe omitir los atributos FormaPago y MetodoPago cuando el TipoDeComprobante es “T”o “P”.

Exportacion
Validar

Este atributo debe contener una clave vigente delz Catálogo c_Exportacion.

Si el atributo contiene el valor “02” debe existir el Complemento para Comercio Exterior

MetodoPago
Validar

Si el valor registrado en el atributo TipoDeComprobante es “T” o “P” este atributo no debe existir.

En caso contrario este atributo debe existir y contener una clave vigente del Catálogo c_MetodoPago.

LugarExpedicion
Validar Debe corresponder con una clave vigente de código postal incluida en el Catálogo c_CodigoPostal publicado en la página del SAT .
Confirmacion
Validar

Si los atributos TipoCambio y Total están dentro del rango válido, no debe existir este atributo.

El Proveedor de Certificación debe verificar que el emisor le haya solicitado esta clave de confirmación y que no se utilice en más de un comprobante.

El Proveedor de Certificación debe enviar una notificación al emisor de que ya se utilizó esta clave de confirmación.

Elemento: Comprobante

Nodo: InformacionGl obal

Periodicidad
validar

Este atributo debe contener una clave vigente del Catálogo c_Periodicidad.

Si el valor de este atributo contiene la clave “05” el atributo RegimenFiscal debe contener el valor “621”.

Meses
Validar

Este atributo debe contener una clave vigente del Catálogo c_Meses.

Si el atributo Periodicidad contiene el valor “05”, este atributo debe contener alguno de los valores “13”, “14”, “15”, “16”, “17” o “18”.

Si el atributo Periodicidad contiene un valor diferente de “05”, este atributo debe contener alguno de los valores “01”, “02”, “03”, “04”, “05”, “06”, “07”, “08”, “09”, “10”, “11” o “12”.

Año
Validar El valor de este atributo debe ser igual al año en curso o al año inmediato anterior. Para validar el año en curso o el año inmediato anterior se debe considerar el registrado en el atributo Fecha.

Elemento: Comprobante

Nodo: Emisor

Atributos:

Rfc
Validar Se deben considerar aplicar las reglas de validación que se indican en el Anexo 29 aplicables para este atributo
Nombre
Validar El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el SAT y debe estar asociado a la clave de RFC registrado en el atributo Rfc del Nodo Emisor.
RegimenFiscal
Validar

Este atributo debe contener una clave vigente del Catálogo c_RegimenFiscal.

El régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona del emisor, es decir, si el RFC tiene longitud de 12 posiciones, debe ser de persona moral y si tiene longitud de 13 posiciones debe ser de persona física.

FacAtrAdqui rente
Validar El valor de este atributo debe existir siempre que la respuesta del servicio del Validador de RFC para emitir facturas a través del adquirente, sea en sentido positivo.

Elemento: Comprobante

Nodo: Receptor

Atributos:

Rfc
Validar Cuando no se utilice un RFC genérico, el RFC debe estar en la lista de RFC inscritos no cancelados en el SAT .
Nombre
Validar

El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el SAT y debe estar asociado a la clave de RFC registrado en el atributo Rfc del Nodo Receptor.

Si el valor registrado en el atributo Rfc del nodo Receptor es “XAXX010101000” o “XEXX010101000”, el valor de este atributo no debe validarse en la la lista de RFC inscritos no cancelados en el SAT

Si el valor registrado en este atributo es “PUBLICO EN GENERAL”, el valor “XAXX010101000” debe existir en el atributo Rfc del nodo Receptor.

DomicilioFiscal Receptor
Validar

El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el SAT y debe estar asociado a la clave de RFC registrado en el atributo Rfc del Nodo Receptor

Si el valor del atributo Rfc del receptor es XAXX010101000 o XEXX010101000, este atributo debe ser igual al valor del atributo LugarExpedicion.

ResidenciaFiscal
Validar

Si el RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional, no se debe registrar este atributo.

Si el RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional, no se debe registrar este atributo.

NumRegIdTrib
Validar

Si el valor del atributo es un RFC inscrito no cancelado en el SAT o un RFC genérico nacional, no se debe registrar este atributo. Si no existe el atributo ResidenciaFiscal, este atributo puede omitirse.

Si el RFC del receptor es un RFC genérico extranjero y el comprobante incluye el complemento de comercio exterior, el atributo debe existir.

Si el atributo ResidenciaFiscal corresponde a una clave de país incluida en el Catálogo c_Pais publicado en la página del SAT , se deben verificar las columnas correspondientes a dicha clave:

  • Si el atributo ResidenciaFiscal corresponde a una clave de país incluida en el Catálogo c_Pais publicado en la página del SAT , se deben verificar las columnas correspondientes a dicha clave:
  • Si no tiene mecanismo de verificación en línea, debe cumplir con el patrón correspondiente incluido en la columna “Formato de Registro de Identidad Tributaria” que se publique en el mismo Catálogo c_Pais.

En otro caso no se aplica esta validación.

RegimenFiscal Receptor
Validar

Este atributo debe contener una clave vigente en el Catálogo c_RegimenFiscal.

El régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona del receptor, es decir, si el RFC tiene longitud de 12 posiciones, debe ser de persona moral y si tiene longitud de 13 posiciones debe ser de persona física.

Si el atributo Rfc del nodo Receptor contiene el valor “XAXX010101000” o el valor “XEXX010101000” en este atributo se debe registrar la clave “616”.

UsoCFDI
Valida

El valor que se registre en este atributo debe aplicar para el tipo de persona del receptor, es decir, si el RFC tiene longitud de 12 posiciones, debe ser de persona moral y si tiene longitud de 13 posiciones debe ser de persona física y el valor registrado en el atributo RegimenFiscalReceptor, debe corresponder a un valor de la columna Régimen Fiscal Receptor del Catálogo c_UsoCFDI.

Elemento: Comprobante

Nodo: Conceptos

Nodo: Concepto

Atributos:

ClaveProdServ
Validar

Deben existir los complementos que señale el Catálogo c_ClaveProdServ aplicables para este atributo.

Deben existir los impuestos trasladados y/o retenidos que señale el Catálogo c_ClaveProdServ aplicables para este atributo.

ClaveUnidad
validar

Este atributo debe contener una clave vigente del Catálogo c_ClaveUnidad

ValorUnitario
Validar

Si el TipoDeComprobante es “I”, “E” o “N”, el valor registrado debe ser mayor que cero.

Importe
Validar

Calcular el límite inferior como: (Cantidad - 10-NumDecimalesCantidad/2)*(ValorUnitario - 10- NumDecimalesValorUnitario/2) y este resultado truncado con la cantidad de decimales que tenga registrado este atributo.

Calcular el límite superior como: (Cantidad + 10 -NumDecimalesCantidad /2 -10-12)*(ValorUnitario + 10 -NumDecimalesValorUnitario /2 -10-12) y este resultado redondearlo hacia arriba con la cantidad de decimales que tenga registrado este atributo.

El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior

Ejemplo:

moneda MXN, decimales 2, importe 924.224956 Truncado del importe a 2 decimales: 924.22 Redondeado del importe hacia arriba: 924.23 moneda OMR, decimales 3, importe 281.594680 Truncado del importe a 3 decimales: 281.594 Redondeado del importe hacia arriba: 281.595

Descuento
Validar

El valor de este atributo debe contener una clave del Catálogo c_ObjetoImp

Si el valor registrado en este atributo es “02” el nodo hijo Impuestos del nodo Concepto debe existir, en caso contrario no debe existir dicho nodo.

Elemento: Comprobante

Nodo: Conceptos

Nodo: Conceptos

Nodo: Impuestos

Validar

Debe existir al menos uno de los dos elementos hijo.

Elementos: Comprobantes

Nodo: Conceptos

Nodo: Concepto

Nodo: Impuestos

Nodo: Traslados

Nodo: Traslado

Atributos:

Base
Validar Debe ser mayor que cero.
Impuestos
Validar

Deben existir los atributos para sumarizar el total de impuestos trasladados y el detalle de impuestos trasladados.

TipoFactura
Validar

Debe ser distinto Exento.

TasaOCuota
Validar

Si el valor registrado es fijo debe corresponder a un valor del Catálogo c_TasaOCuota, coincidir con el tipo de impuesto registrado en el atributo Impuesto y el factor debe corresponder con el atributo TipoFactor.

En caso contrario, si el valor registrado es variable debe corresponder al rango entre el valor mínimo y valor máximo señalado en el Catálogo.

Importe
Validar

Calcular el límite inferior como:

(Base - 10-NumDecimalesBase/2)*(TasaOCuota)

y este resultado truncado con la cantidad de decimales que tenga registrado este atributo.

Calcular el límite superior como:

(Base + 10-NumDecimalesBase/2 - 10-12) *(TasaOCuota)

y este resultado redondearlo hacia arriba con la cantidad de decimales que tenga registrado este atributo.

El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior

Ejemplo:

moneda MXN, decimales 2, importe 924.224956 Truncado del importe a 2 decimales: 924.22 Redondeado del importe hacia arriba: 924.23 moneda OMR, decimales 3, importe 281.594680 Truncado del importe a 3 decimales: 281.594 Redondeado del importe hacia arriba: 281.595

Elementos: Comprobantes

Nodo: Conceptos

Nodo: Concepto

Nodo: ACuentaTerceros

Atruibuto:

RfcACuentaTerceros
Validar

El valor de este atributo debe estar en la l_LCO.

Se deben aplicar las reglas de validación que se indican en el Anexo 29 de la RMF, aplicables al Rfc del nodo Emisor.

El valor registrado en este atributo deber ser diferente al valor registrado en los atributos Rfc de los nodos Emisor y Receptor.

NombreACuentaTerceros
Validar

El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el SAT y debe estar asociado a la clave de RFC registrado en el atributo RfcACuentaTerceros del Nodo ACuentaTerceros.

RegimenFiscalACuentaTerceros
Validar

Este atributo debe contener una clave vigente del Catálogo c_RegimenFiscal.

DomicilioFiscalACuentaTerceros
Validar

Este atributo debe contener una clave vigente del Catálogo c_RegimenFiscal.

RegimenFiscalACuentaTerceros
Validar

El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el SAT y debe estar asociado a la clave de RFC registrado en el atributo RfcACuentaTerceros del Nodo ACuentaTerceros.

Elementos: Comprobante

Nodo: Conceptos

Nodo: Concepto

Nodo: InformacionAduanera

Atributos:

NumeroPedimento
Validar

Se debe registrar cuando el CFDI no contenga el complemento de comercio exterior (es una venta de primera mano nacional).

El valor de las posiciones uno y dos del NumeroPedimento deben ser menor o igual que los últimos dos dígitos del año de la fecha actual.

Las posiciones cinco y seis deben corresponder con una clave vigente del Catálogo de aduanas (catCFDI:c_Aduana).

Las posiciones nueve a la doce deben corresponder con un número de patente del Catálogo de patentes aduanales (catCFDI:c_PatenteAduanal

El valor de los últimos seis dígitos debe estar entre el valor mínimo 1 y el valor máximo de números consecutivos de la columna cantidad del Catálogo catCFDI:c_NumPedimentoAduana que correspondan a los usados por la aduana en ese año.

No se debe registrar cuando el CFDI contenga el complemento de comercio exterior.

Elemento: Comprobante

Nodo: Conceptos

Nodo: Concepto

Nodo: Parte

Nodo: InformacionAduanera

Atributos:

NumeroPedimento
Validar

Se debe registrar cuando el CFDI no contenga el complemento de comercio exterior (es una venta de primera mano nacional).

El valor de las posiciones uno y dos del NumeroPedimento deben ser menor o igual que los últimos dos dígitos del año de la fecha actual.

Las posiciones cinco y seis deben corresponder con una clave vigente del Catálogo de aduanas (catCFDI:c_Aduana).

Las posiciones nueve a la doce deben corresponder con un número de patente del Catálogo de patentes aduanales (catCFDI:c_PatenteAduanal).

El valor de los últimos seis dígitos debe estar entre el valor mínimo 1 y el valor máximo de números consecutivos de la columna cantidad del Catálogo catCFDI:c_NumPedimentoAduana que correspondan a los usados por la aduana en ese año.

No se debe registrar cuando el CFDI contenga el complemento de comercio exterior.

Elemento: Comprobante

Nodo: impuestos

Atributos:

Validar

Cuando el TipoDeComprobante sea “T” o “P”, este elemento no debe existir

TotalImpuestosRetenidos
Validar

El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda

El valor de este atributo debe ser igual a la suma de los importes registrados en el elemento hijo Retenciones.

TotalImpuestosTrasladados
Validar

El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

El valor de este atributo debe ser igual a la suma de los importes registrados en el elemento hijo Traslados.

Elemento: Comprobante

Nodo: impuestos

Nodo: Retenciones

Nodo: Retencion

Atributos:

Impuestos
Validar

El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

El valor de este atributo debe ser igual a la suma de los importes registrados en el elemento hijo Traslados.

Elemento: Comprobante

Nodo: impuestos

Nodo: Traslados

Nodo: Traslado

Validar

En el caso de que sólo existan conceptos con TipoFactor Exento, en este nodo solo deben existir los atributos Base, Impuesto y TipoFactor.

Elemento: Comprobante

Nodo: impuestos

Nodo: Traslados

Nodo: Traslado

Atributos:

Base
Validar

El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

Debe ser igual al redondeo de la suma de los importes de los atributos Base registrados en los conceptos donde el impuesto del concepto sea igual al atributo impuesto de este elemento y la TasaOCuota del concepto sea igual al atributo TasaOCuota de este elemento.

En caso de que solo existan conceptos con TipoFactor Exento, la suma de este atributo debe ser igual al redondeo de la suma de los importes de los atributos Base registrados en los conceptos.

Impuestos
Validar

Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado.

TasaOCuota
Validar

El valor seleccionado debe corresponder a un valor donde la columna impuesto corresponda con el atributo impuesto y la columna factor corresponda con el atributo TipoFactor.

Importe
Validar

Debe existir el atributo TotalImpuestosTrasladados cuando existan conceptos con un TipoFactor distinto a Exento.

El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda

Debe ser igual al redondeo de la suma de los importes de los impuestos trasladados registrados en los conceptos donde el impuesto del concepto sea igual al atributo impuesto de este elemento y la TasaOCuota del concepto sea igual al atributo TasaOCuota de este elemento

Elementos: Comprobantes

Nodo: Complemento

Validar

Permite la inclusión del complemento TimbreFiscalDigital y los complementos para el CFDI general, no permite complementos del comprobante retenciones e información de pagos.

Ver también:


Anexo 20 versión 4.0 Anexo 20 versión 4.0
Conoce el Anexo 20 versión 4.0
Anexo 20 versión 4.0 Estándar
Estándar del Anexo 20 Versión 4.0
Anexo 20 versión 4.0 Catálogos
Catálogos del Anexo 20 Versión 4.0
Anexo 20 versión 4.0 Preguntas
Catálogos del Anexo 20 Versión 4.0
Anexo 20 versión 4.0 Matriz de errores
Catálogos del Anexo 20 Versión 4.0
Anexo 20 versión 4.0 Guia de llenado
Catálogos del Anexo 20 Versión 4.0
Complmento de Pagos 2.0 Complemento de Pagos 2.0
Conoce el Complemento de Pagos 2.0
Complementos Listado de complementos
Conoce los complementos que puedes incorporar a tu factura

Software


GNcys Factura Electrónica GNcys Factura Electrónica
CFDI

Enlaces externos


SAT - Servicio de Administración Tributaria Portal de trámites y servicios (SAT)
Servicio de Administración Tributaria