1.Autenticación
/api/auth · Sin versión · AllowAnonymousFlujo: 1) Inicia sesión en web.sat-go.com → 2) Llama POST /api/v1/users/CreateKey para obtener tu API Key → 3) Usa esa key aquí para obtener el JWT que irá en Authorization: Bearer <token>.
/api/auth/token
Obtiene el JWT usando la API Key (query param)
Si no tienes la key, ve a web.sat-go.com, inicia sesión y ejecuta /api/v1/users/CreateKey primero.
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| key | Query | string | ✓ | API Key generada con /users/CreateKey |
Respuestas
TokenResponse401 stringEjemplo 200 OK
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjMiLCJlbWFpbCI6InVzZXJAc2F0LWdvLmNvbSIsImV4cCI6MTc4MDAwMDAwMH0.signature",
"expiresAt": "2026-12-31T00:00:00Z",
"tokenType": "Bearer"
}401: "Invalid key"| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| key | Body JSON | string | ✓ | API Key generada con /users/CreateKey |
Respuestas
TokenResponse400 string401 stringEjemplo 200 OK
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresAt": "2026-12-31T00:00:00Z",
"tokenType": "Bearer"
}400: "Key is required"401: "Invalid key"2.Usuarios
/api/v1/users · Requiere: Authorization: Bearer <token>/api/v1/users/CreateKey
Genera la API Key del usuario autenticado
La key generada se usa en /api/auth/token para obtener un JWT de larga duración.
Sin parámetros. La identidad se toma del JWT del header Authorization.
Respuestas
{ key: string }400 stringEjemplo 200 OK
{ "key": "hW3kP9mQzR7vXnL2cE5tYuA4sBjDfGhIoJkLmNp==" }400: "Invalid token claims"Sin parámetros adicionales.
Respuestas
UserFiscalDataDto401 string500 stringEjemplo 200 OK
{
"rfc": "XAXX010101ABC",
"razonSocial": "Mi Empresa SA de CV",
"codigoPostal": "06600",
"regimenFiscal": "612",
"emailFacturacion": "facturacion@miempresa.com"
}401: "UserUuid not found in token."500: "Internal server error: Connection timeout"/api/v1/users/fiscal-data
Guarda o actualiza los datos fiscales del usuario autenticado
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| rfc | Body JSON | string | – | RFC del usuario |
| razonSocial | Body JSON | string | – | Nombre o razón social |
| codigoPostal | Body JSON | string | – | Código postal fiscal |
| regimenFiscal | Body JSON | string | – | Clave del régimen fiscal (ej. "612") |
| emailFacturacion | Body JSON | string | – | Correo para recibir facturas |
Respuestas
UserFiscalDataDto401 string500 stringEjemplo 200 OK (devuelve el objeto actualizado)
{
"rfc": "XAXX010101ABC",
"razonSocial": "Mi Empresa SA de CV",
"codigoPostal": "06600",
"regimenFiscal": "612",
"emailFacturacion": "nuevo@miempresa.com"
}401: "UserUuid not found in token."3.Proveedor de Secretos
/api/v1/secretprovider · Requiere: Authorization: Bearer <token>Permite guardar la CIEC y/o la FIEL en un Key Vault propio del cliente (CrossTenant) o gestionado por SatGo (SatGoManaged). Una vez configurado, los endpoints del SAT no requieren el header Secret ni los archivos FIEL.
¿Primera vez con Azure? Sigue la guía paso a paso →
Desde crear la suscripción hasta registrar la llave: crear el Key Vault, autorizar a SatGo e importar tu FIEL. Sin conocimientos previos.
/api/v1/secretprovider/identity
Devuelve las opciones de configuración disponibles (CrossTenant y SatGoManaged)
Respuestas
object (guía)Ejemplo 200 OK
{
"options": {
"CrossTenant": "Registra tu propio Azure Key Vault. SatGo necesita acceso de lectura.",
"SatGoManaged": "SatGo almacena el secreto cifrado en su propio vault."
},
"secretEndpoints": { "crossTenant": "POST /secret/register", "satGoManaged": "POST /secret/store" },
"signingKeyEndpoints": { "crossTenant": "POST /signing-key/register", "satGoManaged": "POST /signing-key/store" }
}CIEC — Secreto
/api/v1/secretprovider/secret/register
Registra la referencia a la CIEC en el vault propio del cliente (CrossTenant)
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| rfc | Body JSON | string | ✓ | RFC del contribuyente |
| providerType | Body JSON | string | ✓ | AzureKeyVault | AwsSecretsManager | HashiCorpVault |
| providerUri | Body JSON | string (HTTPS) | ✓ | URI del vault. Ej: https://mi-vault.vault.azure.net/ |
| secretName | Body JSON | string | ✓ | Nombre del secreto dentro del vault |
| providerOptions | Body JSON | string (JSON) | – | Opciones adicionales. Ej: {"tenantId":"..."} |
Respuestas
object400401404Ejemplo 200 OK
{
"rfc": "XAXX010101ABC",
"providerType": "AzureKeyVault",
"providerUri": "https://mi-vault.vault.azure.net/",
"secretName": "ciec-xaxx010101abc",
"message": "Proveedor de secreto registrado correctamente."
}400: "El campo 'providerUri' debe ser una URL HTTPS válida."/api/v1/secretprovider/secret/store
Guarda la CIEC en el vault gestionado por SatGo (SatGoManaged)
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| rfc | Body JSON | string | ✓ | RFC del contribuyente |
| secretValue | Body JSON | string | ✓ | Valor de la CIEC. Nunca se devuelve en ninguna respuesta. |
Respuestas
object400401404503Ejemplo 200 OK
{
"rfc": "XAXX010101ABC",
"providerType": "SatGoManaged",
"secretName": "satgo-ciec-xaxx010101abc",
"message": "CIEC almacenada correctamente en el vault de SatGo."
}503: "El servicio de vault no está disponible en este momento."/api/v1/secretprovider/{rfc}
Elimina el proveedor de secretos de un RFC
Si era SatGoManaged, también elimina el secreto del vault de SatGo.
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| rfc | Route | string | ✓ | RFC del contribuyente |
Respuestas
object400401404503Ejemplo 200 OK
{ "rfc": "XAXX010101ABC", "message": "Proveedor de secreto eliminado correctamente." }404: "No se encontró proveedor de secreto para el RFC especificado."/api/v1/secretprovider/{rfc}/status
Consulta el estado del proveedor de secretos de un RFC
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| rfc | Route | string | ✓ | RFC del contribuyente |
Respuestas
object401404Ejemplo 200 OK
{
"rfc": "XAXX010101ABC",
"isRegistered": true,
"providerType": "SatGoManaged",
"providerUri": null,
"secretName": "satgo-ciec-xaxx010101abc",
"updatedAt": "2024-03-15T10:30:00Z"
}FIEL — Llave de Firma
/api/v1/secretprovider/signing-key/register
Registra la llave RSA de la FIEL en el vault propio del cliente (CrossTenant)
Requiere rol 'Key Vault Crypto User'. Futuras peticiones solo necesitan el .cer.
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| rfc | Body JSON | string | ✓ | RFC del contribuyente |
| providerType | Body JSON | string | ✓ | AzureKeyVault | AwsSecretsManager | HashiCorpVault |
| providerUri | Body JSON | string | ✓ | URI del vault |
| keyName | Body JSON | string | ✓ | Nombre de la llave RSA en el vault |
| keyOptions | Body JSON | string (JSON) | – | Ej: {"tenantId":"..."} |
Respuestas
object400401404Ejemplo 200 OK
{
"rfc": "XAXX010101ABC",
"providerType": "AzureKeyVault",
"providerUri": "https://mi-vault.vault.azure.net/",
"keyName": "fiel-rsa-xaxx010101abc",
"message": "Llave de firma registrada correctamente."
}/api/v1/secretprovider/signing-key/store
Importa la FIEL (.cer + .key en base64) al vault gestionado por SatGo
SatGo genera un PKCS12 y lo importa en su vault. Futuras peticiones solo necesitan el .cer.
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| rfc | Body JSON | string | ✓ | RFC del contribuyente |
| cerFileBase64 | Body JSON | string (base64) | ✓ | Bytes del .cer (DER o PEM) codificados en base64 |
| keyFileBase64 | Body JSON | string (base64) | ✓ | Bytes del .key (PKCS#8 DER) en base64. Nunca se devuelve. |
| password | Body JSON | string | – | Contraseña del .key (omitir si no tiene contraseña) |
Respuestas
object400401404503Ejemplo 200 OK
{
"rfc": "XAXX010101ABC",
"providerType": "SatGoManaged",
"certName": "satgo-fiel-xaxx010101abc",
"message": "FIEL importada y almacenada correctamente en el vault de SatGo."
}400: "El .cer proporcionado no es válido o está expirado."/api/v1/secretprovider/signing-key/{rfc}
Elimina el proveedor de firma de un RFC
Si era SatGoManaged, también elimina la llave del vault de SatGo.
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| rfc | Route | string | ✓ | RFC del contribuyente |
Respuestas
object400401404503Ejemplo 200 OK
{ "rfc": "XAXX010101ABC", "message": "Proveedor de firma eliminado correctamente." }/api/v1/secretprovider/signing-key/{rfc}/status
Consulta el estado del proveedor de firma de un RFC
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| rfc | Route | string | ✓ | RFC del contribuyente |
Respuestas
object401404Ejemplo 200 OK
{
"rfc": "XAXX010101ABC",
"isRegistered": true,
"providerType": "SatGoManaged",
"keyName": "satgo-fiel-xaxx010101abc",
"updatedAt": "2024-03-15T10:30:00Z"
}Cifrado de la FIEL (JWE)
/api/v1/secretprovider/fiel-encryption-key
Devuelve la llave pública para cifrar la FIEL antes de enviarla (modalidad opcional)
Con esta llave pública el cliente cifra la llave privada (.key/.pfx) y la contraseña como JWE (RSA-OAEP-256 + A256GCM) y las envía con el header X-Fiel-Encryption: JWE. El .cer va en claro.
Modalidad opcional de seguridad extra: SatGo descifra en memoria con una llave RSA que vive en su Key Vault (cargada una sola vez al arrancar). Aplica a todos los endpoints FIEL de /consultar y de /SatWebService. Si la feature no está habilitada en el entorno, responde 503. Guía práctica para generar los JWE (desde el navegador o por línea de comandos): /cifrar-efirma.
Respuestas
object (JWK + PEM + instrucciones)401503Ejemplo 200 OK
{
"description": "Cifra cada campo sensible de la FIEL como un JWE compacto independiente...",
"algorithm": { "alg": "RSA-OAEP-256", "enc": "A256GCM" },
"header": { "name": "X-Fiel-Encryption", "value": "JWE" },
"fields": [
"llavePrivada: JWE cuyo plaintext son los bytes crudos del .key (sube el JWE como contenido del archivo).",
"Pfx: JWE cuyo plaintext son los bytes crudos del .pfx.",
"Contrasena: JWE cuyo plaintext es la contraseña (string).",
"Certificado (.cer): SIEMPRE en claro; es material público."
],
"kid": "0059F2C6AA62FB6BFC64902C52DFA7CB56B2F217",
"jwk": { "kty": "RSA", "use": "enc", "alg": "RSA-OAEP-256", "enc": "A256GCM", "kid": "...", "n": "...", "e": "AQAB" },
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----\n"
}503: "El cifrado JWE de la FIEL no está habilitado en este entorno."4.Consultar SAT (CIEC / FIEL)
/api/v2/consultar · Requiere: Authorization: Bearer <token> + RFC: <rfc>Headers comunes: Authorization: Bearer <token> | RFC: XAXX010101ABC
Endpoints CIEC también requieren: Secret: <contraseña-ciec> (o configurar SecretProvider).
Endpoints FIEL reciben archivos como multipart/form-data: Pfx + Contrasena ó Certificado + llavePrivada + Contrasena.
Opcionalmente puedes cifrar la llave y la contraseña (JWE RSA-OAEP-256 + A256GCM) con el header X-Fiel-Encryption: JWE — ver Cómo cifrar tu e.firma.
Opinión de Cumplimiento
/api/v2/consultar/imssoc
Obtiene la opinión de cumplimiento del IMSS
Se conecta directo al IMSS. Solo requiere RFC (no necesita CIEC).
Sin parámetros adicionales. Solo headers comunes (sin Secret).
Respuestas
application/pdf400 stringOpinionCumplimientoIMSS.pdf
Content-Type: application/pdf
400: "No se pudo obtener la opinión de cumplimiento del IMSS. Verifique el RFC."Requiere header Secret (CIEC).
Respuestas
application/pdf400 stringOpinionCumplimiento.pdf
Content-Type: application/pdf
400: "Error al autenticar con el SAT. Verifique su CIEC."/api/v2/consultar/ocpublico
Obtiene la opinión de cumplimiento pública del SAT (solo RFC)
Sin Secret. Solo header RFC.
Respuestas
application/pdf400 stringOpinionCumplimientoPublico.pdf
Content-Type: application/pdf
Opción A — PFX (PKCS#12)
| Campo | Tipo | Descripción |
|---|---|---|
| Pfx | file | Archivo .pfx / .p12 (PKCS#12 que incluye cert + llave privada) |
| Contrasena | string | Contraseña del archivo PFX |
Opción B — Certificado + Llave privada
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer del SAT (DER o PEM) |
| llavePrivada | file | Archivo .key del SAT (PKCS#8 DER) |
| Contrasena | string | Contraseña de la llave privada |
Opción C — Solo certificado (llave en SecretProvider)
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer. La llave privada se toma del Key Vault registrado en /secretprovider/signing-key |
🔒 Cifrado opcional (recomendado): puedes enviar llavePrivada / Pfx y Contrasena cifrados como JWE compacto (RSA-OAEP-256 + A256GCM) agregando el header X-Fiel-Encryption: JWE. El certificado .cer es público y siempre va en claro. Guía paso a paso (navegador o línea de comandos) en Cómo cifrar tu e.firma.
Respuestas
application/pdf400 stringOpinionCumplimiento.pdf
Content-Type: application/pdf
Autenticación con FIEL. Mayor validez oficial que la consulta con CIEC.
400: "El certificado FIEL ha expirado o no coincide con el RFC."/api/v2/consultar/oc/validar-pdf
Valida la autenticidad de un PDF de Opinión de Cumplimiento
Extrae RFC, folio, sentido y URL del QR, consulta el validador del SAT y compara los datos.
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| form-data | file (application/pdf) | ✓ | PDF de la Opinión de Cumplimiento a validar |
Respuestas
OcPdfValidacionResult400 stringEjemplo 200 OK
{
"datosDelPdf": {
"nombre": "JUAN PEREZ GARCIA",
"rfc": "PEGJ800101ABC",
"folio": "F2024001234",
"fecha": "15/01/2024",
"sentido": "POSITIVO",
"qrUrl": "https://omawww.sat.gob.mx/.../validar.aspx?id=F2024001234"
},
"validacionSat": {
"esValido": true,
"folio": "F2024001234",
"rfc": "PEGJ800101ABC",
"sentido": "POSITIVO",
"errorMessage": null
},
"datosCoinciden": true
}400: "El archivo no es una Opinión de Cumplimiento del SAT válida."Constancia de Situación Fiscal
Requiere header Secret (CIEC). Reintenta hasta 3 veces automáticamente.
Respuestas
application/pdf400 stringConstanciaFiscal.pdf
Content-Type: application/pdf
Incluye datos de identificación y ubicación fiscal.
400: "CIEC incorrecta o sesión SAT expirada después de 3 intentos."Opción A — PFX (PKCS#12)
| Campo | Tipo | Descripción |
|---|---|---|
| Pfx | file | Archivo .pfx / .p12 (PKCS#12 que incluye cert + llave privada) |
| Contrasena | string | Contraseña del archivo PFX |
Opción B — Certificado + Llave privada
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer del SAT (DER o PEM) |
| llavePrivada | file | Archivo .key del SAT (PKCS#8 DER) |
| Contrasena | string | Contraseña de la llave privada |
Opción C — Solo certificado (llave en SecretProvider)
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer. La llave privada se toma del Key Vault registrado en /secretprovider/signing-key |
🔒 Cifrado opcional (recomendado): puedes enviar llavePrivada / Pfx y Contrasena cifrados como JWE compacto (RSA-OAEP-256 + A256GCM) agregando el header X-Fiel-Encryption: JWE. El certificado .cer es público y siempre va en claro. Guía paso a paso (navegador o línea de comandos) en Cómo cifrar tu e.firma.
Respuestas
application/pdf400 string{rfc}-constancia_situacion_fiscal.pdf
Content-Type: application/pdf
Comunicados y Notificaciones
/api/v2/consultar/comunicadosfiel
Obtiene los comunicados del portal del SAT usando la FIEL
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| descargar | Query | bool | – | true = descarga el PDF del acuse; false = solo devuelve el título (default: true) |
Opción A — PFX (PKCS#12)
| Campo | Tipo | Descripción |
|---|---|---|
| Pfx | file | Archivo .pfx / .p12 (PKCS#12 que incluye cert + llave privada) |
| Contrasena | string | Contraseña del archivo PFX |
Opción B — Certificado + Llave privada
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer del SAT (DER o PEM) |
| llavePrivada | file | Archivo .key del SAT (PKCS#8 DER) |
| Contrasena | string | Contraseña de la llave privada |
Opción C — Solo certificado (llave en SecretProvider)
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer. La llave privada se toma del Key Vault registrado en /secretprovider/signing-key |
🔒 Cifrado opcional (recomendado): puedes enviar llavePrivada / Pfx y Contrasena cifrados como JWE compacto (RSA-OAEP-256 + A256GCM) agregando el header X-Fiel-Encryption: JWE. El certificado .cer es público y siempre va en claro. Guía paso a paso (navegador o línea de comandos) en Cómo cifrar tu e.firma.
Respuestas
ComunicadosResult400 stringEjemplo 200 OK
{
"success": true,
"errorMessage": null,
"totalComunicados": 2,
"totalArchivosDescargados": 2,
"comunicados": [
{
"id": "COM-2024-001",
"titulo": "Actualización de datos en el RFC",
"fechaComunicado": "15/Mar/2024 10:30 hrs",
"fileName": "comunicado_2024_001.pdf",
"fechaDescarga": "2024-03-15T10:30:00",
"descargaExitosa": true,
"esLeido": false
}
]
}/api/v2/consultar/notificacionesfiel
Obtiene las notificaciones del portal del SAT usando la FIEL
Soporta reutilizar sesión con requestId para no reautenticar en llamadas sucesivas (paginación).
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| requestId | Query | string (GUID) | – | ID de sesión previo. Omitir en la primera llamada. |
| tipoNotificacion | Query | string | – | notificadas | pendientes (default: notificadas) |
| descargarNotificaciones | Query | bool | – | true = descarga PDFs; false = solo metadata (default: false) |
Opción A — PFX (PKCS#12)
| Campo | Tipo | Descripción |
|---|---|---|
| Pfx | file | Archivo .pfx / .p12 (PKCS#12 que incluye cert + llave privada) |
| Contrasena | string | Contraseña del archivo PFX |
Opción B — Certificado + Llave privada
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer del SAT (DER o PEM) |
| llavePrivada | file | Archivo .key del SAT (PKCS#8 DER) |
| Contrasena | string | Contraseña de la llave privada |
Opción C — Solo certificado (llave en SecretProvider)
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer. La llave privada se toma del Key Vault registrado en /secretprovider/signing-key |
🔒 Cifrado opcional (recomendado): puedes enviar llavePrivada / Pfx y Contrasena cifrados como JWE compacto (RSA-OAEP-256 + A256GCM) agregando el header X-Fiel-Encryption: JWE. El certificado .cer es público y siempre va en claro. Guía paso a paso (navegador o línea de comandos) en Cómo cifrar tu e.firma.
Respuestas
NotificacionesResult400404Ejemplo 200 OK
{
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"success": true,
"totalRegistros": 5,
"paginaActual": 1,
"totalPaginas": 1,
"registrosPorPagina": 10,
"notificaciones": [
{ "folio": "NOT-2024-001", "autoridad": "SAT", "acto": "Requerimiento de información", "fecha": "10/03/2024", "pdfDescargado": false },
{ "folio": "NOT-2024-002", "autoridad": "SAT", "acto": "Resolución", "fecha": "12/03/2024", "pdfDescargado": true, "pdfFileName": "notificacion.pdf",
"actoAdministrativoRow": { "pdfDescargado": true, "pdfFileName": "acto_administrativo.pdf" },
"acuseRow": { "pdfDescargado": true, "pdfFileName": "acuse.pdf" } }
]
}404: "El requestId especificado no existe o ya expiró."Información Fiscal
/api/v2/consultar/informacionfiscal
Obtiene la información fiscal del portal SAT (CIEC)
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| requestId | Query | string (GUID) | – | ID de sesión previa para reutilizar cookies del SAT |
Respuestas
InformacionFiscalResult400 stringEjemplo 200 OK
{
"success": true,
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"datosIdentificacion": {
"fecha": "15/03/2024", "hora": "10:30:45", "situacion": "ACTIVO",
"rfc": "XAXX010101ABC", "nombre": "JUAN PEREZ GARCIA", "curp": "PEGJ800101HDFRZN01"
},
"ubicacionFiscal": {
"entidadFederativa": "CIUDAD DE MEXICO", "municipioDemarcacionTerritorial": "CUAUHTEMOC",
"codigoPostal": "06600", "colonia": "CENTRO", "nombreVialidad": "AV JUAREZ", "numeroExterior": "100"
}
}/api/v2/consultar/informacionfiscalfiel
Obtiene la información fiscal usando la FIEL
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| requestId | Query | string (GUID) | – | ID de sesión previo para reutilizar cookies |
Opción A — PFX (PKCS#12)
| Campo | Tipo | Descripción |
|---|---|---|
| Pfx | file | Archivo .pfx / .p12 (PKCS#12 que incluye cert + llave privada) |
| Contrasena | string | Contraseña del archivo PFX |
Opción B — Certificado + Llave privada
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer del SAT (DER o PEM) |
| llavePrivada | file | Archivo .key del SAT (PKCS#8 DER) |
| Contrasena | string | Contraseña de la llave privada |
Opción C — Solo certificado (llave en SecretProvider)
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer. La llave privada se toma del Key Vault registrado en /secretprovider/signing-key |
🔒 Cifrado opcional (recomendado): puedes enviar llavePrivada / Pfx y Contrasena cifrados como JWE compacto (RSA-OAEP-256 + A256GCM) agregando el header X-Fiel-Encryption: JWE. El certificado .cer es público y siempre va en claro. Guía paso a paso (navegador o línea de comandos) en Cómo cifrar tu e.firma.
Respuestas
InformacionFiscalResult400404Ejemplo 200 OK (misma estructura que /informacionfiscal)
{
"success": true,
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"datosIdentificacion": { "situacion": "ACTIVO", "rfc": "XAXX010101ABC", "nombre": "JUAN PEREZ GARCIA" },
"ubicacionFiscal": { "entidadFederativa": "CIUDAD DE MEXICO", "codigoPostal": "06600" }
}404: "El requestId especificado no existe o ya expiró."Facturas (CFDI)
Requiere header Secret (CIEC).
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| tipo | Query | string | ✓ | emitidos | recibidos |
| tipoBusqueda | Query | TipoBusqueda | ✓ | UUID = 0 | Fecha = 1 |
| UUID | Query | string | – | UUID del CFDI (cuando tipoBusqueda = 0) |
| estatusFactura | Query | int | ✓ | -1 Todos | 0 Cancelados | 1 Vigentes |
| anio | Query | int | ✓ | Año de emisión |
| mes | Query | int | ✓ | Mes (1-12) |
| dia | Query | int | – | Día (0 = todos) |
| requestId | Query | string (GUID) | – | ID de sesión previa |
| descargaComprobantes | Query | bool | – | true = descarga XML |
| descargaPdfs | Query | bool | – | true = descarga PDF de cada CFDI |
| tipoComprobante | Query | TipoComprobante | – | Todos, Estandar, RecepcionPagos, CartaPorte... |
Respuestas
ComprobanteResultV2400404Ejemplo 200 OK
{
"success": true,
"count": 2,
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"folioDescarga": null,
"comprobantes": [
{
"uuid": "6128396f-c09b-4ec6-8699-43c5d7743b8f",
"rfcEmisor": "XAXX010101ABC",
"razonSocialEmisor": "Mi Empresa SA de CV",
"rfcReceptor": "GODE561231GR8",
"fechaEmision": "2024-03-15T10:00:00",
"total": 11600.00,
"estadoDeComprobante": "Vigente"
}
]
}/api/v2/consultar/facfiel
Descarga facturas usando la FIEL con soporte de descarga masiva (solicitaMetadata)
Opción A — PFX (PKCS#12)
| Campo | Tipo | Descripción |
|---|---|---|
| Pfx | file | Archivo .pfx / .p12 (PKCS#12 que incluye cert + llave privada) |
| Contrasena | string | Contraseña del archivo PFX |
Opción B — Certificado + Llave privada
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer del SAT (DER o PEM) |
| llavePrivada | file | Archivo .key del SAT (PKCS#8 DER) |
| Contrasena | string | Contraseña de la llave privada |
Opción C — Solo certificado (llave en SecretProvider)
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer. La llave privada se toma del Key Vault registrado en /secretprovider/signing-key |
🔒 Cifrado opcional (recomendado): puedes enviar llavePrivada / Pfx y Contrasena cifrados como JWE compacto (RSA-OAEP-256 + A256GCM) agregando el header X-Fiel-Encryption: JWE. El certificado .cer es público y siempre va en claro. Guía paso a paso (navegador o línea de comandos) en Cómo cifrar tu e.firma.
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| tipo | Query | string | ✓ | emitidos | recibidos |
| tipoBusqueda | Query | TipoBusqueda | ✓ | UUID = 0 | Fecha = 1 |
| solicitaMetadata | Query | bool | ✓ | true = solicita descarga masiva (devuelve FolioDescarga) |
| estatusFactura | Query | int | ✓ | -1 Todos | 0 Cancelados | 1 Vigentes |
| fecha_inicial / fecha_final | Query | string | – | Formato: yyyy-MM-dd HH:mm:ss |
| descargaComprobantes / descargaPdfs | Query | bool | – | true = descarga XML / PDF |
Respuestas
ComprobanteResultV2400404Ejemplo 200 OK (solicitaMetadata=true)
{
"success": true,
"count": 150,
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"folioDescarga": "FOL_20240315_ABC_001",
"comprobantes": []
}Opción A — PFX (PKCS#12)
| Campo | Tipo | Descripción |
|---|---|---|
| Pfx | file | Archivo .pfx / .p12 (PKCS#12 que incluye cert + llave privada) |
| Contrasena | string | Contraseña del archivo PFX |
Opción B — Certificado + Llave privada
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer del SAT (DER o PEM) |
| llavePrivada | file | Archivo .key del SAT (PKCS#8 DER) |
| Contrasena | string | Contraseña de la llave privada |
Opción C — Solo certificado (llave en SecretProvider)
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer. La llave privada se toma del Key Vault registrado en /secretprovider/signing-key |
🔒 Cifrado opcional (recomendado): puedes enviar llavePrivada / Pfx y Contrasena cifrados como JWE compacto (RSA-OAEP-256 + A256GCM) agregando el header X-Fiel-Encryption: JWE. El certificado .cer es público y siempre va en claro. Guía paso a paso (navegador o línea de comandos) en Cómo cifrar tu e.firma.
Parámetros de query similares a /facfiel (sin tipoComprobante ni descargaPdfs).
Respuestas
RetencionResultV2400404Ejemplo 200 OK
{
"success": true,
"count": 1,
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"folioDescarga": null,
"indices": [
{
"uuid": "6128396f-c09b-4ec6-8699-43c5d7743b8f",
"rfcEmisor": "XAXX010101ABC",
"rfcReceptor": "GODE561231GR8",
"montoTotOperacion": 50000.00,
"montoTotRetenido": 5000.00,
"estado": "Vigente"
}
]
}/api/v2/consultar/descargametadatafiel
Descarga el paquete de metadata de una solicitud masiva (FIEL)
| Parámetro | En | Tipo | Req. | Descripción |
|---|---|---|---|---|
| folioDescarga | Query | string | ✓ | Folio devuelto por /facfiel cuando solicitaMetadata=true |
| requestId | Query | string (GUID) | – | ID de sesión previa |
Opción A — PFX (PKCS#12)
| Campo | Tipo | Descripción |
|---|---|---|
| Pfx | file | Archivo .pfx / .p12 (PKCS#12 que incluye cert + llave privada) |
| Contrasena | string | Contraseña del archivo PFX |
Opción B — Certificado + Llave privada
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer del SAT (DER o PEM) |
| llavePrivada | file | Archivo .key del SAT (PKCS#8 DER) |
| Contrasena | string | Contraseña de la llave privada |
Opción C — Solo certificado (llave en SecretProvider)
| Campo | Tipo | Descripción |
|---|---|---|
| Certificado | file | Archivo .cer. La llave privada se toma del Key Vault registrado en /secretprovider/signing-key |