Error CFDI40102 al timbrar: el resultado de la digestión debe ser igual al resultado de la desencripción del sello
El error CFDI40102 aparece cuando el sello del comprobante no coincide con el que se obtiene al recalcularlo: el PAC genera la cadena original del XML, le aplica la digestión SHA-256 y compara el resultado con el sello desencriptado. Si no son iguales, el XML cambió después de sellarse o se selló con datos distintos a los que viajan. Aquí verás las causas típicas, cómo regenerar el sello desde tu sistema y por qué nunca debes compartir la llave privada del CSD para resolverlo.
Resumen rápido del error
- Código: CFDI40102
- Campo: Sello
- Nodo del XML:
Comprobante - Regla del SAT (Anexo 20): 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.
- Mensaje de rechazo: El resultado de la digestión debe ser igual al resultado de la desencripción del sello.
- Cuándo aparece: al timbrar, antes de que se genere el UUID.
¿Qué significa el error CFDI40102?
El sello es la firma digital del emisor sobre la cadena original del comprobante, hecha con la llave privada del CSD. Para validarlo, el PAC usa el certificado incluido en el XML para desencriptar el sello, genera la cadena original con los datos que recibió y le aplica SHA-256. Ambos resultados deben ser idénticos.
Cualquier cambio entre el momento de firmar y el de enviar, por pequeño que sea, rompe la igualdad: un importe, una fecha, un espacio o un carácter con acento. El mensaje no dice qué cambió, solo que el sello ya no corresponde a los datos. Por eso, la solución es volver a generar el comprobante desde su origen, no corregir el sello a mano.
Dónde se valida: el nodo Sello del comprobante
La validación se aplica al atributo Sello del nodo cfdi:Comprobante, con apoyo de los atributos Certificado y NoCertificado y de la cadena original generada con todos los datos del comprobante.
- CFDI40102: la digestión debe ser igual a la desencripción del sello (esta ficha).
- CFDI40108 y CFDI40119: el subtotal y el total deben coincidir con los cálculos del comprobante.
Causas más comunes del error CFDI40102
- El XML se editó después de sellarse. Alguien cambió un dato a mano o con una herramienta de texto.
- Se alteraron espacios o saltos de línea. Un programa reformateó el XML y la cadena original ya no es la misma.
- Los caracteres especiales cambiaron. Acentos, "ñ" o "&" se codificaron distinto al firmar y al enviar.
- Se cargó la e.firma en lugar del CSD. Solo el Certificado de Sello Digital sirve para sellar comprobantes.
- Se selló con un certificado y se envió otro. El
Certificadodel XML no corresponde a la llave usada. - El proceso modificó datos al enviar. Un paso intermedio redondeó o reordenó atributos.
Cómo corregir el error CFDI40102 paso a paso
- No edites el XML sellado. Cualquier cambio exige volver a sellar.
- Regresa al origen. Corrige el dato en tu sistema y genera el comprobante de nuevo.
- Revisa la codificación. Que el XML se firme y se envíe con la misma codificación de texto.
- Revisa el certificado. Confirma que cargaste el CSD y no la e.firma, y que es el mismo que firma y que se incluye en el XML.
- Evita herramientas intermedias. Sin reformateadores ni editores entre el sellado y el envío.
- Vuelve a timbrar. Nunca compartas la llave privada del CSD. Con un sello recalculado sobre los datos finales, el PAC continúa con el resto de validaciones.
Ejemplo en el XML: incorrecto y correcto
Ejemplo esquemático de un comprobante cuyo importe se editó después de sellarse y de otro regenerado; los datos son ficticios y el sello se abrevia:
Incorrecto:
<cfdi:Comprobante ... SubTotal="1500.00" Total="1740.00" NoCertificado="30001000000500003416" Sello="AbC123...==" ... > <!-- importe cambiado a mano; el sello es el del original de 1250.00 -->
Correcto:
<cfdi:Comprobante ... SubTotal="1500.00" Total="1740.00" NoCertificado="30001000000500003416" Sello="XyZ789...==" ... > <!-- sello regenerado con los datos finales -->
Los datos son ficticios, incluido el número de certificado, y el sello se abrevia. El sello correcto se calcula siempre sobre los datos finales del comprobante.
Cómo evitar romper el sello en tus procesos
Casi todos los casos del 40102 vienen de un paso entre el sellado y el timbrado. Mantén el flujo corto: tu sistema genera el XML, lo sella y lo envía sin pasar por editores, correos ni hojas de cálculo. Si necesitas ajustar algo, hazlo en el origen y vuelve a sellar. Define una sola codificación de texto para todo el proceso y haz pruebas con nombres que tengan acentos, "ñ" y símbolos. Y si tu integración reordena o limpia atributos, desactívala o aplícala antes de firmar. La llave privada del CSD y su contraseña son personales: no las envíes a nadie, ni siquiera a soporte. Para repasar el flujo de emisión, consulta la guía de facturación electrónica CFDI 4.0.
Cómo evitar este error con Soicont
Soicont es una plataforma de facturación electrónica CFDI 4.0 con PAC autorizado. Antes de enviar el comprobante a timbrar, valida los datos del receptor, los catálogos del SAT y los cálculos de impuestos, y si algo no cuadra te muestra el error con una explicación clara para que lo corrijas y vuelvas a emitir. Además, tus folios no caducan y puedes facturar para varias empresas (multi-RFC) desde una sola cuenta.
Conoce la facturación electrónica CFDI 4.0, la plataforma y los paquetes de folios.
Errores relacionados
- Error CFDI40103 (FormaPago): otra validación del nodo Comprobante, sobre la forma de pago.
- Digestión y desencripción del sello: la guía del mismo mensaje redactada como página general.
- Error CFDI40108 (SubTotal): con I, E o N, el subtotal debe ser el redondeo de la suma de los conceptos.
- Error CFDI40119 (Total): el total debe corresponder a la suma de subtotal, descuentos e impuestos.
- Error convirtiendo certificados: problemas al convertir el certificado y revisar la clave.
Consulta también el Centro de Soluciones con todos los errores del SAT.
Preguntas frecuentes
¿Qué significa el error 40102?
Que el sello no coincide con la digestión de la cadena original del comprobante.
¿Puedo corregir el sello a mano?
No. Debes corregir el dato en el origen y volver a sellar.
¿Un espacio de más lo provoca?
Puede hacerlo, porque cambia la cadena original.
¿Debo enviar mi llave privada a soporte?
No. Nunca compartas la llave privada del CSD ni su contraseña.
¿Se parece al error de certificado?
Se relaciona, pero aquí el certificado puede ser correcto y los datos haber cambiado.
¿Se genera UUID con este error?
No. El comprobante se rechaza antes del timbrado.
¿Todavía no se resuelve?
Si después de revisar estos puntos el error continúa, escríbenos desde la página de contacto con el código del error y el XML que intentaste timbrar (nunca envíes contraseñas ni la llave privada del CSD). Si aún no tienes cuenta, crea la tuya y empieza a facturar con validaciones previas.