Validar CFDI
Consulta el estado de un Comprobante Fiscal Digital por Internet (CFDI) directamente con el servicio oficial del SAT a partir del UUID, los RFC del emisor y receptor, y el monto total. Devuelve el código de estatus, si es cancelable, el estado actual del CFDI, el estatus de cancelación y la validación EFOS del emisor.
Endpoint
https://api.datosnonstop.com/v1/sat/validar-cfdiParámetros
{
"uuid": "44E5AF40-8E46-4AFE-BA70-64F5CDB4A6DC",
"rfcEmisor": "ABC121109B14",
"rfcReceptor": "DEF900119Q24",
"monto": 162.1
}uuidstringSíFolio fiscal (UUID) de 36 caracteres del CFDI a validar.rfcEmisorstringSíRFC del contribuyente que emitió el CFDI (12 caracteres para personas morales, 13 para personas físicas).rfcReceptorstringSíRFC del contribuyente que recibió el CFDI (12 caracteres para personas morales, 13 para personas físicas).montonumberSíMonto total del CFDI en pesos mexicanos, exactamente como aparece en el comprobante.Ejemplo rápido
Coloca tu API key en el header x-api-key y agrega el header Content-Type: application/json para enviar el body como JSON.
curl -X POST https://api.datosnonstop.com/v1/sat/validar-cfdi \
-H "x-api-key: tu_api_key" \
-H "Content-Type: application/json" \
-d '{"uuid":"44E5AF40-8E46-4AFE-BA70-64F5CDB4A6DC","rfcEmisor":"ABC121109B14","rfcReceptor":"DEF900119Q24","monto":162.1}'Tip
¿Sabías que al pegar un cURL en Postman te crea automáticamente la llamada con todos los elementos?
Token
Cada consulta consume tokens. Lo que no uses, lo conservas — tu saldo se acumula sin fecha de vencimiento ni reinicios. Puedes consultarlo en cualquier momento desde el dashboard o directamente en el header de cada respuesta x-tokens-remaining.
Respuesta
{
"id": "63b5c073cd0f651ec4322403",
"status": "found",
"uuid": "44E5AF40-8E46-4AFE-BA70-64F5CDB4A6DC",
"rfcEmisor": "ABC121109B14",
"rfcReceptor": "DEF900119Q24",
"monto": 162.1,
"codigoEstatus": "S - Comprobante obtenido satisfactoriamente.",
"esCancelable": "Cancelable sin aceptación",
"estado": "Vigente",
"estatusCancelacion": "",
"validacionEfos": "200"
}Respuestas en error
[
{
"type": "format",
"message": "El formato del campo es inválido",
"field": "uuid"
},
{
"type": "format",
"message": "El formato del campo es inválido",
"field": "rfcEmisor"
},
{
"type": "required",
"message": "El campo es requerido",
"field": "monto"
}
]Campos
Campos de entrada
uuidstringFolio fiscal del CFDI en formato UUID estándar (8-4-4-4-12 caracteres hexadecimales separados por guiones). Acepta tanto mayúsculas como minúsculas.rfcEmisorstringRFC del contribuyente que emitió el CFDI. 12 caracteres para personas morales, 13 para personas físicas.rfcReceptorstringRFC del contribuyente a favor del cual se expidió el CFDI. 12 caracteres para personas morales, 13 para personas físicas.montonumberMonto total del CFDI en pesos mexicanos. Debe coincidir exactamente con el valor del campo Total del comprobante.Campos de respuesta
idstringIdentificador interno de la consulta, útil para soporte y trazabilidad.uuidstringFolio fiscal consultado (UUID de 36 caracteres).rfcEmisorstringRFC del emisor enviado en la consulta.rfcReceptorstringRFC del receptor enviado en la consulta.montonumberMonto total del CFDI enviado en la consulta.messagestringDetalle del motivo cuando status es not_found. Solo está presente en respuestas not_found.codigoEstatusstringCódigo de estatus devuelto por el servicio del SAT al consultar el CFDI. Solo está presente cuando status es found. Ver catálogo Código de estatus.esCancelablestringCondición de cancelación del CFDI según el SAT. Solo está presente cuando status es found. Ver catálogo Es cancelable.estadostringEstado actual del CFDI en el SAT. Solo está presente cuando status es found. Ver catálogo Estado.estatusCancelacionstringDetalle del estatus de cancelación cuando estado es Cancelado. Cadena vacía cuando el CFDI sigue vigente. Ver catálogo Estatus de cancelación.validacionEfosstringResultado de la verificación del emisor en la lista de Empresas que Facturan Operaciones Simuladas (artículo 69-B del CFF). Solo está presente cuando status es found. Ver catálogo Validación EFOS.Catálogos
Tablas de referencia para los valores de los campos enumerados en la sección anterior.
Status
Valores posibles del campo status.
foundEl CFDI fue localizado en el SAT con los datos enviados. La respuesta incluye el código de estatus, condición de cancelación, estado, estatus de cancelación y validación EFOS.not_foundEl CFDI no fue localizado en el SAT con los datos enviados. La respuesta incluye el campo message con el detalle.Código de estatus
Valores posibles del campo codigoEstatus que reporta el SAT al consultar el CFDI.
S - Comprobante obtenido satisfactoriamente.El SAT localizó el comprobante con los datos enviados y devolvió la información de validación.N - 601: La expresión impresa proporcionada no es válida.El SAT no pudo validar el comprobante con los datos enviados (UUID, RFC del emisor, RFC del receptor o monto incorrectos).Es cancelable
Valores posibles del campo esCancelable según las reglas de cancelación de CFDI 4.0.
Cancelable sin aceptaciónEl emisor puede cancelar el CFDI sin requerir la aprobación del receptor.Cancelable con aceptaciónEl emisor solo puede cancelar el CFDI si el receptor aprueba la solicitud en el Buzón Tributario.No cancelableEl CFDI no puede ser cancelado en este momento conforme a las reglas del SAT.Estado
Valores posibles del campo estado que reporta el SAT sobre la vigencia del CFDI.
VigenteEl CFDI se encuentra activo y no ha sido cancelado.CanceladoEl CFDI ha sido cancelado ante el SAT. El detalle del proceso aparece en estatusCancelacion.Estatus de cancelación
Valores posibles del campo estatusCancelacion cuando el CFDI fue cancelado. Es una cadena vacía cuando el CFDI sigue vigente.
El CFDI no ha sido cancelado (estado Vigente).Cancelado sin aceptaciónEl CFDI fue cancelado por el emisor sin requerir la aprobación del receptor.Cancelado con aceptaciónEl CFDI fue cancelado por el emisor con la aprobación expresa del receptor en el Buzón Tributario.Plazo vencidoEl CFDI fue cancelado al vencer el plazo de respuesta del receptor sin que se manifestara una aceptación o rechazo.Validación EFOS
Resultado del campo validacionEfos al verificar al emisor en el listado de contribuyentes con operaciones presuntamente inexistentes (EFOS, artículo 69-B del CFF).
200El emisor no aparece en el listado EFOS publicado por el SAT.PRESUNTOEl emisor está en la lista preliminar de Empresas que Facturan Operaciones Simuladas (presuntos).DESVIRTUADOEl emisor desvirtuó la presunción de operaciones inexistentes y fue retirado de la lista.DEFINITIVOEl emisor fue confirmado como Empresa que Factura Operaciones Simuladas en la lista definitiva.SENTENCIA FAVORABLEEl emisor obtuvo una sentencia favorable que lo retiró de la lista definitiva.GLOSADOEl emisor fue retirado de la lista definitiva por revisión administrativa.Histórico
Endpoint
https://api.datosnonstop.com/v1/sat/validar-cfdi/historico/{id}El {id} corresponde al campo id devuelto en la respuesta de la consulta principal.
Si necesitas la lista completa de elementos almacenados, accede a tu dashboard.
La respuesta está sujeta al tiempo de almacenamiento de tu plan. Si requieres más tiempo, cambia de plan en tu dashboard.
Respuesta
{
"id": "63b5c073cd0f651ec4322403",
"status": "found",
"uuid": "44E5AF40-8E46-4AFE-BA70-64F5CDB4A6DC",
"rfcEmisor": "ABC121109B14",
"rfcReceptor": "DEF900119Q24",
"monto": 162.1,
"codigoEstatus": "S - Comprobante obtenido satisfactoriamente.",
"esCancelable": "Cancelable sin aceptación",
"estado": "Vigente",
"estatusCancelacion": "",
"validacionEfos": "200"
}Respuestas en error
[
{
"type": "not_found",
"message": "el id no fue encontrado en el historico"
}
]Sandbox
Endpoint
https://sandbox.api.datosnonstop.com/v1/sat/validar-cfdiPara llamar al sandbox necesitas una API key de sandbox que puedes generar en el dashboard.
curl -X POST https://sandbox.api.datosnonstop.com/v1/sat/validar-cfdi \
-H "x-api-key: tu_api_key_sandbox" \
-H "Content-Type: application/json" \
-d '{"uuid":"44E5AF40-8E46-4AFE-BA70-64F5CDB4A6DC","rfcEmisor":"ABC121109B14","rfcReceptor":"DEF900119Q24","monto":162.1}'Casos de prueba
Si envías un valor que no esté en la lista, el sandbox devuelve automáticamente una respuesta exitosa con la misma estructura que la de ABC121109B14.
rfcEmisorABC121109B14rfcEmisorABD131110A27rfcEmisorCCCC000000C03rfcEmisorDDDD000000D04rfcEmisorEEEE000000E05Endpoint histórico
https://sandbox.api.datosnonstop.com/v1/sat/validar-cfdi/historico/{id}Para llamar al sandbox necesitas una API key de sandbox que puedes generar en el dashboard.
curl https://sandbox.api.datosnonstop.com/v1/sat/validar-cfdi/historico/63b5c073cd0f651ec4322403 \ -H "x-api-key: tu_api_key_sandbox"
Casos de prueba histórico
Si envías un valor de id que no esté en la lista, el sandbox devuelve automáticamente una respuesta exitosa con la misma estructura que la de 63b5c073cd0f651ec4322403.
63b5c073cd0f651ec43224030000000000000000ffffffff1111111111111111aaaaaaaa2222222222222222bbbbbbbb