📘 2025 Report:Mexico Economic Review 2025 — outlook, charts, and sector signalsRead

    Integración con la API del SAT en México

    Conecte datos fiscales del SAT a su producto vía CIEC: endpoints clave, respuestas JSON, monitoreo continuo y FAQ técnico — todo en un solo hub.

    Recursos para desarrolladores

    Cinco recursos, cinco propósitos. Elija el que coincida con dónde está en su integración.

    Qué expone la API del SAT

    El SAT (Servicio de Administración Tributaria de México) ofrece servicios SOAP autenticados para acceder a datos fiscales del contribuyente. Estos incluyen CFDI emitidos y recibidos, opinión de cumplimiento 32-D, constancia de situación fiscal, regímenes y obligaciones fiscales, lista 69-B (EFOS/EDOS) y validación de RFC. La integración directa requiere manejo de credenciales, parsing de XML/SOAP, gestión de tokens de sesión y manejo de las ventanas de mantenimiento del SAT.

    CRiskCo abstrae toda esta complejidad detrás de una API REST/JSON moderna con autenticación apiId/apiKey, webhooks, retries automáticos y monitoreo continuo. Es la forma estándar utilizada por bancos, SOFOMs, fintechs y firmas contables en México para conectar datos del SAT a sus sistemas.

    Métodos de autorización del SAT: CIEC y e.firma

    El SAT permite dos formas de autorizar el acceso a datos fiscales. Aquí explicamos ambas y cuál utiliza CRiskCo hoy.

    CRiskCo opera el onboarding al SAT con CIEC

    Hoy aceptamos únicamente la contraseña CIEC del contribuyente. No requerimos ni almacenamos archivos .cer/.key de e.firma. La CIEC es suficiente para todos los servicios que ofrecemos: extracción de CFDI, validación de RFC, opinión de cumplimiento 32-D, constancia fiscal, FinScore y monitoreo continuo.

    Atributo CIEC e.firma
    Qué es Contraseña SAT alfanumérica (8 caracteres) Certificado digital (.cer + .key + contraseña)
    Vigencia Indefinida (hasta que el contribuyente la cambie) 4 años, renovable
    Permite firmar documentos No Sí (firma electrónica avanzada)
    Lectura de datos fiscales Sí (CFDI, RFC, regímenes, opinión 32-D, constancia) Sí (mismos datos)
    Soportado por CRiskCo hoy No

    Flujo de onboarding (CIEC)

    1. 1Recolectar RFC, contraseña CIEC, email y aceptación de términos del contribuyente.
    2. 2Llamar POST /OnboardingSatIntegration con el payload {IsAgreeTerms, DateAgreeTerms, VersionAgreeTerms, Email, User, Password, RefApplicantId}.
    3. 3Hacer polling cada 5–10 segundos a GET /get-applicants?taxId=RFC&onboardingStatus=true hasta status='Available'.
    4. 4Llamar los endpoints de datos: /applicantinfo, /GetCompanyTaxStatus, /GetCompanyFiscalDetails, /GetHistoricalFinscore.
    5. 5Registrar webhook con POST /Subscriptions para recibir actualizaciones automáticas.

    Snippets ejecutables en Ejemplos de Código.

    Endpoints clave con respuestas JSON

    Base URL: https://service.criskco.com/apiservice.svc. Headers obligatorios en cada llamada: apiId, apiKey, Content-Type: application/json.

    OnboardingSatIntegration

    Onboarding del aplicante con su contraseña CIEC.

    Solicitud
    POST /apiservice.svc/OnboardingSatIntegration
    Headers: apiId, apiKey, Content-Type: application/json
    
    {
      "IsAgreeTerms": true,
      "DateAgreeTerms": "2026-04-16",
      "VersionAgreeTerms": "1",
      "Email": "contact@empresa.com",
      "User": "GAPXXXXXXXXX",
      "Password": "CIEC_PASSWORD",
      "RefApplicantId": "loan-app-00482"
    }
    Respuesta
    {
      "success": true,
      "applicantId": "1000143693",
      "RefApplicantId": "loan-app-00482",
      "message": "Applicant onboarding initiated"
    }

    GET /get-applicants

    Lista aplicantes y su estado de onboarding (polling después de OnboardingSatIntegration).

    Solicitud
    GET /apiservice.svc/get-applicants?taxId=GAPXXXXXXXXX&onboardingStatus=true
    
    Query params: refApplicantId · taxId · onboardingStatus · fullResponse
    Respuesta
    {
      "responseDetails": "Data retrieved successfully",
      "success": true,
      "ApiApplicantData": {
        "applicantId": "1000143693",
        "taxId": "GAPXXXXXXXXX",
        "onboardingStatus": "Available"
      }
    }
    // Use fullResponse=true for the complete dataset (financials, blackLists).
    // See full schema at api-docs.criskco.com.

    GET /ValidateRFC

    Valida un RFC contra el SAT (existencia, estatus y coincidencia de nombre).

    Solicitud
    GET /apiservice.svc/ValidateRFC?rfc=GAPXXXXXXXXX&name=GAP&postal=06600
    Respuesta
    {
      "Success": true,
      "message": "RFC valid and active",
      "rfc": "GAPXXXXXXXXX"
    }

    POST /ValidateRFCBulk

    Validación masiva: hasta 5,000 RFCs en una sola llamada (texto plano, un RFC por línea).

    Solicitud
    POST /apiservice.svc/ValidateRFCBulk
    Headers: apiId, apiKey
    Content-Type: multipart/form-data
    
    file=@rfcs.txt   // one RFC per line, or RFC|Name|Postal pipe-separated
    Respuesta
    // Returns plain-text results, one line per RFC.
    // See API Docs for the exact format and runnable snippets in Code Samples.

    GET /GetCompanyTaxStatus

    Opinión de Cumplimiento (32-D). Devuelve PayingTax (POSITIVO/NEGATIVO) y obligaciones pendientes.

    Solicitud
    GET /apiservice.svc/GetCompanyTaxStatus?taxId=GAPXXXXXXXXX
    Respuesta
    {
      "CompanyTaxStatus": [
        {
          "taxId": "GAPXXXXXXXXX",
          "PayingTax": "NEGATIVO",
          "RetrievedAt": "2026-04-15T08:30:00Z",
          "CompanyObligationsList": [
            { "Obligation": "ISR Mensual", "Month": 2, "Year": 2026 },
            { "Obligation": "IVA Mensual", "Month": 2, "Year": 2026 }
          ]
        }
      ]
    }

    GET /GetCompanyFiscalDetails

    Constancia de Situación Fiscal: razón social, regímenes, obligaciones y domicilio fiscal.

    Solicitud
    GET /apiservice.svc/GetCompanyFiscalDetails?taxId=GAPXXXXXXXXX
    Respuesta
    // Shape varies. See full reference at api-docs.criskco.com.
    // Includes: legalName, regimes[], obligations[], fiscalAddress, registrationDate.

    GET /GetHistoricalFinscore

    Histórico mensual del FinScore (modelo de crédito propietario de CRiskCo).

    Solicitud
    GET /apiservice.svc/GetHistoricalFinscore?taxId=GAPXXXXXXXXX
    Respuesta
    // Returns a HistoricalFinscores array with monthly entries
    // (Year, Month, FinScore). See full schema at api-docs.criskco.com.

    POST /Subscriptions

    Registra un webhook para recibir actualizaciones del aplicante (FileType: JSON o JSON_LINK).

    Solicitud
    POST /apiservice.svc/Subscriptions
    Headers: apiId, apiKey, Content-Type: application/json
    { "CallbackUrl": "https://yourdomain.com/webhooks/criskco" }
    
    // CRiskCo issues a GET to CallbackUrl for validation —
    // your server must reply HTTP 200 within 2 seconds.
    Respuesta
    {
      "success": true,
      "responseDetails": "Subscription 1 created successfully",
      "ApiSubscriptionData": [
        {
          "Active": true,
          "CallbackUrl": "https://yourdomain.com/webhooks/criskco",
          "ReferrerId": "your_referrer_id",
          "SubscriptionId": 1
        }
      ]
    }

    Catálogo completo de endpoints en la Guía de Integración API y referencia detallada en api-docs.criskco.com.

    Preguntas frecuentes

    Respuestas técnicas a las preguntas más comunes sobre la integración con la API del SAT.

    Listo para integrar la API del SAT

    Obtenga credenciales sandbox gratuitas y empiece a probar en minutos. Sin tarjeta de crédito.

    Explorar Más