Cómo Validar una Factura o CFDI en el SAT
6 de abril de 2026
Recibiste una factura. Tiene logo, datos fiscales, un UUID y hasta un código QR. Pero nada de eso te garantiza que sea válida. Un CFDI puede estar cancelado sin que el PDF lo refleje. Puede tener un UUID inventado. Puede ser un XML manipulado después del timbrado. La única forma de saber si una factura es auténtica y vigente es validarla directamente contra el SAT.
Validar factura no es un paso opcional. Si deduces un CFDI cancelado, el SAT va a rechazar esa deducción en una auditoría. Si tu sistema acepta comprobantes apócrifos, estás registrando operaciones fiscales que no existen. Para contadores, auditores y cualquier sistema que procese facturación electrónica, la validación es un control básico que debería ejecutarse de forma automática.
Por qué necesitas validar cada CFDI
Tres razones concretas:
Autenticidad. Confirmar que el CFDI fue realmente timbrado por un PAC autorizado y que el SAT tiene registro de su existencia. Un XML bien formado no prueba nada por sí solo -- cualquier persona con conocimientos técnicos puede generar uno. La validación contra el SAT es la única prueba de que el comprobante es real.
Estatus de cancelación. Un CFDI que ayer estaba vigente puede estar cancelado hoy. El emisor puede cancelar facturas, y dependiendo del monto y el tiempo transcurrido, ni siquiera necesita tu aprobación. Si no verificas el estatus antes de registrar un gasto o de cerrar un periodo contable, estás trabajando con información potencialmente obsoleta.
Validez fiscal para deducciones. El artículo 29-A del Código Fiscal de la Federación establece los requisitos que debe cumplir un comprobante fiscal para ser deducible. Si el CFDI no existe en la base de datos del SAT, o está cancelado, no cumple esos requisitos. Es así de directo.
No confíes en el PDF o la representación impresa de una factura para determinar su validez. El PDF es solo una representación visual del XML. El estatus real del CFDI solo se puede confirmar consultando directamente al SAT.
Qué datos se verifican al validar
Cuando consultas un CFDI ante el SAT, la respuesta incluye varios campos que permiten corroborar la identidad y el estado del comprobante.
| Dato verificado | Descripción | Ejemplo |
|---|---|---|
| UUID (folio fiscal) | Identificador único de 36 caracteres asignado por el PAC al timbrar | 6F8A4C12-3B7E-4D9A-A1F0-8C2E5D7B9F03 |
| RFC del emisor | RFC de quien generó la factura | XAXX010101000 |
| RFC del receptor | RFC de quien recibe la factura | XEXX010101000 |
| Total | Monto total del comprobante incluyendo impuestos | $15,230.00 |
| Fecha de emisión | Fecha y hora en que se emitió el CFDI | 2026-03-15T10:30:00 |
| Estatus | Estado actual del comprobante en la base del SAT | Vigente, Cancelado, No encontrado |
| Estado de cancelación | Si aplica, indica si el CFDI es cancelable y bajo qué condiciones | Cancelable sin aceptación |
El SAT verifica que la combinación de UUID + RFC emisor + RFC receptor + total coincida con lo que tiene registrado. Si cualquiera de esos cuatro datos no coincide, la consulta devuelve un resultado negativo. No es suficiente tener el UUID correcto -- los cuatro campos deben coincidir.
El código QR que aparece en la representación impresa de un CFDI contiene una URL de validación que incluye el UUID, los últimos 8 caracteres del sello digital, el RFC del emisor y el total. Puedes escanear el QR para ir directamente al portal de verificación del SAT con esos datos prellenados.
Estatus de un CFDI
Cuando validas una factura, el SAT devuelve uno de tres estatus principales. Cada uno tiene implicaciones distintas para tu contabilidad.
Cancelabilidad de un CFDI
Además del estatus vigente o cancelado, el SAT informa si un CFDI vigente puede ser cancelado y bajo qué condiciones. Esto es especialmente relevante si estás validando facturas que podrían desaparecer antes de que cierres tu periodo contable.
| Estado de cancelabilidad | Significado |
|---|---|
| Cancelable sin aceptación | El emisor puede cancelar sin que el receptor apruebe. Aplica para CFDIs con monto menor a $1,000 MXN, emitidos al RFC genérico, de nómina, de traslado, o emitidos en los primeros 3 días |
| Cancelable con aceptación | El emisor debe enviar una solicitud de cancelación y el receptor tiene 3 días hábiles para aceptar o rechazar. Si no responde, se acepta por defecto |
| No cancelable | El CFDI tiene documentos relacionados (complementos de pago, notas de crédito) que impiden su cancelación directa. Primero se deben cancelar los documentos relacionados |
Si validas un CFDI vigente y su estado es "cancelable sin aceptación", toma en cuenta que el emisor puede cancelarlo en cualquier momento sin notificarte. Para CFDIs de montos importantes, conviene monitorear su estatus periódicamente hasta el cierre del periodo contable.
Métodos para validar un CFDI
Existen tres formas de validar factura contra el SAT. Cada una tiene un caso de uso diferente dependiendo del volumen y del nivel de automatización que necesites.
Portal del SAT
El portal de verificación de CFDI vive en portalcfdi.facturaelectronica.sat.gob.mx. Es la opción más directa para validaciones puntuales.
Accede al portal de verificación#
Abre el portal en portalcfdi.facturaelectronica.sat.gob.mx y selecciona la opción de verificación de comprobantes. No necesitas autenticarte -- es acceso público.
Ingresa el folio fiscal (UUID), el RFC del emisor, el RFC del receptor y los últimos 8 caracteres del sello digital del emisor. Estos datos los encuentras en el XML del CFDI o en su representación impresa.
Resuelve el captcha y consulta#
El portal muestra un captcha visual que debes completar antes de enviar la consulta. No hay forma de automatizar este paso -- es precisamente el mecanismo del SAT para evitar consultas masivas automatizadas por esta vía.
El portal muestra el estatus del CFDI (vigente, cancelado, no encontrado), la fecha de certificación, el estado de cancelabilidad, y si fue cancelado, el motivo y la fecha de cancelación.
El portal funciona para verificar una factura específica. Pero tiene un límite práctico evidente: un captcha por consulta, una consulta a la vez, sin API, sin exportación de resultados. Para un despacho contable que maneja cientos de clientes, no escala.
Web service SOAP del SAT
El SAT expone un servicio web de consulta de CFDI en consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc. Es un endpoint SOAP que acepta los mismos cuatro datos (UUID, RFC emisor, RFC receptor, total) y devuelve el estatus del comprobante.
A diferencia del portal, este servicio no requiere captcha y se puede llamar programáticamente. Pero tiene sus propias complicaciones: es SOAP (no REST), el WSDL define un contrato rígido, necesitas manejar certificados SSL, y la disponibilidad del servicio no es exactamente 99.99%. He visto timeouts de 30+ segundos en horarios pico.
Para consultas individuales funciona bien. Para validar miles de facturas en lote, vas a necesitar manejar reintentos, rate limiting propio (el SAT no publica límites oficiales, pero te bloquea si abusas), y un pool de conexiones robusto.
API de validación
La tercera opción es usar una API que abstraiga la complejidad del web service del SAT. Fiscalapi expone un endpoint REST para validar CFDI que internamente consulta al SAT y te devuelve el resultado en JSON.
La ventaja es directa: una llamada HTTP estándar con JSON en lugar de SOAP, manejo automático de reintentos, y respuestas consistentes. Si tu stack ya usa la API de Fiscalapi para timbrado o cancelación, la validación se integra con las mismas credenciales y el mismo SDK.
Para despachos contables y sistemas de auditoría que necesitan validar lotes de cientos o miles de CFDIs, la diferencia entre implementar SOAP con reintentos manuales y hacer un loop de llamadas REST es significativa. No es un tema de posibilidad -- ambos caminos llegan al mismo resultado -- sino de tiempo de implementación y mantenimiento.
Validación masiva de CFDI
Hay escenarios donde necesitas validar no una factura sino cientos o miles. Cierres mensuales, auditorías fiscales, migraciones de sistema, o conciliaciones bancarias. En esos casos, el portal del SAT queda descartado de inmediato.
Enfoque directo con el web service del SAT
Implementas un cliente SOAP que itere sobre tu lista de CFDIs y consulte uno por uno. Necesitas manejar: throttling para no saturar al SAT, reintentos con backoff exponencial, logging de resultados parciales en caso de que el proceso se interrumpa, y timeouts generosos porque el servicio es impredecible.
Es viable si tienes equipo de desarrollo y el volumen no justifica pagar por una API de terceros.
Enfoque con API
Usas un servicio como Fiscalapi que maneja el throttling, los reintentos y la disponibilidad por ti. Tu sistema solo necesita iterar sobre los UUIDs y procesar las respuestas JSON. La complejidad del SOAP y la intermitencia del SAT quedan del otro lado de la API.
Si ya integras Fiscalapi para timbrado de facturas o descarga masiva de CFDI, agregar validación es cuestión de una llamada adicional por comprobante.
Errores comunes al validar
Validar factura parece sencillo -- cuatro datos de entrada, un estatus de salida -- pero hay trampas que generan confusión recurrente.
Validar demasiado pronto después de la emisión. Cuando un PAC timbra un CFDI, el registro en la base de datos del SAT no es instantáneo. Hay un periodo de propagación que normalmente es de minutos, pero puede extenderse a horas en periodos de alta carga (fin de mes, cierre de ejercicio). Si consultas un UUID recién timbrado y el SAT responde "no encontrado", no significa que la factura sea falsa. Significa que el SAT aún no la ha indexado.
CFDI cancelado que aparece como vigente. El proceso inverso también ocurre. Un emisor cancela una factura, pero la base del SAT puede tardar en reflejar el cambio de estatus. En la práctica, el delay de cancelación suele ser menor al de emisión, pero existe. Si estás en un proceso de conciliación urgente, valida de nuevo al día siguiente.
Total con decimales incorrectos. El web service del SAT compara el total como string, no como número. Si tu CFDI dice $15,230.00 y tú envías 15230 sin decimales, la consulta falla. Lo mismo ocurre si envías 15230.0 en lugar de 15230.00. Dos decimales, siempre.
El servicio de consulta del SAT tiene ventanas de mantenimiento no anunciadas, particularmente los fines de semana y en los últimos días de cada mes. Si tu proceso de validación masiva depende de disponibilidad continua, implementa una cola de reintentos que pueda pausar y reanudar sin perder progreso.
RFC con régimen de persona física vs moral. Los RFCs de persona física tienen 13 caracteres y los de persona moral tienen 12. Enviar un RFC con espacios al inicio o al final, o con la longitud incorrecta, genera un "no encontrado" que no tiene nada que ver con el CFDI.
El código QR como atajo de validación
Cada representación impresa de un CFDI incluye un código QR que codifica una URL de verificación. Esa URL contiene los datos necesarios para validar el comprobante directamente en el portal del SAT.
El formato de la URL es:
https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=UUID&re=RFCEmisor&rr=RFCReceptor&tt=Total&fe=últimos8caracteresSello
Escanear el QR con cualquier lector abre esta URL en el navegador y muestra el resultado de la validación. Es útil para verificaciones rápidas en campo -- un auditor revisando facturas impresas, un comprador verificando un comprobante que le acaban de entregar. No sustituye la validación programática para volumen, pero es una herramienta práctica que muchas personas desconocen.
Para entender a fondo la estructura del XML que contiene estos datos, revisa la guía sobre CFDI 4.0 y sus campos obligatorios.