Todas las validaciones del validador de CFDI
Esta página lista las 437 validaciones que aplica el motor, generada directamente desde su código fuente: nunca promete una regla que el validador no corre de verdad.
Resumen por familia
Estructura y campos obligatorios
32 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| CFDI40101 | La Fecha no tiene el formato correcto (AAAA-MM-DDThh:mm:ss). | error |
| CFDI40110 | Descuento: debe ser menor o igual que el atributo Subtotal. | error |
| CRP20107 | CondicionesDePago: el atributo CondicionesDePago no debe existir. | error |
| CRP20108 | Descuento: el atributo Descuento no debe existir. | error |
| DEPRECATED_VERSION | La versión 3.3 del CFDI ya no es válida para emisión. Solo se acepta la versión 4.0. | advertencia |
| INVALID_VERSION | La versión del CFDI no está soportada; solo se aceptan 3.3 y 4.0. | error |
| MISSING_ATTR_FECHA | Falta el atributo obligatorio 'Fecha' en el nodo Comprobante. | error |
| MISSING_ATTR_LUGAREXPEDICION | Falta el atributo obligatorio 'LugarExpedicion' en el nodo Comprobante. | error |
| MISSING_ATTR_MONEDA | Falta el atributo obligatorio 'Moneda' en el nodo Comprobante. | error |
| MISSING_ATTR_SUBTOTAL | Falta el atributo obligatorio 'SubTotal' en el nodo Comprobante. | error |
| MISSING_ATTR_TIPODECOMPROBANTE | Falta el atributo obligatorio 'TipoDeComprobante' en el nodo Comprobante. | error |
| MISSING_ATTR_TOTAL | Falta el atributo obligatorio 'Total' en el nodo Comprobante. | error |
| MISSING_CONCEPTO_CANTIDAD | Falta el atributo 'Cantidad' en un Concepto. | error |
| MISSING_CONCEPTO_CLAVEPRODSERV | Falta el atributo 'ClaveProdServ' en un Concepto. | error |
| MISSING_CONCEPTO_CLAVEUNIDAD | Falta el atributo 'ClaveUnidad' en un Concepto. | error |
| MISSING_CONCEPTO_DESCRIPCION | Falta el atributo 'Descripcion' en un Concepto. | error |
| MISSING_CONCEPTO_IMPORTE | Falta el atributo 'Importe' en un Concepto. | error |
| MISSING_CONCEPTO_OBJETOIMP | Falta el atributo 'ObjetoImp' en un Concepto. | error |
| MISSING_CONCEPTO_VALORUNITARIO | Falta el atributo 'ValorUnitario' en un Concepto. | error |
| MISSING_EMISOR_NOMBRE | Falta el Nombre del Emisor. | error |
| MISSING_EMISOR_REGIMEN | Falta el Régimen Fiscal del Emisor. | error |
| MISSING_EMISOR_RFC | Falta el RFC del Emisor. | error |
| MISSING_EXPORTACION | Falta el atributo obligatorio 'Exportacion' (requerido en CFDI 4.0). | error |
| MISSING_RECEPTOR_DOMICILIO | Falta el Domicilio Fiscal del Receptor (obligatorio en CFDI 4.0). | error |
| MISSING_RECEPTOR_NOMBRE | Falta el Nombre del Receptor. | error |
| MISSING_RECEPTOR_REGIMEN | Falta el Régimen Fiscal del Receptor (obligatorio en CFDI 4.0). | error |
| MISSING_RECEPTOR_RFC | Falta el RFC del Receptor. | error |
| MISSING_RECEPTOR_USOCFDI | Falta el Uso del CFDI del Receptor. | error |
| MISSING_VERSION | Falta el atributo 'Version' en el nodo Comprobante. | error |
| NO_COMPROBANTE | No se encontró el nodo raíz 'Comprobante' en el XML. | error |
| NO_CONCEPTOS | No se encontraron conceptos en el CFDI. | error |
| XML_PARSE_ERROR | El archivo no es un XML válido. | error |
Catálogos del SAT
32 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| CFDI40103 | FormaPago: Atributo condicional para expresar la clave de la forma de pago de los bienes o servicios amparados por el comprobante. | error |
| CFDI40104 | FormaPago: debe contener un valor del catálogo c_FormaPago. | error |
| CFDI40105 | FormaPago: debe contener el valor “99” cuando el atributo MetodoPago contenga el valor “PPD”. | error |
| CFDI40105_PUE99 | FormaPago '99' (Por definir) no es apropiada para MetodoPago PUE. Debería indicar la forma de pago real. | advertencia |
| CFDI40113 | Moneda: debe contener un valor del catálogo c_Moneda. | error |
| CFDI40114 | TipoCambio: si este atributo es MXN, puede omitirse el atributo TipoCambio, pero si se incluye, debe tener el valor "1". | error |
| CFDI40115 | TipoCambio: es requerido cuando el atributo Moneda tenga un valor distinto de MXN y XXX. | error |
| CFDI40116 | TipoCambio: no se debe registrar cuando el atributo Moneda tenga el valor XXX. | error |
| CFDI40121 | TipoDeComprobante: debe contener un valor del catálogo c_TipoDeComprobante. | error |
| CFDI40123 | Exportacion: debe contener un valor del catálogo c_Exportacion. | error |
| CFDI40124 | MetodoPago: debe contener un valor del catálogo c_MetodoPago. | error |
| CFDI40125 | MetodoPago: se debe omitir el atributo MetodoPago cuando el TipoDeComprobante es T o P. | error |
| CFDI40126 | LugarExpedicion: debe contener un valor del catálogo c_CodigoPostal. | error |
| CFDI40140 | Emisor@RegimenFiscal: debe contener un valor del catálogo c_RegimenFiscal. | error |
| CFDI40141 | Emisor@RegimenFiscal: el régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona del emisor. | error |
| CFDI40147 | Receptor@DomicilioFiscalReceptor: debe encontrarse en la lista de RFC inscritos no cancelados en el SAT. | error |
| CFDI40147_HINT | El código postal del receptor es válido, pero debe coincidir exactamente con su Constancia de Situación Fiscal. | información |
| CFDI40148 | Receptor@DomicilioFiscalReceptor: debe pertenecer al nombre asociado al RFC registrado en el atributo Rfc del Nodo Receptor. | error |
| CFDI40149 | Receptor@DomicilioFiscalReceptor: si el valor del atributo Rfc del receptor es "XAXX010101000" o "XEXX010101000", este atributo debe ser igual al valor del atributo LugarExpedicion. | error |
| CFDI40157 | Receptor@RegimenFiscalReceptor: debe contener un valor del catálogo c_RegimenFiscal. | error |
| CFDI40158 | Receptor@RegimenFiscalReceptor: el régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona del receptor. | error |
| CFDI40159 | Receptor@RegimenFiscalReceptor: si el atributo Rfc del Receptor contiene el valor “XAXX010101000” o el valor “XEXX010101000” en este atributo se debe registrar la clave “616”. | error |
| CFDI40160 | Receptor@UsoCFDI: debe contener un valor del catálogo c_UsoCFDI. | error |
| CFDI40161 | Receptor@UsoCFDI: el valor que se registre en este atributo debe aplicar para el tipo de persona del receptor y el régimen correspondiente conforme al catálogo c_UsoCFDI. | error |
| CFDI40162 | Concepto@ClaveProdServ: debe contener un valor del catálogo c_ClaveProdServ. | error |
| CFDI40165 | Concepto@ClaveUnidad: debe contener un valor del catálogo c_ClaveUnidad. | error |
| CFDI40170 | Concepto@ObjetoImp: debe contener un valor del catálogo c_ObjetoImp. | error |
| CFDI40171 | Concepto@ObjetoImp: si este atributo contiene el valor "02" el nodo hijo Impuestos del nodo concepto debe existir. | error |
| CFDI40172 | Concepto@ObjetoImp: si este atributo contiene el valor "01", "03", "04" o "05", el nodo hijo Impuestos del nodo Concepto no debe existir. | error |
| CFDI40201 | Impuestos: cuando el TipoDeComprobante sea T o P, este elemento no debe existir. | error |
| CRP20_USOCFDI_NOMINA | Para comprobantes tipo Nómina (N), el UsoCFDI debe ser CN01. | error |
| CRP20_USOCFDI_PAGO | Para comprobantes tipo Pago (P), el UsoCFDI debe ser CP01. | error |
Importes y totales
13 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| CFDI40197 | Parte@ValorUnitario: debe ser mayor que cero (0). | error |
| CFDI40198 | Parte@Importe: debe ser mayor o igual que el límite inferior y menor o igual que el límite superior. | error |
| CONCEPTO_DESCUENTO_EXCEEDS | El Descuento de un concepto es mayor que su Importe. | error |
| CONCEPTO_IMPORTE_MISMATCH | El Importe de un concepto no coincide con Cantidad × ValorUnitario. | error |
| DESCUENTO_MISMATCH | El Descuento global no coincide con la suma de los Descuentos de los conceptos. | advertencia |
| NEGATIVE_TOTAL | El Total del comprobante no puede ser negativo. | error |
| PAGO_SUBTOTAL_NOT_ZERO | En comprobantes de Pago, el SubTotal debe ser 0. | error |
| PAGO_TOTAL_NOT_ZERO | En comprobantes de Pago, el Total debe ser 0. | error |
| PARTE_IMPORTE_NO_EXACTO | El Importe de una Parte está en el rango del SAT pero no es exactamente Cantidad × ValorUnitario; hay PAC que exigen igualdad exacta. | advertencia |
| PARTE_INCOMPLETA | Una Parte del concepto no trae ValorUnitario o Importe; el esquema lo permite, pero hay PAC que la rechazan. | advertencia |
| SUBTOTAL_MISMATCH | El SubTotal no coincide con la suma de los Importes de los conceptos. | error |
| TOTAL_MISMATCH | El Total no coincide con SubTotal − Descuento + Traslados − Retenciones. | error |
| TOTAL_NO_TAXES | Sin nodo de Impuestos, el Total no coincide con SubTotal − Descuento. | advertencia |
Montos y tasas de impuestos
36 validaciones
| Código | Qué revisa | Severidad | Fundamento |
|---|---|---|---|
| CFDI40164 | Concepto@ClaveProdServ: deben existir los impuestos trasladados y/o retenidos que señale el catálogo c_ClaveProdServ aplicables para este atributo. | error | — |
| CFDI40173 | Impuestos: en caso de utilizar el nodo Impuestos en un concepto, se deben incluir impuestos de traslado y/o retenciones. | error | — |
| CFDI40174 | Traslado@Base: debe ser mayor que cero. | error | — |
| CFDI40175 | Traslado@Impuesto: debe contener un valor del catálogo c_Impuesto. | error | — |
| CFDI40176 | Traslado@TipoFactor: debe contener un valor del catálogo c_TipoFactor. | error | — |
| CFDI40177 | Traslado@TipoFactor: si el valor registrado es Exento no se deben registrar los atributos TasaOCuota ni Importe. | error | — |
| CFDI40178 | Traslado@TipoFactor: si el valor registrado es Tasa o Cuota, se deben registrar los atributos TasaOCuota e Importe. | error | — |
| CFDI40179 | Traslado@TasaOCuota: 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. | error | — |
| CFDI40180 | El Importe de un traslado de impuesto no está entre los límites permitidos de Base × TasaOCuota. | error | — |
| CFDI40181 | Retencion@Base: debe ser mayor que cero. | error | — |
| CFDI40182 | Retencion@Impuesto: debe contener un valor del catálogo c_Impuesto. | error | — |
| CFDI40183 | Retencion@TipoFactor: debe contener un valor del catálogo c_TipoFactor. | error | — |
| CFDI40184 | Retencion@TipoFactor: debe ser distinto de Exento. | error | — |
| CFDI40185 | Retencion@TasaOCuota: 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. | error | — |
| CFDI40186 | Retencion@Importe: debe ser mayor o igual que el límite inferior y menor o igual que el límite superior. | error | — |
| CFDI40202 | Impuestos@TotalImpuestosRetenidos: debe tener hasta la cantidad de decimales que soporte la moneda. | error | — |
| CFDI40203 | Impuestos@TotalImpuestosRetenidos: debe ser igual a la suma de los importes registrados en el elemento hijo Retencion. | error | — |
| CFDI40204 | Impuestos@TotalImpuestosTrasladados: debe tener hasta la cantidad de decimales que soporte la moneda. | error | — |
| CFDI40205 | Impuestos@TotalImpuestosTrasladados: debe ser igual a la suma de los importes registrados en el elemento hijo Traslado. | error | — |
| CFDI40206 | Impuestos:Retenciones@Retenciones: debe existir el atributo TotalImpuestosRetenidos. | error | — |
| CFDI40207 | Retencion@Impuesto: debe contener un valor del catálogo c_Impuesto. | error | — |
| CFDI40208 | Retencion@Impuesto: debe haber sólo un registro por cada tipo de impuesto retenido. | error | — |
| CFDI40209 | Retencion@Importe: debe existir el atributo TotalImpuestosRetenidos. | error | — |
| CFDI40210 | Retencion@Importe: debe tener hasta la cantidad de decimales que soporte la moneda. | error | — |
| CFDI40211 | Retencion@Importe: debe ser igual al redondeo de la suma de los importes de los impuestos retenidos registrados en los conceptos donde el impuesto sea igual al atributo impuesto de este elemento. | error | — |
| CFDI40212 | Impuestos:Traslados@Traslados: debe existir el atributo TotalImpuestosTrasladados, cuando existan conceptos con un TipoFactor distinto a Exento. | error | — |
| CFDI40213 | Traslado: en el caso de que sólo existan conceptos con TipoFactor Exento, en este nodo solo deben existir los atributos Base, Impuesto y TipoFactor. | error | — |
| CFDI40214 | Traslado@Base: debe tener hasta la cantidad de decimales que soporte la moneda. | error | — |
| CFDI40215 | Traslado@Base: debe ser igual al redondeo de la suma de los importes de los atributos Base 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. | error | — |
| CFDI40216 | Traslado@Base: 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. | error | — |
| CFDI40217 | Traslado@Impuesto: debe contener un valor del catálogo c_Impuesto. | error | — |
| CFDI40218 | Traslado@Impuesto: debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado. | error | — |
| CFDI40219 | Traslado@TasaOCuota: debe corresponder a un valor del catalogo donde la columna impuesto corresponda con el atributo impuesto y la columna factor corresponda con el atributo TipoFactor. | error | — |
| CFDI40220 | Traslado@Importe: debe tener hasta la cantidad de decimales que soporte la moneda. | error | — |
| CFDI40221 | Traslado@Importe: 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. | error | — |
| LIVA12_BASE_IVA | La Base del IVA de un concepto no cuadra con Importe − Descuento + IEPS trasladado de ese mismo concepto. | advertencia | LIVA Art. 12 |
Sello digital, certificado y timbre
24 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| CSD_EXPIRED | El Certificado de Sello Digital (CSD) ya expiró. | error |
| CSD_NOT_YET_VALID | El CSD todavía no entra en vigencia. | error |
| CSD_PARSE_ERROR | No se pudo analizar el certificado X.509 embebido. Puede estar dañado o tener formato incorrecto. | advertencia |
| CSD_RFC_MISMATCH | El RFC del certificado (CSD) no coincide con el RFC del emisor. | error |
| CSD_RFC_OK | El RFC del certificado coincide con el del emisor. | información |
| CSD_VALID | CSD vigente (válido hasta). | información |
| INVALID_CERTIFICADO_FORMAT | El Certificado no tiene un formato Base64 válido. | error |
| INVALID_NO_CERTIFICADO_FORMAT | El Número de Certificado no tiene el formato correcto (debe ser 20 dígitos). | error |
| INVALID_SELLO_FORMAT | El Sello no tiene un formato Base64 válido. | error |
| INVALID_UUID_FORMAT | El UUID no tiene un formato válido. | error |
| MISSING_CERTIFICADO | Falta el Certificado del CFDI. | error |
| MISSING_FECHA_TIMBRADO | Falta la fecha de timbrado. | advertencia |
| MISSING_NO_CERTIFICADO | Falta el Número de Certificado del CFDI. | error |
| MISSING_NO_CERTIFICADO_SAT | Falta el Número de Certificado del SAT. | advertencia |
| MISSING_SELLO | Falta el Sello digital del CFDI. | error |
| MISSING_SELLO_SAT | Falta el Sello del SAT en el Timbre Fiscal Digital. | advertencia |
| MISSING_UUID | Falta el UUID (Folio Fiscal) en el Timbre Fiscal Digital. | error |
| NO_CERTIFICADO_MISMATCH | El NoCertificado no corresponde al número de serie del certificado embebido. | error |
| NO_TIMBRE | No se encontró el Timbre Fiscal Digital. El CFDI no ha sido timbrado por un PAC. | advertencia |
| SELLO_INVALID | El sello digital del CFDI NO es válido. La firma criptográfica no coincide con el contenido. | error |
| SELLO_MISMATCH | El SelloCFD en el Timbre Fiscal Digital no coincide con el Sello del Comprobante. | error |
| SELLO_NO_VERIFICABLE | El sello no se pudo comprobar porque el CFDI trae un complemento que el validador aún no reconstruye; no indica alteración. | advertencia |
| SELLO_VALID | El sello digital del CFDI es válido. La firma criptográfica coincide con el contenido. | información |
| SELLO_VERIFY_ERROR | No se pudo verificar el sello criptográficamente. El certificado o sello podrían estar dañados. | advertencia |
RFC
9 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| RFC_EMISOR_GENERICO | El RFC del Emisor no puede ser un RFC genérico. | error |
| RFC_INVALID_FORMAT_EMISOR | El RFC del emisor no tiene un formato válido. | error |
| RFC_INVALID_FORMAT_RECEPTOR | El RFC del receptor no tiene un formato válido. | error |
| RFC_INVALID_LENGTH_EMISOR | El RFC del emisor tiene una longitud inválida (12 para persona moral, 13 para persona física). | error |
| RFC_INVALID_LENGTH_RECEPTOR | El RFC del receptor tiene una longitud inválida (12 para persona moral, 13 para persona física). | error |
| RFC_LOWERCASE_EMISOR | El RFC del emisor debe estar en mayúsculas. | error |
| RFC_LOWERCASE_RECEPTOR | El RFC del receptor debe estar en mayúsculas. | error |
| RFC_SUSPICIOUS_DATE_EMISOR | La porción de fecha del RFC del emisor parece inválida. | advertencia |
| RFC_SUSPICIOUS_DATE_RECEPTOR | La porción de fecha del RFC del receptor parece inválida. | advertencia |
Listas negras del SAT (69-B y 69)
7 validaciones
| Código | Qué revisa | Severidad | Fundamento |
|---|---|---|---|
| ART69_NO_VERIFICADO | No se pudo revisar al emisor contra alguna de las listas del Artículo 69 del CFF: el listado del SAT no está disponible o falta una lista. | información | CFF Art. 69 |
| EFOS_DEFINITIVO | El emisor está en la lista negra del SAT (69-B) como definitivo: la factura probablemente no es deducible. | error | — |
| EFOS_DESVIRTUADO | El emisor estuvo en la lista negra del SAT pero ya desvirtuó los hechos: no requiere acción. | información | — |
| EFOS_NO_VERIFICADO | No se pudo revisar al emisor contra la lista EFOS: el listado del SAT no está disponible. | información | — |
| EFOS_PRESUNTO | El emisor está en la lista negra del SAT (69-B) como presunto: verifica antes de deducir. | advertencia | — |
| EFOS_SENTENCIA_FAVORABLE | El emisor () estuvo en la lista 69-B pero obtuvo sentencia favorable: el acto del SAT quedó sin efectos. | información | — |
| EMISOR_EN_LISTAS_ART69 | El emisor aparece en el padrón de incumplidos del Artículo 69 del CFF (créditos firmes, no localizado, etc.). | advertencia | CFF Art. 69 |
Coherencia de clave de producto y unidad
11 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| PRODSERV_UNIT_LOW_CONFIDENCE_REVIEW | No se pudo determinar con certeza si la clave de producto/servicio y la unidad son coherentes; se recomienda revisión manual. | información |
| PRODSERV_UNIT_SEMANTIC_INCOMPATIBLE | La clave de producto/servicio y la unidad de medida usadas no son compatibles semánticamente. | advertencia |
| PRODSERV_UNIT_SEMANTIC_MISMATCH | La unidad de medida usada es atípica para el tipo de clave de producto/servicio. | advertencia |
| SAT_PYS_CLASSIFICATION_FOUND | No hay una sugerencia específica de unidad, pero la clasificación PyS del SAT ayuda a verificar si la unidad usada es coherente. | información |
| SAT_PYS_CLASSIFICATION_MISSING | No se encontró clasificación PyS para esta clave de producto/servicio; se usaron reglas semánticas de baja confianza. | información |
| SAT_UNIT_NOT_SUGGESTED_FOR_PRODSERV | La unidad de medida usada no coincide con la sugerencia base del SAT para esa clave de producto/servicio. | advertencia |
| SAT_UNIT_RANGE_SUGGESTION_MATCH | La unidad de medida usada coincide con la sugerencia base del SAT para ese rango de claves. | información |
| SAT_UNIT_RANGE_SUGGESTION_MISMATCH | La unidad de medida usada no coincide con la sugerencia base del SAT para ese rango de claves. | advertencia |
| SAT_UNIT_SUGGESTION_MATCH | La unidad de medida usada coincide con la sugerencia base del SAT para esa clave de producto/servicio. | información |
| TENANT_UNIT_PREFERENCE_MATCH | La unidad de medida coincide con la configuración personalizada de esta cuenta. | información |
| TENANT_UNIT_PREFERENCE_MISMATCH | La unidad de medida no coincide con la configuración personalizada de esta cuenta. | advertencia |
Ingreso, egreso y traslado
13 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| EGRESO_MISSING_FORMA_PAGO | Los comprobantes de tipo Egreso (nota de crédito) deben incluir la Forma de Pago. | error |
| EGRESO_MISSING_METODO_PAGO | Los comprobantes de tipo Egreso deben incluir el Método de Pago. | error |
| EGRESO_NO_RELACIONADOS | Se recomienda que los comprobantes de tipo Egreso incluyan CfdiRelacionados con referencia al CFDI de Ingreso original. | advertencia |
| EGRESO_TIPO_RELACION_INVALID | El TipoRelacion de un CfdiRelacionado no es válido. | error |
| EGRESO_UUID_RELACIONADO_INVALID | El UUID relacionado no tiene formato válido. | error |
| INGRESO_GENERIC_CLAVEPRODSERV | El Concepto usa la ClaveProdServ genérica 84111506 (Servicios de facturación). Considere usar una clave más específica. | advertencia |
| INGRESO_MISSING_FORMA_PAGO | Los comprobantes de tipo Ingreso deben incluir la Forma de Pago. | error |
| INGRESO_MISSING_METODO_PAGO | Los comprobantes de tipo Ingreso deben incluir el Método de Pago. | error |
| INGRESO_PPD_FORMA_PAGO | Cuando el Método de Pago es PPD, la Forma de Pago debe ser 99 (Por definir). | error |
| TRASLADO_DESCUENTO | Los comprobantes de tipo Traslado no deben incluir Descuento. | error |
| TRASLADO_FORMA_PAGO | Los comprobantes de tipo Traslado no deben incluir FormaPago. | error |
| TRASLADO_METODO_PAGO | Los comprobantes de tipo Traslado no deben incluir MetodoPago. | error |
| TRASLADO_VU_NEGATIVE | ValorUnitario del Concepto no puede ser negativo. | error |
Complemento de pagos 2.0
52 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| CRP20114 | Concepto@NoIdentificacion: el atributo NoIdentificacion no debe existir. | error |
| CRP20115 | Concepto@Cantidad: el atributo Cantidad debe tener el valor "1". | error |
| CRP20116 | Concepto@ClaveUnidad: el atributo ClaveUnidad debe tener el valor "ACT". | error |
| CRP20117 | Concepto@Unidad: el atributo Unidad no debe existir. | error |
| CRP20118 | Concepto@Descripcion: el atributo Descripcion debe tener el valor "Pago". | error |
| CRP20119 | Concepto@ValorUnitario: el atributo ValorUnitario debe tener el valor "0". | error |
| CRP20120 | Concepto@Importe: el atributo Importe debe tener el valor "0". | error |
| CRP20121 | Concepto@Descuento: el atributo Unidad no debe existir. | error |
| CRP20122 | Concepto@ObjetoImp: el atributo ObjetoImp debe tener el valor "01". | error |
| CRP20205 | Pagos@TotalTrasladosImpuestoIVA16: debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.160000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago. | error |
| CRP20212 | Pago@FormaDePagoP: debe ser diferente de 99. | error |
| CRP20213 | Pago@MonedaP: el atributo MonedaP debe ser diferente de "XXX". | error |
| CRP20214 | Pago@MonedaP: si el atributo MonedaP es diferente de MXN, debe existir información en el atributo TipoCambioP. | error |
| CRP20215 | Pago@MonedaP: si el atributo MonedaP es MXN, se debe registrar el valor "1" en el atributo TipoCambioP. | error |
| CRP20217 | Pago@Monto: que la suma de los valores registrados en el nodo DoctoRelacionado, atributo ImpPagado, sea menor o igual que el valor de este atributo. | error |
| CRP20218 | Pago@Monto: debe ser mayor a 0. | error |
| CRP20236 | DoctoRelacionado@MonedaDR: el atributo MonedaP debe ser diferente de "XXX". | error |
| CRP20237 | DoctoRelacionado@EquivalenciaDR: si el valor del atributo MonedaDR es diferente al valor registrado en el atributo MonedaP, se debe registrar información en el atributo EquivalenciaDR. | error |
| CRP20238 | DoctoRelacionado@EquivalenciaDR: si el valor del atributo MonedaDR es igual al valor registrado en el atributo MonedaP, se debe registrar el valor "1" en el atributo EquivalenciaDR. | error |
| CRP20239 | DoctoRelacionado@ImpSaldoAnt: debe ser mayor a cero. | error |
| CRP20241 | DoctoRelacionado@ImpPagado: debe ser mayor a cero. | error |
| CRP20244 | ImpSaldoInsoluto debe calcularse como ImpSaldoAnt menos ImpPagado, y no puede ser negativo. | error |
| CRP20244_NEG | ImpSaldoInsoluto no puede ser negativo. | error |
| CRP20246 | DoctoRelacionado@ObjetoImpDR: si el valor del atributo ObjetoImpDR es “02” el nodo hijo ImpuestosDR del nodo DoctoRelacionado debe existir. | error |
| CRP20247 | DoctoRelacionado@ObjetoImpDR: si este atributo contiene el valor "01" o "03" el nodo hijo Impuestos del nodo concepto no debe existir. | error |
| CRP20254 | RetencionDR@ImporteDR: debe ser mayor o igual que el límite inferior y menor o igual que el límite superior. | error |
| CRP20261 | TrasladoDR@ImporteDR: debe ser mayor o igual que el límite inferior y menor o igual que el límite superior. | error |
| CRP20265 | RetencionP@ImporteP: debe ser igual a la suma de los importes de los impuestos retenidos registrados en los documentos relacionados donde el impuesto sea igual al atributo ImpuestoP de este elemento. | error |
| CRP20268 | La BaseP de un traslado del complemento de pagos no es igual a la suma de las bases de los documentos relacionados. | error |
| CRP20274 | TrasladoP@ImporteP: debe ser igual a la suma de los importes de los atributos ImporteDR registrados en el documento relacionado donde el impuesto del documento relacionado sea igual al atributo ImpuestoP de este elemento y la TasaOCuotaDR del documento relacionado sea igual al atributo TasaOCuotaP de este elemento. | error |
| CRP20275 | El ImpPagado de un documento relacionado está fuera del rango que calcula el SAT para pagos multi-moneda. | error |
| CRP20275-PRECISION | La EquivalenciaDR tiene menos de 6 decimales, lo que puede causar que el SAT rechace el CFDI. | advertencia |
| CRP20276 | El Monto del Pago está fuera de los límites permitidos para operaciones multi-moneda. | error |
| EQUIV_DR_INCORRECT | La EquivalenciaDR declarada parece incorrecta según los impuestos que reporta el pago. | error |
| PAGO_CLAVEPRODSERV | En comprobantes de Pago, la ClaveProdServ debe ser '84111506'. | error |
| PAGO_CONCEPTOS_COUNT | Los comprobantes de Pago deben tener exactamente un Concepto. | error |
| PAGO_INVALID_VERSION | La versión del complemento de Pagos no es 2.0. | error |
| PAGO_MISSING_COMPLEMENT | Los comprobantes de tipo Pago deben incluir el complemento de Pagos. | error |
| PAGO_MONEDA | En comprobantes de Pago, la Moneda del Comprobante debe ser 'XXX'. | error |
| PAGO_NO_DOCTOS | El Pago no tiene documentos relacionados. | error |
| PAGO_NO_PAGO_NODES | El complemento de Pagos no contiene nodos Pago. | error |
| PAGO_TOTALES_MONTOTOTALPAGOS | MontoTotalPagos no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALRETENCIONESIEPS | TotalRetencionesIEPS no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALRETENCIONESISR | TotalRetencionesISR no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALRETENCIONESIVA | TotalRetencionesIVA no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALTRASLADOSBASEIVA0 | TotalTrasladosBaseIVA0 no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALTRASLADOSBASEIVA16 | TotalTrasladosBaseIVA16 no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALTRASLADOSBASEIVA8 | TotalTrasladosBaseIVA8 no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALTRASLADOSBASEIVAEXENTO | TotalTrasladosBaseIVAExento no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALTRASLADOSIMPUESTOIVA0 | TotalTrasladosImpuestoIVA0 no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALTRASLADOSIMPUESTOIVA16 | TotalTrasladosImpuestoIVA16 no coincide con la suma calculada de los pagos. | error |
| PAGO_TOTALES_TOTALTRASLADOSIMPUESTOIVA8 | TotalTrasladosImpuestoIVA8 no coincide con la suma calculada de los pagos. | error |
Nómina 1.2
115 validaciones
| Código | Qué revisa | Severidad | Fundamento |
|---|---|---|---|
| NOM105 | El Comprobante de Nómina trae TipoCambio; la guía 4.0 pide que no exista. Con valor 1 solo se advierte. | erroradvertencia | Guía de llenado de nómina p. 9 (TipoCambio no debe existir); Matriz de errores Nómina 1.2 (NOM105, admite 1) |
| NOM106 | SubTotal del Comprobante no es igual a TotalPercepciones más TotalOtrosPagos del complemento. | error | Matriz de errores Nómina 1.2 (NOM106); Guía de llenado de nómina pp. 8 y 19 |
| NOM107 | Descuento del Comprobante no coincide con TotalDeducciones, o existe aunque la Nómina no traiga TotalDeducciones. | error | Matriz de errores Nómina 1.2 (NOM107); Guía de llenado de nómina p. 8 |
| NOM108 | Total del Comprobante no cumple el formato de importe del XSD (hasta 18 enteros y 6 decimales, sin signo). Más de 2 decimales solo se advierte. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM108); XSD nomina12 (t_Importe) |
| NOM109 | Total del Comprobante no es igual a TotalPercepciones más TotalOtrosPagos menos TotalDeducciones. | error | Matriz de errores Nómina 1.2 (NOM109); Guía de llenado de nómina p. 10 |
| NOM112 | El Comprobante de Nómina trae CondicionesDePago, atributo que la guía 4.0 no admite en nómina. | error | Matriz de errores Nómina 1.2 (NOM112); Guía de llenado de nómina p. 8 (CondicionesDePago no debe existir) |
| NOM132 | Moneda del Comprobante de Nómina es distinta de MXN. | error | Matriz de errores Nómina 1.2 (NOM132); Guía de llenado de nómina p. 8 |
| NOM134 | El CFDI trae complemento de Nómina pero su TipoDeComprobante no es N. | error | Matriz de errores Nómina 1.2 (NOM134); Guía de llenado de nómina p. 10 |
| NOM135 | El emisor es persona moral (RFC de 12 posiciones) y el complemento trae Curp del Emisor, que no debe existir. | error | Matriz de errores Nómina 1.2 (NOM135); Guía de llenado de nómina pp. 13 y 28 |
| NOM136 | El emisor es persona física (RFC de 13 posiciones) y el complemento no trae la Curp del Emisor, que debe existir. | error | Matriz de errores Nómina 1.2 (NOM136); Guía de llenado de nómina p. 28 |
| NOM137 | El RFC del Receptor del CFDI de nómina no tiene 13 posiciones, así que no es de persona física. | error | Matriz de errores Nómina 1.2 (NOM137, equivalente a NOM121); Guía de llenado de nómina p. 15 |
| NOM139 | El Comprobante de Nómina no tiene exactamente un Concepto, o el Concepto trae nodos que la guía prohíbe (Impuestos, InformacionAduanera, CuentaPredial, ComplementoConcepto, Parte o ACuentaTerceros). | error | Matriz de errores Nómina 1.2 (NOM139); Guía de llenado de nómina p. 17 |
| NOM140 | ClaveProdServ del Concepto no es 84111505, la clave que corresponde a nómina. | error | Matriz de errores Nómina 1.2 (NOM140); Guía de llenado de nómina p. 18 |
| NOM141 | El Concepto trae NoIdentificacion, atributo que no debe existir en una nómina. | error | Matriz de errores Nómina 1.2 (NOM141); Guía de llenado de nómina p. 18 |
| NOM142 | Cantidad del Concepto es distinta de 1. | error | Matriz de errores Nómina 1.2 (NOM142); Guía de llenado de nómina p. 18 |
| NOM143 | ClaveUnidad del Concepto es distinta de ACT. | error | Matriz de errores Nómina 1.2 (NOM143); Guía de llenado de nómina p. 18 |
| NOM144 | El Concepto trae Unidad, atributo que no debe existir en una nómina. | error | Matriz de errores Nómina 1.2 (NOM144); Guía de llenado de nómina p. 18 |
| NOM145 | Descripcion del Concepto no es 'Pago de nómina'. La comparación ignora acentos y mayúsculas, y la diferencia se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM145); Guía de llenado de nómina p. 18 y pregunta 19 (p. 92) |
| NOM146 | ValorUnitario del Concepto no es igual a TotalPercepciones más TotalOtrosPagos. | error | Matriz de errores Nómina 1.2 (NOM146); Guía de llenado de nómina p. 19 |
| NOM147 | Importe del Concepto no es igual a TotalPercepciones más TotalOtrosPagos. | error | Matriz de errores Nómina 1.2 (NOM147); Guía de llenado de nómina p. 19 |
| NOM148 | Descuento del Concepto no coincide con TotalDeducciones, o existe aunque la Nómina no traiga TotalDeducciones. | error | Matriz de errores Nómina 1.2 (NOM148); Guía de llenado de nómina p. 19 |
| NOM149 | El Comprobante trae el nodo Impuestos, que en nómina no debe existir; las retenciones van en el complemento. | error | Matriz de errores Nómina 1.2 (NOM149); Guía de llenado de nómina p. 19 (Impuestos no debe existir en el Concepto) |
| NOM151 | El nodo Nomina no trae TotalPercepciones ni TotalOtrosPagos; debe venir al menos uno de los dos. | error | Matriz de errores Nómina 1.2 (NOM151); Guía de llenado de nómina p. 21 |
| NOM152 | TipoNomina no es una clave del catálogo c_TipoNomina vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM152); Guía de llenado de nómina p. 22 |
| NOM153 | En una nómina ordinaria (TipoNomina O) el Receptor trae PeriodicidadPago 99. La regla exige cualquier clave distinta de 99, como dice la guía, y no 01 a 09 como dice la matriz. | error | Matriz de errores Nómina 1.2 (NOM153); Guía de llenado de nómina p. 42 |
| NOM154 | En una nómina extraordinaria (TipoNomina E) PeriodicidadPago no es 99 (Otra periodicidad). | error | Matriz de errores Nómina 1.2 (NOM154); Guía de llenado de nómina p. 42 |
| NOM155 | FechaInicialPago es posterior a FechaFinalPago. | error | Matriz de errores Nómina 1.2 (NOM155); Guía de llenado de nómina p. 24 |
| NOM156 | El nodo Nomina trae TotalPercepciones, pero el complemento no tiene nodo Percepciones. | error | Matriz de errores Nómina 1.2 (NOM156); Guía de llenado de nómina p. 26 |
| NOM157 | TotalPercepciones no es igual a la suma de TotalSueldos, TotalSeparacionIndemnizacion y TotalJubilacionPensionRetiro del nodo Percepciones. Un atributo ausente cuenta como cero. | error | Matriz de errores Nómina 1.2 (NOM157); Guía de llenado de nómina p. 26 |
| NOM158 | El nodo Nomina trae TotalDeducciones, pero el complemento no tiene nodo Deducciones. | error | Matriz de errores Nómina 1.2 (NOM158); Guía de llenado de nómina p. 26 |
| NOM159 | TotalDeducciones no es igual a la suma de TotalOtrasDeducciones y TotalImpuestosRetenidos del nodo Deducciones. Un atributo ausente cuenta como cero. | error | Matriz de errores Nómina 1.2 (NOM159); Guía de llenado de nómina pp. 26-27 |
| NOM160 | El nodo OtrosPagos no cuadra con TotalOtrosPagos: el atributo falta o no es igual a la suma de los Importe de los OtroPago. | error | Matriz de errores Nómina 1.2 (NOM160); Guía de llenado de nómina p. 27 |
| NOM162 | El TipoContrato 01 a 08 (con relación laboral) no trae RegistroPatronal en el Emisor. La guía admite excepciones que aquí no se distinguen, así que se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM162); Guía de llenado de nómina p. 29 |
| NOM163 | El TipoContrato 09, 10 o 99 (asimilados o sin relación laboral) trae RegistroPatronal en el Emisor, que no debe existir. | error | Matriz de errores Nómina 1.2 (NOM163); Guía de llenado de nómina p. 29 |
| NOM164 | Con RegistroPatronal en el Emisor faltan atributos del IMSS en el Receptor: NumSeguridadSocial, FechaInicioRelLaboral, Antigüedad, RiesgoPuesto o SalarioDiarioIntegrado. | error | Matriz de errores Nómina 1.2 (NOM164); Guía de llenado de nómina p. 29 |
| NOM167 | OrigenRecurso de EntidadSNCF no es una clave de c_OrigenRecurso (IP, IF o IM) vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM167); Guía de llenado de nómina p. 31 |
| NOM168 | OrigenRecurso es IM (ingresos mixtos) y falta MontoRecursoPropio en EntidadSNCF. | error | Matriz de errores Nómina 1.2 (NOM168); Guía de llenado de nómina p. 31 |
| NOM169 | OrigenRecurso es IP o IF, pero EntidadSNCF trae MontoRecursoPropio, que solo corresponde a IM. | error | Matriz de errores Nómina 1.2 (NOM169); Guía de llenado de nómina p. 31 |
| NOM170 | MontoRecursoPropio de EntidadSNCF no es menor que TotalPercepciones más TotalOtrosPagos. | error | Matriz de errores Nómina 1.2 (NOM170); Guía de llenado de nómina p. 32 |
| NOM171 | TipoContrato no es una clave del catálogo c_TipoContrato vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM171); Guía de llenado de nómina p. 36 |
| NOM172 | TipoJornada no es una clave del catálogo c_TipoJornada vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM172); Guía de llenado de nómina p. 37 |
| NOM173 | FechaInicioRelLaboral del Receptor de Nómina es posterior a FechaFinalPago. | error | Matriz de errores Nómina 1.2 (NOM173); Guía de llenado de nómina p. 34 |
| NOM174 | La Antigüedad en semanas excede el cociente de (días entre FechaInicioRelLaboral y FechaFinalPago, más uno) entre siete. | error | Matriz de errores Nómina 1.2 (NOM174); Guía de llenado de nómina p. 35 |
| NOM175 | La Antigüedad en años, meses y días no coincide con lo transcurrido entre FechaInicioRelLaboral y FechaFinalPago, contando el día de ingreso. | advertencia | Matriz de errores Nómina 1.2 (NOM175); Guía de llenado de nómina p. 35 |
| NOM176 | TipoRegimen no es una clave del catálogo c_TipoRegimen vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM176); Guía de llenado de nómina p. 38 |
| NOM177 | Con TipoContrato 01 a 08, TipoRegimen no es 02, 03 ni 04. Se advierte, porque la guía también usa el régimen 13 para indemnizaciones. | advertencia | Matriz de errores Nómina 1.2 (NOM177); Guía de llenado de nómina p. 39 |
| NOM178 | Con TipoContrato 09 o mayor, TipoRegimen está fuera del rango 05 a 99. Se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM178); Guía de llenado de nómina p. 39 |
| NOM179 | RiesgoPuesto no es una clave del catálogo c_RiesgoPuesto vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM179); Guía de llenado de nómina p. 40 |
| NOM180 | PeriodicidadPago no es una clave del catálogo c_PeriodicidadPago vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM180); Guía de llenado de nómina p. 41 |
| NOM181 | Banco no es una clave del catálogo c_Banco vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM181); Guía de llenado de nómina p. 43 |
| NOM182 | CuentaBancaria tiene caracteres que no son dígitos o está fuera del rango de 10 a 18 posiciones. Una longitud distinta de 10, 11, 15, 16 y 18 solo se advierte. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM182); Guía de llenado de nómina p. 43 |
| NOM183 | CuentaBancaria es una CLABE de 18 posiciones y el Receptor trae Banco, que no debe existir en ese caso. Se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM183); Guía de llenado de nómina p. 43 |
| NOM184 | El dígito de control de la CLABE de 18 posiciones no es correcto. | error | Matriz de errores Nómina 1.2 (NOM184); Guía de llenado de nómina p. 43 |
| NOM185 | CuentaBancaria de 10, 11 o 16 posiciones (no es CLABE) no trae Banco. Con 15 posiciones solo se advierte, porque la regla no nombra esa longitud. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM185); Guía de llenado de nómina p. 44 |
| NOM186 | ClaveEntFed no es un estado de México válido en c_Estado vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM186); Guía de llenado de nómina p. 45 |
| NOM188 | La suma de PorcentajeTiempo de los nodos SubContratacion no es 100. | error | Matriz de errores Nómina 1.2 (NOM188); Guía de llenado de nómina p. 48 |
| NOM189 | La suma de TotalSueldos, TotalSeparacionIndemnizacion y TotalJubilacionPensionRetiro no es igual a TotalGravado más TotalExento. | error | Matriz de errores Nómina 1.2 (NOM189); Guía de llenado de nómina p. 48 |
| NOM190 | TotalSueldos no es igual a la suma de ImporteGravado más ImporteExento de las percepciones que no son 022, 023, 025, 039 ni 044. | error | Matriz de errores Nómina 1.2 (NOM190); Guía de llenado de nómina p. 49 |
| NOM191 | TotalSeparacionIndemnizacion no es igual a la suma de ImporteGravado más ImporteExento de las percepciones 022, 023 y 025. | error | Matriz de errores Nómina 1.2 (NOM191); Guía de llenado de nómina p. 49 |
| NOM192 | TotalJubilacionPensionRetiro no es igual a la suma de ImporteGravado más ImporteExento de las percepciones 039 y 044. | error | Matriz de errores Nómina 1.2 (NOM192); Guía de llenado de nómina p. 50 |
| NOM193 | TotalGravado no es igual a la suma de ImporteGravado de las percepciones. | error | Matriz de errores Nómina 1.2 (NOM193); Guía de llenado de nómina p. 50 |
| NOM194 | TotalExento no es igual a la suma de ImporteExento de las percepciones. | error | Matriz de errores Nómina 1.2 (NOM194); Guía de llenado de nómina p. 51 |
| NOM195 | La suma de ImporteGravado más ImporteExento de una percepción es cero o negativa. Se lee la suma de ambos importes, no cada uno por separado. | error | Matriz de errores Nómina 1.2 (NOM195); Guía de llenado de nómina p. 56 |
| NOM196 | TipoPercepcion no es una clave del catálogo c_TipoPercepcion vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM196); Guía de llenado de nómina pp. 52-53 |
| NOM197 | Hay percepciones distintas de 022, 023, 025, 039 y 044, pero falta TotalSueldos en Percepciones. | error | Matriz de errores Nómina 1.2 (NOM197); Guía de llenado de nómina p. 49 |
| NOM198 | El recibo tiene una percepción 022, 023 o 025 y falta TotalSeparacionIndemnizacion o el nodo SeparacionIndemnizacion. | error | Matriz de errores Nómina 1.2 (NOM198); Guía de llenado de nómina p. 53 |
| NOM199 | El recibo tiene una percepción 039 o 044 y falta TotalJubilacionPensionRetiro o el nodo JubilacionPensionRetiro. Un total o nodo de jubilación sin percepción 039 ni 044 que lo respalde solo se advierte. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM199); Guía de llenado de nómina p. 53 |
| NOM200 | Con percepción 039 (jubilación en una exhibición), el nodo JubilacionPensionRetiro no trae TotalUnaExhibicion o trae TotalParcialidad o MontoDiario. Si el recibo también tiene 044, no se evalúa. | error | Matriz de errores Nómina 1.2 (NOM200); Guía de llenado de nómina p. 53 |
| NOM201 | Con percepción 044 (jubilación en parcialidades), el nodo JubilacionPensionRetiro no trae TotalParcialidad y MontoDiario o trae TotalUnaExhibicion. Si el recibo también tiene 039, no se evalúa. | error | Matriz de errores Nómina 1.2 (NOM201); Guía de llenado de nómina p. 53 |
| NOM202 | Falta el nodo AccionesOTitulos en la percepción 045 (ingresos en acciones o títulos valor). | error | Matriz de errores Nómina 1.2 (NOM202); Guía de llenado de nómina p. 54 |
| NOM203 | Una percepción distinta de 045 trae el nodo AccionesOTitulos, que solo corresponde a la 045. | error | Matriz de errores Nómina 1.2 (NOM203); Guía de llenado de nómina p. 54 |
| NOM204 | Falta el nodo HorasExtra en la percepción 019 (horas extra). | error | Matriz de errores Nómina 1.2 (NOM204); Guía de llenado de nómina p. 54 |
| NOM205 | Una percepción distinta de 019 trae el nodo HorasExtra. Según la matriz solo corresponde a la 019, y la guía no lo prohíbe, así que se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM205); Guía de llenado de nómina p. 54 |
| NOM206 | La percepción 014 (subsidios por incapacidad) no tiene el nodo Incapacidades. | error | Matriz de errores Nómina 1.2 (NOM206); Guía de llenado de nómina p. 54 y 89 |
| NOM207 | La suma de ImporteMonetario de las Incapacidad no es igual a ImporteGravado más ImporteExento de las percepciones 014. No se evalúa si coexisten 014 y 006 en el mismo recibo, y se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM207); Guía de llenado de nómina p. 54 |
| NOM208 | HorasExtra@TipoHoras no es una clave del catálogo c_TipoHoras vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM208); Guía de llenado de nómina p. 58 |
| NOM209 | JubilacionPensionRetiro trae TotalUnaExhibicion junto con TotalParcialidad o MontoDiario, que son formas excluyentes de pago. | error | Matriz de errores Nómina 1.2 (NOM209); Guía de llenado de nómina p. 59 |
| NOM210 | JubilacionPensionRetiro trae TotalParcialidad sin MontoDiario, o trae también TotalUnaExhibicion. | error | Matriz de errores Nómina 1.2 (NOM210); Guía de llenado de nómina p. 60 |
| NOM211 | TotalImpuestosRetenidos falta o no es igual a la suma de las deducciones 002 (ISR). | error | Matriz de errores Nómina 1.2 (NOM211); Guía de llenado de nómina p. 66 |
| NOM212 | El nodo Deducciones trae TotalImpuestosRetenidos, pero no hay deducciones con clave 002 (ISR). | error | Matriz de errores Nómina 1.2 (NOM212); Guía de llenado de nómina p. 66 |
| NOM213 | TipoDeduccion no es una clave del catálogo c_TipoDeduccion vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM213); Guía de llenado de nómina pp. 66-67 |
| NOM214 | La deducción 006 (descuento por incapacidad) no tiene el nodo Incapacidades. | error | Matriz de errores Nómina 1.2 (NOM214); Guía de llenado de nómina p. 67 y 89 |
| NOM215 | El Importe de la deducción 006 no es igual a la suma de ImporteMonetario de las Incapacidad. No se evalúa si coexisten 014 y 006 en el mismo recibo, y se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM215); Guía de llenado de nómina p. 69 |
| NOM216 | Una deducción tiene Importe igual o menor que cero. La matriz y la guía lo piden mayor que cero, pero el XSD admite 0.00, así que se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM216); Guía de llenado de nómina p. 69; el XSD admite 0.00 |
| NOM217 | TipoOtroPago no es una clave del catálogo c_TipoOtroPago vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM217); Guía de llenado de nómina p. 69 |
| NOM218 | El OtroPago 004 (compensación de saldos a favor) no tiene el nodo CompensacionSaldosAFavor. | error | Matriz de errores Nómina 1.2 (NOM218); Guía de llenado de nómina p. 73 |
| NOM219 | El OtroPago 002 (subsidio para el empleo) no tiene el nodo SubsidioAlEmpleo. | error | Matriz de errores Nómina 1.2 (NOM219); Guía de llenado de nómina p. 73 |
| NOM220 | Un OtroPago tiene Importe igual o menor que cero. El XSD lo admite y el 002 sin pago es frecuente, así que se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM220); Guía de llenado de nómina p. 76 |
| NOM221 | SubsidioCausado es menor que el Importe del OtroPago: se entregó más subsidio del que se causó. | error | Matriz de errores Nómina 1.2 (NOM221); Guía de llenado de nómina p. 77 |
| NOM222 | RemanenteSalFav es mayor que SaldoAFavor en CompensacionSaldosAFavor. | error | Matriz de errores Nómina 1.2 (NOM222); Guía de llenado de nómina p. 77 |
| NOM223 | El Año de CompensacionSaldosAFavor no es el año anterior al de FechaPago, ni el de FechaPago en un periodo de diciembre. Se compara con la fecha del recibo, no con la de hoy, y se advierte. | advertencia | Matriz de errores Nómina 1.2 (NOM223); Guía de llenado de nómina p. 78 |
| NOM224 | TipoIncapacidad no es una clave del catálogo c_TipoIncapacidad vigente en la fecha del CFDI. | erroradvertencia | Matriz de errores Nómina 1.2 (NOM224); Guía de llenado de nómina p. 79 |
| NOMINA_ANTIGUEDAD_CERO | La Antigüedad del Receptor de Nómina es P0W o P0D; el esquema la acepta, pero hay PAC que la rechazan. | advertencia | — |
| NOMINA_ANTIGUEDAD_FORMATO | La Antigüedad del Receptor de Nómina no tiene el formato PnW o PnYnMnD. | error | — |
| NOMINA_EXPORTACION | Exportacion del Comprobante de Nómina es distinta de 01 (No aplica). | error | Guía de llenado de nómina p. 10 (Exportacion se debe registrar 01) |
| NOMINA_INFORMACION_GLOBAL | El Comprobante de Nómina trae el nodo InformacionGlobal, que no debe existir. | error | Guía de llenado de nómina p. 12 (el nodo InformacionGlobal no debe existir) |
| NOMINA_INVALID_VERSION | La versión del complemento de Nómina no es 1.2. | error | — |
| NOMINA_METODO_PAGO | MetodoPago del Comprobante de Nómina es distinto de PUE. Si falta, se advierte. | erroradvertencia | Guía de llenado de nómina p. 10 (MetodoPago se debe registrar PUE) |
| NOMINA_MISSING_COMPLEMENT | Los comprobantes de tipo Nómina deben incluir el complemento de Nómina. | error | — |
| NOMINA_MISSING_FECHAFINALPAGO | Falta el atributo obligatorio 'FechaFinalPago' en el complemento de Nómina. | error | — |
| NOMINA_MISSING_FECHAINICIALPAGO | Falta el atributo obligatorio 'FechaInicialPago' en el complemento de Nómina. | error | — |
| NOMINA_MISSING_FECHAPAGO | Falta el atributo obligatorio 'FechaPago' en el complemento de Nómina. | error | — |
| NOMINA_MISSING_NUMDIASPAGADOS | Falta el atributo obligatorio 'NumDiasPagados' en el complemento de Nómina. | error | — |
| NOMINA_MISSING_RECEPTOR | Falta el nodo Receptor en el complemento de Nómina. | error | — |
| NOMINA_MISSING_TIPONOMINA | Falta el atributo obligatorio 'TipoNomina' en el complemento de Nómina. | error | — |
| NOMINA_OBJETO_IMP | ObjetoImp del Concepto de Nómina es distinto de 01 (No objeto de impuesto). | error | Guía de llenado de nómina p. 19 (ObjetoImp se debe registrar 01) |
| NOMINA_RECEPTOR_MISSING_CLAVEENTFED | Falta el atributo obligatorio 'ClaveEntFed' en el Receptor de Nómina. | error | — |
| NOMINA_RECEPTOR_MISSING_CURP | Falta el atributo obligatorio 'Curp' en el Receptor de Nómina. | error | — |
| NOMINA_RECEPTOR_MISSING_NUMEMPLEADO | Falta el atributo obligatorio 'NumEmpleado' en el Receptor de Nómina. | error | — |
| NOMINA_RECEPTOR_MISSING_PERIODICIDADPAGO | Falta el atributo obligatorio 'PeriodicidadPago' en el Receptor de Nómina. | error | — |
| NOMINA_RECEPTOR_MISSING_TIPOCONTRATO | Falta el atributo obligatorio 'TipoContrato' en el Receptor de Nómina. | error | — |
| NOMINA_RECEPTOR_MISSING_TIPOREGIMEN | Falta el atributo obligatorio 'TipoRegimen' en el Receptor de Nómina. | error | — |
| NOMINA_REGISTRO_PATRONAL_RECIPROCO | Sin RegistroPatronal en el Emisor, el Receptor trae atributos del IMSS que la guía pide omitir. Se advierte, porque la guía lo exige pero la matriz no. | advertencia | Guía de llenado de nómina p. 29 |
| NOMINA_TIPO_RELACION | CfdiRelacionados de un Comprobante de Nómina trae TipoRelacion distinto de 04 (sustitución de CFDI previos). | error | Guía de llenado de nómina p. 12 (TipoRelacion se debe registrar 04) |
| NOMINA_TOTAL_OTRAS_DEDUCCIONES | TotalOtrasDeducciones no coincide con la suma calculada de las deducciones. | error | Guía de llenado de nómina p. 66 (TotalOtrasDeducciones = deducciones sin la clave 002); sin código NOM en la matriz |
Carta Porte 3.1
32 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| CP001_VERSION | La versión del Complemento Carta Porte no es '3.1'. | error |
| CP002_DISTANCIA_CERO | La distancia total recorrida (TotalDistRec) es 0 o no está indicada. | error |
| CP003_SIN_DESTINO | No se encontró ninguna Ubicación con TipoUbicacion='Destino'. | error |
| CP003_SIN_ORIGEN | No se encontró ninguna Ubicación con TipoUbicacion='Origen'. | error |
| CP004_DISTANCIA_DESTINO | El destino no tiene DistanciaRecorrida o es 0. | error |
| CP005_SIN_MERCANCIA | El nodo Mercancias existe pero no contiene ninguna Mercancia. | error |
| CP005_SIN_MERCANCIAS | El Complemento Carta Porte no tiene el nodo Mercancias. | error |
| CP006_PESO_BRUTO_CERO | La Mercancia tiene PesoBruto en 0 o vacío. Este es uno de los errores más frecuentes de rechazo del SAT. | error |
| CP007_SIN_PERMISO_SCT | Falta el número de permiso SCT (NumPermisoSCT) del autotransporte. | error |
| CP008_ANIO_INVALIDO | El año del modelo del vehículo no es válido. | error |
| CP008_SIN_PLACA | Falta la placa del vehículo motor (PlacaVM). | error |
| CP009_SIN_SEGURO | Faltan los datos del seguro de responsabilidad civil (AseguraRespCivil y PolizaRespCivil son obligatorios). | error |
| CP010_OPERADOR_SIN_RFC | El operador del vehículo (TipoFigura='01') no tiene RFC. | error |
| CP010_RFC_OPERADOR_IGUAL_EMISOR | El RFC del operador del vehículo es igual al del emisor, algo inusual en traslados. | advertencia |
| CP010_SIN_FIGURA | El Complemento Carta Porte no tiene el nodo FiguraTransporte. | error |
| CP010_SIN_TIPOS_FIGURA | El nodo FiguraTransporte existe pero no contiene ningún TiposFigura. | error |
| CP_CONFIG_VEH_INVALIDA | La configuración vehicular no existe en el catálogo del SAT. | error |
| CP_DIST_SUMA | TotalDistRec no coincide con la suma de DistanciaRecorrida de los destinos. | advertencia |
| CP_EMBALAJE_INVALIDO | El tipo de embalaje no existe en el catálogo del SAT. | error |
| CP_FIGURA_RFC_FORMATO | El RFC de la figura de transporte no tiene formato válido. | error |
| CP_FIGURA_TIPO_INVALIDO | El TipoFigura no existe en el catálogo del SAT. | error |
| CP_MAT_CLAVE_INVALIDA | La clave de material peligroso no existe en el catálogo del SAT. | error |
| CP_MAT_SIN_CLAVE | La Mercancia indica MaterialPeligroso='Sí' pero no tiene CveMaterialPeligroso. | error |
| CP_MAT_SIN_EMBALAJE | La Mercancia es material peligroso pero no indica tipo de Embalaje. | advertencia |
| CP_OPERADOR_SIN_LICENCIA | El operador no tiene número de licencia (NumLicencia). | advertencia |
| CP_PERM_INVALIDO | El tipo de permiso SCT no existe en el catálogo del SAT. | error |
| CP_PESO_TOTAL | PesoBrutoTotal no coincide con la suma de PesoBruto de las mercancías. | advertencia |
| CP_REMOLQUE_REQUERIDO | La configuración vehicular normalmente requiere remolque, pero no se encontró ninguno. | advertencia |
| CP_REMOLQUE_SIN_PLACA | El remolque no tiene placa. | error |
| CP_REMOLQUE_TIPO_INVALIDO | El subtipo de remolque no existe en el catálogo del SAT. | error |
| CP_SEGURO_MAT_PELIGROSO | Se transporta material peligroso pero faltan los datos del seguro de medio ambiente (AseguraMedAmbiente y PolizaMedAmbiente). | error |
| CP_UBIC_CP_INVALIDO | El código postal de la ubicación no existe en el catálogo del SAT. | error |
Comercio Exterior
31 validaciones
| Código | Qué revisa | Severidad |
|---|---|---|
| CCE101 | El complemento de Comercio Exterior solo aplica para comprobantes tipo Ingreso (I), Egreso (E) o Traslado (T). | error |
| CCE104 | El complemento de Comercio Exterior requiere que Exportación sea '02' (Definitiva) o '03' (Temporal). | error |
| CCE120 | El Incoterm no existe en el catálogo del SAT. | error |
| CCE121 | Falta el TipoCambioUSD. Debe ser el tipo de cambio MXN/USD conforme al artículo 20 del CFF. | advertencia |
| CCE122 | TotalUSD no coincide con la suma de ValorDolares de las mercancías. | error |
| CCE125 | El país del Emisor en el complemento de Comercio Exterior debe ser 'MEX'. | error |
| CCE126 | El estado del Emisor no es válido para México. | error |
| CCE127 | El municipio no pertenece al estado según el catálogo del SAT. | error |
| CCE129 | Falta el atributo Colonia en el Domicilio del Emisor para ese código postal. | error |
| CCE130 | El código postal no corresponde al estado y municipio del Emisor. | error |
| CCE133 | El Número de Registro de Identificación Tributaria es obligatorio para receptores extranjeros (RFC genérico XEXX010101000). | error |
| CCE136 | Falta el atributo Colonia en el Domicilio del Receptor para ese código postal. | error |
| CCE138 | El municipio no pertenece al estado según el catálogo del SAT. | error |
| CCE139 | El estado del Receptor no es válido para México. | error |
| CCE141 | El código postal no corresponde al estado y municipio del Receptor. | error |
| CCE143 | El Número de Registro de Identificación Tributaria es obligatorio para destinatarios extranjeros. | error |
| CCE145 | Falta el atributo Colonia en el Domicilio del Destinatario para ese código postal. | error |
| CCE147 | El municipio no pertenece al estado según el catálogo del SAT. | error |
| CCE148 | El estado del Destinatario no es válido para México. | error |
| CCE150 | El código postal no corresponde al estado y municipio del Destinatario. | error |
| CCE151 | El Concepto no tiene NoIdentificacion. Es obligatorio cuando se usa el complemento de Comercio Exterior. | error |
| CCE152 | La Mercancía tiene NoIdentificacion que no corresponde a ningún Concepto del CFDI. | error |
| CCE161 | La fracción arancelaria no existe o ya no es vigente en el catálogo del SAT. | error |
| CCE165 | Faltan campos en una Mercancía: CantidadAduana, UnidadAduana y ValorUnitarioAduana deben venir los tres juntos o ninguno. | error |
| CCE167 | La UnidadAduana no corresponde a la unidad de la fracción arancelaria. | error |
| CCE168 | El ValorUnitarioAduana debe ser mayor a 0 cuando la UnidadAduana no es '99' (Servicio). | error |
| CCE_CLAVE_PEDIMENTO | La clave de pedimento no existe en el catálogo del SAT. | error |
| CCE_DESTINATARIO_PAIS | El país del Destinatario no existe en el catálogo del SAT. | error |
| CCE_EMISOR_PAIS | El país del Emisor no existe en el catálogo del SAT. | error |
| CCE_RECEPTOR_PAIS | El país del Receptor no existe en el catálogo del SAT. | error |
| CCE_UNIDAD_ADUANA | La UnidadAduana no existe en el catálogo del SAT. | error |
Ley del ISR: deducibilidad y retenciones
13 validaciones
Son hallazgos de legalidad fiscal: no cambian si el CFDI es técnicamente válido ante el SAT, sino si el gasto es deducible o el impuesto acreditable.
| Código | Qué revisa | Severidad | Fundamento |
|---|---|---|---|
| LISR106_RETENCION_HONORARIOS | Falta la retención de ISR del 10% en honorarios de persona física a persona moral. | advertencia | LISR Art. 106, último párrafo |
| LISR106_RETENCION_HONORARIOS_TASA | La retención de ISR por honorarios trae una tasa distinta del 10% esperado. | advertencia | LISR Art. 106, último párrafo |
| LISR113J_RETENCION_RESICO | Falta la retención de ISR del 1.25% cuando una persona moral le paga a un RESICO persona física. | advertencia | LISR Art. 113-J |
| LISR113J_RETENCION_RESICO_TASA | La retención de ISR a un RESICO persona física trae una tasa distinta del 1.25% esperado. | advertencia | LISR Art. 113-J |
| LISR116_RETENCION_ARRENDAMIENTO | Falta la retención de ISR del 10% en arrendamiento de persona física a persona moral. | advertencia | LISR Art. 116 |
| LISR116_RETENCION_ARRENDAMIENTO_TASA | La retención de ISR por arrendamiento trae una tasa distinta del 10% esperado. | advertencia | LISR Art. 116 |
| LISR151_I_EFECTIVO | Gasto médico u hospitalario (UsoCFDI D01/D02) pagado en efectivo: no es deducción personal válida. | advertencia | LISR Art. 151 fr. I |
| LISR27_III_COMBUSTIBLE_EFECTIVO | Combustible para vehículos pagado en efectivo: nunca es deducible, sin importar el monto. | advertencia | LISR Art. 27 fr. III, 2º párr. |
| LISR27_III_EFECTIVO | La factura se pagó en efectivo por más del tope legal ($2,000 MXN): no es deducible. | advertencia | LISR Art. 27 fr. III |
| LISR27_III_EFECTIVO_REP | Un pago del REP se recibió en efectivo por más del tope legal: la factura que cubre no es deducible. | advertencia | LISR Art. 27 fr. III |
| LISR28_XX_RESTAURANTE | Consumo en restaurante: solo 8.5% es deducible, y nada si se pagó en efectivo. | informaciónadvertencia | LISR Art. 28 fr. XX |
| LISR36_II_AUTOMOVIL | El importe de un automóvil supera el tope de deducción por unidad de la LISR. | información | LISR Art. 36 fr. II |
| USO_S01_SIN_EFECTOS | El comprobante declara UsoCFDI 'S01' (sin efectos fiscales): no se puede deducir ni acreditar. | información | Anexo 20, c_UsoCFDI |
Ley del IVA: acreditamiento y retenciones
9 validaciones
Son hallazgos de legalidad fiscal: no cambian si el CFDI es técnicamente válido ante el SAT, sino si el gasto es deducible o el impuesto acreditable.
| Código | Qué revisa | Severidad | Fundamento |
|---|---|---|---|
| LIVA1A_RETENCION_FLETES | Falta la retención de IVA del 4% en un servicio de fletes por carretera. | advertencia | LIVA Art. 1-A fr. II inciso c) |
| LIVA1A_RETENCION_FLETES_TASA | La retención de IVA en fletes trae una tasa distinta del 4% esperado. | advertencia | LIVA Art. 1-A fr. II inciso c) |
| LIVA1A_RETENCION_IVA | Falta la retención de IVA de dos terceras partes cuando una persona moral le paga a una persona física sujeta a retención (arrendamiento, honorarios o RESICO). | advertencia | LIVA Art. 1-A fr. II inciso a); RLIVA Art. 3 |
| LIVA1A_RETENCION_IVA_TASA | La retención de IVA no equivale a dos terceras partes del IVA trasladado. | advertencia | LIVA Art. 1-A fr. II inciso a); RLIVA Art. 3 |
| LIVA29_EXPORTACION_TASA | El comprobante declara exportación definitiva pero trasladó IVA al 16% en vez de la tasa 0%. | advertencia | LIVA Art. 29 |
| LIVA2A_TASA_CERO_SERVICIO | Un servicio trasladó IVA a la tasa 0%, un caso excepcional que conviene verificar con el emisor. | información | LIVA Art. 2-A |
| LIVA5_III_PPD | Factura PPD que traslada IVA: el IVA solo se acredita hasta que se paga (con el REP correspondiente). | información | LIVA Arts. 1-B y 5 fr. III |
| LIVA5_II_NO_DESGLOSADO | El IVA no se trasladó de forma expresa y por separado: no es acreditable. | advertencia | LIVA Art. 5 fr. II |
| LIVA_TASA_FRONTERA | Se usó la tasa de IVA del 8% de la región fronteriza sin que el domicilio o la clave del producto/servicio parezcan calificar para el estímulo. | advertencia | Decreto de estímulos fiscales región fronteriza |
Revisiones con tu RFC y tus otros CFDI
8 validaciones
Son hallazgos de legalidad fiscal: no cambian si el CFDI es técnicamente válido ante el SAT, sino si el gasto es deducible o el impuesto acreditable.
| Código | Qué revisa | Severidad | Fundamento |
|---|---|---|---|
| CFDI_AJENO_AL_CONTRIBUYENTECon cuenta o API key | Ni el emisor ni el receptor del CFDI son alguno de tus RFC registrados. | advertencia | LISR Art. 27 fr. IV; CFF Art. 29-A |
| CFDI_CANCELADO_EN_SATCon cuenta o API key | El SAT tiene este comprobante como cancelado: no tiene efectos fiscales. | advertencia | CFF Art. 29-A |
| ESTATUS_SAT_NO_VERIFICADOCon cuenta o API key | Nunca se ha verificado el estatus de este comprobante directamente con el SAT. | información | CFF Art. 29-A |
| LISR113E_RESICO_SIN_DEDUCCIONESCon cuenta o API key | Tributas en RESICO de personas físicas: este gasto no reduce tu ISR (el régimen no admite deducciones). | información | LISR Art. 113-E |
| NC_IVA_MAYOR_QUE_ORIGINALCon cuenta o API key | La nota de crédito traslada más IVA del que trasladó la factura original que ajusta. | advertencia | LIVA Art. 7 |
| PPD_RECIBIDO_SIN_PAGOCon cuenta o API key | Factura PPD sin REP registrado, o pagada solo en parte: el efecto fiscal solo corresponde a lo ya pagado. | informaciónadvertencia | LIVA Arts. 1-B y 5 fr. III; LISR Art. 105 |
| REP_IVA_DESPROPORCIONADOCon cuenta o API key | El IVA trasladado en este REP no es proporcional al pago frente a la factura original. | advertencia | LIVA Art. 1-B |
| RETENCION_A_CARGO_DEL_CONTRIBUYENTECon cuenta o API key | Como receptor persona moral, debiste retener y enterar el impuesto que este CFDI no refleja. | advertencia | LISR Art. 27 fr. V; LIVA Art. 5 fr. IV |