Verifica estructura, sellos digitales, vigencia del certificado, estatus en el SAT y listas 69-B de cualquier XML timbrado antes de registrarlo, pagarlo o deducirlo. Una llamada a la API, siete criterios oficiales del SAT, un veredicto auditable por criterio.
Un comprobante puede tener un timbre válido y aun así carecer de efectos fiscales: porque el emisor fue publicado como definitivo en el listado 69-B, porque el comprobante fue cancelado después de entregado, porque el certificado con el que se selló ya había vencido, o porque el XML fue alterado después de firmarse. Ninguna de esas condiciones es visible en el PDF que llega a cuentas por pagar.
Las consecuencias no son técnicas: deducciones rechazadas, IVA no acreditable, créditos fiscales determinados en revisión y un plazo de 30 días hábiles para acreditar materialidad cuando un proveedor entra en lista definitiva. Validar en el momento de la recepción convierte ese riesgo en una decisión informada antes del pago.
Cada validación se solicita por su identificador, se ejecuta contra las fuentes oficiales del SAT y devuelve un estado con su descripción y un resultado/veredicto binario. Tú eliges cuáles ejecutar; la respuesta explica cada veredicto.
sat.xml.structureConfirma que el documento cumple el Anexo 20 de su versión y los complementos declarados. Descarta XML mal formados, truncados o con valores fuera de catálogo antes de que entren a tu ERP.
sat.certificate.validityComprueba que el CFDI fue emitido dentro del periodo de validez del certificado de sello digital. Un comprobante firmado con un certificado vencido no es válido aunque el sello verifique.
sat.cfdi.selloVerifica que el sello corresponda al contenido y al certificado del emisor. Garantiza que el XML que recibiste no se modificó desde que se firmó.
sat.tfd.selloVerifica que el Timbre Fiscal Digital fue emitido por el SAT a través de un PAC autorizado y no fue fabricado ni modificado.
sat.cfdi.statusConsulta el estado actual del comprobante (vigente, cancelado, no encontrado). Es la única forma de detectar cancelaciones posteriores a la entrega.
sat.blacklist.69bIdentifica si el emisor está publicado como Empresa que Facturan Operaciones Simuladas (EFOS), con oficio y fechas de publicación en portal SAT y DOF.
sat.blacklist.69bbisIdentifica emisores publicados por transmisión indebida de pérdidas fiscales. Relevante en operaciones con partes relacionadas y reestructuras corporativas.
GET /api/v4/sat-validations devuelve los criterios disponibles con su descripción, para que tu integración no dependa de documentación externa.Sin configuración previa, sin cargar catálogos ni listas del SAT.
Un POST /api/v4/sat-validations con el comprobante en base64 y la lista de criterios a ejecutar. Si solo necesitas consultar los listados 69-B y 69-B Bis, basta con enviar el RFC.
Cada validación regresa type, status y passed. La descripción del estado incluye los hechos que lo sustentan: oficio, fechas de publicación, número de certificado, respuesta del SAT.
Bloquea el registro, condiciona el pago o abre una revisión con el proveedor, y conserva la respuesta como soporte de auditoría.
Valida solo lo que tu operación necesita: dos criterios para filtrar proveedores en listas negras, los siete para autorizar un pago. El costo cambia con lo que marcas.
Cuerpo de la petición
El CFDI completo en base64. Admite los siete criterios.
Un crédito por criterio validado. Una respuesta http 400 no consume créditos.
Cada resultado trae passed, un booleano que indica si ese criterio se cumplió: true lo cumple, false no.
{
"data": [
{
"type": {
"id": "sat.xml.structure",
"description": "Verifica mediante el servicio oficial de verificación de CFDI del SAT que el XML sea un documento bien formado y cumpla la estructura del Anexo 20 de su versión y la de los complementos declarados en schemaLocation. Detecta atributos obligatorios ausentes, valores fuera de catálogo y patrones inválidos."
},
"status": {
"id": "Valido",
"description": "Documento bien formado que cumple el XSD del Anexo 20 de su versión y los XSD de los complementos declarados en schemaLocation, según el verificador del SAT.",
"details": null
},
"passed": true
},
{
"type": {
"id": "sat.certificate.validity",
"description": "Comprueba que la fecha de emisión del CFDI esté comprendida entre NotBefore y NotAfter del certificado del emisor contenido en Certificado. Un CFDI firmado fuera de la vigencia del certificado carece de validez aunque el sello verifique."
},
"status": {
"id": "Vigente",
"description": "La fecha de emisión del CFDI está comprendida entre NotBefore y NotAfter del certificado del emisor.",
"details": "Emisión 2026-08-18T11:56:42 (hora de México); certificado 30001000000500003416 de EKU9003173C9 vigente del 2023-05-12 al 2027-05-12"
},
"passed": true
},
{
"type": {
"id": "sat.cfdi.sello",
"description": "Verifica mediante el servicio oficial de verificación de CFDI del SAT que el atributo Sello corresponda a la cadena original del comprobante y a la llave pública del certificado contenido en Certificado. Confirma que el contenido no fue alterado después de firmarse y que el firmante posee la llave privada de ese certificado."
},
"status": {
"id": "Valido",
"description": "El verificador del SAT confirma que el atributo Sello verifica contra la cadena original del comprobante con la llave pública del certificado del emisor.",
"details": null
},
"passed": true
},
{
"type": {
"id": "sat.tfd.sello",
"description": "Verifica mediante el servicio oficial de verificación de CFDI del SAT que el atributo SelloSAT del TimbreFiscalDigital corresponda al certificado del SAT identificado por NoCertificadoSAT. Confirma que el timbre fue emitido por el SAT a través de un PAC y no fue fabricado ni modificado."
},
"status": {
"id": "Valido",
"description": "El verificador del SAT confirma que el atributo SelloSAT verifica contra la cadena original del TimbreFiscalDigital con el certificado del SAT identificado por NoCertificadoSAT.",
"details": null
},
"passed": true
},
{
"type": {
"id": "sat.cfdi.status",
"description": "Consulta ConsultaCFDIService del SAT con UUID, RFC emisor, RFC receptor y total, y reporta el estado actual del comprobante. Es la única validación que refleja cancelaciones posteriores a la emisión."
},
"status": {
"id": "Vigente",
"description": "ConsultaCFDIService reporta el comprobante como Vigente; se incluyen EsCancelable y EstatusCancelacion devueltos por el SAT.",
"details": "Estado Vigente; CodigoEstatus S - Comprobante obtenido satisfactoriamente.; EsCancelable Cancelable con aceptación; EstatusCancelacion "
},
"passed": true
},
{
"type": {
"id": "sat.blacklist.69b",
"description": "Busca el RFC del emisor en el listado completo del artículo 69-B CFF y devuelve la situación vigente. Definitivo implica que los CFDI del emisor no producen efectos fiscales y activa el plazo de 30 días hábiles para el receptor."
},
"status": {
"id": "Definitivo",
"description": "El emisor no desvirtuó la presunción y fue publicado en el listado definitivo. Con efectos generales, sus comprobantes no producen ni produjeron efecto fiscal. El receptor cuenta con 30 días hábiles desde la publicación en el DOF para acreditar materialidad o corregirse (art. 69-B, párrafo octavo).",
"details": "RFC EKU9003173C9; corte del listado 2026-07-31"
},
"passed": false
},
{
"type": {
"id": "sat.blacklist.69bbis",
"description": "Busca el RFC del emisor en el listado del artículo 69-B Bis CFF (transmisión indebida del derecho a disminuir pérdidas fiscales) y devuelve la situación vigente. Relevante en operaciones con partes relacionadas y reestructuras."
},
"status": {
"id": "NoListado",
"description": "El RFC del emisor no figura en ninguna etapa del listado del artículo 69-B Bis al corte indicado.",
"details": "RFC EKU9003173C9; corte del listado 2026-06-05"
},
"passed": true
}
],
"succeeded": true,
"message": "",
"details": "",
"httpStatusCode": 200
}Ejemplo con datos fijos: un comprobante que verifica en todo y aun así no produce efectos fiscales, porque el emisor está en el listado 69-B definitivo. Disponible en los SDK oficiales para .NET, TypeScript/Node, Python, PHP y Java, con sandbox de pruebas sin costo.
Un mismo veredicto sirve a finanzas, compras, compliance e ingeniería.
Validar antes de pagar. Cada CFDI de proveedor se verifica al recibirse y el resultado acompaña la orden de pago; los comprobantes de emisores en lista definitiva se detienen antes de generar un pasivo fiscal.
Monitoreo continuo de tu base de proveedores contra los listados 69-B y 69-B Bis, con fechas de publicación para computar plazos legales y documentar la diligencia debida.
Un endpoint, un contrato de respuesta estable y un catálogo consultable. Sin mantener listas del SAT, sin parsear el DOF, sin implementar la verificación criptográfica de sellos y certificados.
Evidencia por comprobante para sustentar deducciones y acreditamientos ante una revisión, y visibilidad temprana del riesgo por proveedor.
Estructura y sellos mediante los servicios de verificación del SAT; estatus mediante el servicio de consulta del SAT; listados 69-B y 69-B Bis tomados de las publicaciones oficiales, con fecha de corte en cada respuesta.
Emisión, descarga masiva y ahora validación con la misma cuenta, las mismas credenciales y los mismos SDK.
Contrato de respuesta fijo, identificadores estables y catálogo público; apto para procesos batch de cierre y para validación en línea al recibir.
Cada veredicto incluye la descripción del estado con los datos que lo fundamentan, lista para archivarse junto al comprobante.
Documentación detallada, SDKs oficiales y herramientas para integrarte rápidamente.
Cada criterio ejecutado cuesta $0.50 MXN con IVA incluido, desde 200 validaciones. Consulta los planes de validación.
Da el siguiente paso
Crea una cuenta de sandbox, envía un XML y recibe el veredicto de los siete criterios en segundos. Sin contrato, sin configuración.