Documentos

Constancia de Situación Fiscal PDF

Descarga la Constancia de Situación Fiscal (CSF) vigente del contribuyente. Acepta CIEC o e.firma.

POST https://subalans.com/api/v1/constancia
Petición — HTTP completo (CIEC)
POST /api/v1/constancia HTTP/1.1
Host: subalans.com
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "rfc":  "XAXX010101000",
  "ciec": "••••••••"
}
Respuesta 200
{
  "ok": true,
  "rfc": "XAXX010101000",
  "pdf_base64": "JVBERi0xLjQK..."
}
ErrorHTTPCausa
RFC inválido400RFC mal formado.
credencial422CIEC/e.firma incorrecta, vencida o revocada.
tecnico502Portal del SAT inestable — reintentar.
Documentos

Opinión SAT (32D) PDF

Descarga la Opinión de Cumplimiento de obligaciones fiscales (artículo 32-D). Acepta CIEC o e.firma. La respuesta es idéntica en forma a la CSF.

POST https://subalans.com/api/v1/opinion
Petición — HTTP completo (e.firma)
POST /api/v1/opinion HTTP/1.1
Host: subalans.com
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "rfc":      "ACE180101AA1",
  "cer_b64":  "MIIF...==",
  "key_b64":  "MIIE...==",
  "password": "••••••••"
}
Respuesta 200
{ "ok": true, "rfc": "ACE180101AA1", "pdf_base64": "JVBER..." }
Opinión negativa. Si el contribuyente tiene incumplimientos, el SAT igualmente emite el PDF (con sentido negativo). La API te devuelve el documento con ok: true; el sentido se determina al leer el PDF.
Documentos

Opinión IMSS PDF

Descarga la Opinión de Cumplimiento del IMSS, vía el Buzón IMSS. Sólo e.firma. Requiere que el patrón tenga medios de contacto (correo + celular) registrados en el Buzón IMSS.

POST https://subalans.com/api/v1/opinion-imss
Petición — HTTP completo
POST /api/v1/opinion-imss HTTP/1.1
Host: subalans.com
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "rfc":      "ACE180101AA1",
  "cer_b64":  "MIIF...==",
  "key_b64":  "MIIE...==",
  "password": "••••••••"
}
Error codeHTTPCausa
efirma_requerida400No se enviaron los campos de e.firma (IMSS no acepta CIEC).
efirma_invalida422Contraseña o .key incorrectos.
sin_medios_contacto422El RFC no tiene correo+celular en el Buzón IMSS. "…registra y valida al menos 1 correo y 1 celular en el Buzón IMSS."
timeout504El OCSP del SAT no respondió a tiempo — reintentar.
Documentos

Opinión Infonavit PDF

El Portal Empresarial de Infonavit usa usuario + contraseña + NRP, y además valida la e.firma contra el OCSP del SAT para emitir la constancia. Dos operaciones:

1 · Validar credenciales (login-only)

Comprueba que el correo, contraseña y NRP son correctos, sin descargar nada (~10 s).

POST https://subalans.com/api/v1/infonavit/validar
Petición — HTTP completo
POST /api/v1/infonavit/validar HTTP/1.1
Host: subalans.com
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "nrp":               "B1234567890",
  "infonavit_email":    "correo@empresa.com",
  "infonavit_password": "••••••••"
}
Respuesta 200
{ "ok": true, "valida": true, "reason": "ok", "message": "Credenciales Infonavit correctas." }
reason / portalSignificado
0002El correo no tiene una cuenta Infonavit registrada.
0004La contraseña del portal Infonavit es incorrecta.
0005NRP inválido.

2 · Descargar la constancia

Login Infonavit + validación de e.firma → PDF de la Constancia de "sin/con adeudo". Requiere ambas credenciales.

POST https://subalans.com/api/v1/infonavit
Petición — HTTP completo
POST /api/v1/infonavit HTTP/1.1
Host: subalans.com
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "rfc":                "ACE180101AA1",
  "nrp":                "B1234567890",
  "infonavit_email":    "correo@empresa.com",
  "infonavit_password": "••••••••",
  "cer_b64":           "MIIF...==",
  "key_b64":           "MIIE...==",
  "efirma_password":   "••••••••"
}
Latencia. Usa timeout ≥ 180 s. El paso de validación OCSP del SAT es intermitente; un 502 tecnico casi siempre se resuelve reintentando.
Documentos

Buzón Tributario — Notificaciones JSON

Devuelve los metadatos de las notificaciones del Buzón Tributario (folio, autoridad, acto, fecha, estado). No abre los documentos — abrirlos genera un acuse legal de notificación. Acepta CIEC o e.firma.

POST https://subalans.com/api/v1/buzon
Petición — HTTP completo
POST /api/v1/buzon HTTP/1.1
Host: subalans.com
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "rfc":  "ACE180101AA1",
  "tipo": "notificaciones",
  "ciec": "••••••••"           // o cer_b64/key_b64/password
}
Respuesta 200
{
  "ok": true,
  "tipo": "notificaciones",
  "total": 2,
  "pendientes": 1,
  "notificaciones": [
    {
      "folio":     "ABC012345678901",
      "autoridad": "SERVICIO DE ADMINISTRACIÓN TRIBUTARIA",
      "acto":      "...",
      "fecha":     "2026-06-20",
      "estado":    "pendiente"
    }
  ]
}
Sin notificaciones = éxito. Un buzón vacío devuelve ok: true con "total": 0 y "notificaciones": []. No es un error.
Documentos

CFDI — descarga y metadatos ZIP · XML · PDF

Descarga comprobantes emitidos o recibidos, por rango de fechas (en lote) o por UUID individual. Acepta CIEC o e.firma.

Por rango (descarga masiva)

POST https://subalans.com/api/v1/cfdi
CampoTipoDescripción
modulostring"emisor" o "receptor".
anionumberAño (p. ej. 2025).
mesnumber opcional1–12.
dianumber opcionalDía específico.
tipo_masivostring opcional"cfdi" (XML) o "metadata".
Petición — HTTP completo
POST /api/v1/cfdi HTTP/1.1
Host: subalans.com
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "rfc":    "ACE180101AA1",
  "modulo": "emisor",
  "anio":   2025,
  "mes":    10,
  "ciec":   "••••••••"
}
Respuesta 200
{
  "ok": true,
  "items": 38,
  "modo": "masivo",
  "paquetes": [
    { "periodo": "2025-10", "items": 38, "filename": "CFDI_....zip", "zip_base64": "UEsDB..." }
  ],
  "incompletos": []
}

Por UUID (individual)

POST https://subalans.com/api/v1/cfdi
Petición — HTTP completo
POST /api/v1/cfdi HTTP/1.1
Host: subalans.com
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "rfc":  "ACE180101AA1",
  "uuid": "11111111-2222-3333-4444-555555555555",
  "ciec": "••••••••"
}
Respuesta 200
{
  "ok": true,
  "items": 1,
  "files": [
    { "type": "xml", "filename": "...xml", "uuid": "1111...", "base64": "PD94...", "size": 6025 },
    { "type": "pdf", "filename": "...pdf", "uuid": "1111...", "base64": "JVBER...", "size": 46561 }
  ]
}
Periodo sin comprobantes. Si no hay CFDIs en el rango, la respuesta es ok: true con "items": 0 — el login funcionó, simplemente no hubo documentos.
Validación

Listas negras del SAT — EFOS (69-B) JSON

Valida un RFC contra las listas del artículo 69-B y 69-B-Bis (Empresas que Facturan Operaciones Simuladas). No requiere credenciales del contribuyente — sólo el RFC. Respuesta instantánea.

POST https://subalans.com/api/v1/efos
Petición — HTTP completo
POST /api/v1/efos HTTP/1.1
Host: subalans.com
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{ "rfc": "ACE100101AA1" }
Respuesta 200 — listado
{
  "ok": true,
  "rfc": "ACE100101AA1",
  "encontrado": true,
  "es_efos_definitivo": true,
  "estatus": "definitivo",
  "coincidencias": [
    {
      "rfc": "ACE100101AA1",
      "nombre": "EMPRESA DEMO, S.A. DE C.V.",
      "lista": "69b_definitivo",
      "marco": "69-B",
      "oficio_global": "500-05-2024-00000 de fecha 10 de enero de 2024",
      "fecha_publicacion_sat": "2024-01-10",
      "fecha_publicacion_dof": "2024-01-15"
    }
  ],
  "last_refresh": "2026-06-26T12:18:49Z"
}
Respuesta 200 — limpio
{ "ok": true, "rfc": "ACE180101AA1", "encontrado": false, "estatus": "no_listado", "coincidencias": [] }
estatusSignificado fiscal
presuntoPresunción de operaciones simuladas (aún no confirmado).
definitivoEFOS confirmado — sus comprobantes no son deducibles.
exoneradoDesvirtuó la presunción o ganó sentencia favorable.
no_listadoEl RFC no aparece en ninguna lista.
Bandera dura. Usa es_efos_definitivo para bloquear deducciones automáticamente; usa estatus para el matiz (presunto = advertencia, definitivo = bloqueo, exonerado = libre).