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

    Guía de Integración API

    Onboarding, extracción de datos SAT, reportes financieros y webhooks. Todo lo que necesita para integrar CRiskCo.

    Cómo funciona la API

    La API de CRiskCo es centrada en el aplicante. Antes de consultar datos financieros o de cumplimiento, el negocio (el "Aplicante") debe ser onboardeado — ya sea a través de tu propia UI vía API, la página de landing white-label de CRiskCo, o mediante webhooks basados en eventos.

    Tres conceptos clave:

    • Credit Provider — tu plataforma, llamando a la API usando apiId y apiKey.
    • Applicant — el negocio aplicando a crédito. Autorizan acceso de CRiskCo a sus datos del SAT.
    • Customer — un negocio que es cliente del Aplicante (usado para análisis de contraparte).

    Autenticación

    Todas las solicitudes requieren estos headers en cada llamada:

    apiId: YOUR_API_ID
    apiKey: YOUR_API_KEY
    Content-Type: application/json

    apiId y apiKey son emitidos por CRiskCo al registrarte. Las llaves de prueba retornan datos sandbox y no generan costo. No hay cambio de entorno — usa la llave correcta para el modo correcto.

    Obtén tus credenciales de sandbox: Regístrate en api-docs.criskco.com → recibe apiId + apiKey por email.

    Modelos de Integración

    CRiskCo soporta tres modelos de integración. Elige según cuánto control necesites sobre la experiencia de onboarding.

    Modelo Onboarding gestionado por Uso API Mejor para
    Approve API Partner (tu UI) Completo — registro, obtención de datos Bancos y fintechs que quieren control total de UX
    White-Label CRiskCo (página hosted) Mínimo — estado + obtención de datos Despliegue rápido, mínimo trabajo frontend
    Webhook Basado en eventos Gestión de /Subscriptions Automatización en tiempo real, underwriting automatizado

    Modelo A — Approve API (Control Total)

    Recoges las credenciales RFC y CIEC del aplicante en tu propia UI y las envías a CRiskCo vía API.

    Flujo:

    1. Tu app recopila RFC + CIEC del aplicante.
    2. POST /OnboardingSatIntegration para registrar al aplicante y conectar al SAT.
    3. GET /get-applicants para verificar onboardingStatus: "Available".
    4. POST /applicantinfo u otros endpoints para obtener datos.

    Paso 1 — Onboarding vía API

    POST https://service.criskco.com/apiservice.svc/OnboardingSatIntegration
    Headers: apiId, apiKey, Content-Type: application/json
    
    {
      "IsAgreeTerms": true,
      "DateAgreeTerms": "2026-03-24",
      "VersionAgreeTerms": "1",
      "Email": "contact@empresa.com",
      "User": "GAPXXXXXXXXX",
      "Password": "CIEC_PASSWORD",
      "RefApplicantId": "your-internal-ref-123"
    }
    Campo Requerido Descripción
    IsAgreeTerms El aplicante aceptó los términos de CRiskCo
    DateAgreeTerms Fecha de aceptación (ISO 8601)
    VersionAgreeTerms Versión de términos
    Email Email del aplicante
    User RFC del aplicante
    Password CIEC del aplicante (contraseña SAT)
    RefApplicantId Tu referencia interna

    Modelo B — Fintech Solution (Página Hosted)

    Rediriges al aplicante a la página de onboarding de CRiskCo. CRiskCo maneja la conexión y validación SAT. Obtienes datos vía API una vez que el estado es Available.

    Opción 1 — Página de onboarding general (sin configuración white-label)

    Dirige a tus aplicantes a la página estándar de onboarding de CRiskCo y pídeles que ingresen tu código de referencia registrado cuando se les solicite:

    https://app.criskco.com/onboarding/#!/app/referrer-es

    El aplicante ingresa tu código de referencia durante el flujo. CRiskCo asocia el onboarding completado con ese código, que puedes usar para consultar el estado.

    Opción 2 — Página de onboarding white-label (requiere configuración con CRiskCo)

    Si CRiskCo ha provisionado una instancia white-label para tu marca, tu URL dedicada será:

    https://yourbrand.criskco.com/onboarding/#!/app/

    Reemplaza yourbrand con el subdominio asignado por CRiskCo.

    En ambos casos, una vez completado el onboarding, consulta el aplicante usando tu código de referencia:

    GET /get-applicants?refApplicantId=YOUR_SUBSCRIPTION_ID

    No requiere desarrollo frontend. CRiskCo gestiona la integración SAT y el manejo de credenciales.

    Modelo C — Webhook (Basado en Eventos)

    En lugar de hacer polling por estado, CRiskCo envía actualizaciones a tu servidor en el momento en que están listas. Este es el modelo recomendado para plataformas de underwriting automatizado.

    POST https://service.criskco.com/apiservice.svc/Subscriptions
    Headers: apiId, apiKey, Content-Type: application/json
    
    { "CallbackUrl": "https://yourdomain.com/webhooks/criskco" }

    Validación: Después de recibir tu solicitud de suscripción, CRiskCo envía inmediatamente un GET a tu CallbackUrl. Tu servidor debe responder con HTTP 200 OK en 2 segundos.

    Respuesta exitosa de registro:

    {
      "success": true,
      "responseDetails": "Subscription 1 created successfully",
      "ApiSubscriptionData": [
    	{
    		"Active": true,
    		"CallbackUrl": "https://yourdomain.com/path/webhook",
    		"ReferrerId": "your_referrer_id",
    		"SubscriptionId": 1
        }
      ]
    }

    Payload del Webhook — JSON Inline

    Cuando fileResponse es false, CRiskCo envía el payload directamente en el cuerpo del webhook:

    {
      "SubscriptionId": 1,
      "ReferrerId": "criskco_partner",
      "WebhookUrl": "https://yourdomain.com/path/webhook",
      "ApiServiceName": "GetApplicants",
      "FileType": "JSON",
      "DownloadUrlList": null,
      "applicantId": "123456”,
      "refApplicantId": "abc-def”,
      "APIResponse": "{ "applicantId": "123456", "onboardingStatus": "Available", ... }"
    }

    Payload del Webhook — Link Descargable

    Cuando fileResponse es true, CRiskCo almacena el JSON y envía una URL de descarga en su lugar:

    {
      "SubscriptionId": 1,
      "ReferrerId": "criskco_partner",
      "WebhookUrl": "https://yourdomain.com/path/webhook",
      "ApiServiceName": "GetApplicants",
      "FileType": "JSON_LINK",
      "DownloadUrlList": [
        "https://criskco-files.s3.amazonaws.com/..."
      ],
      "applicantId": "123456”,
      "refApplicantId": "abc-def”,
      "APIResponse": null
    }

    La forma del payload es idéntica en ambos modos. FileType te dice si parsear APIResponse directamente o descargar de DownloadUrlList.

    Gestionar Suscripciones

    Listar todas las suscripciones activas:

    GET https://service.criskco.com/apiservice.svc/Subscriptions
    Headers: apiId, apiKey

    Eliminar una suscripción:

    POST https://service.criskco.com/apiservice.svc/Subscriptions?id=YOUR_SUBSCRIPTION_ID
    Headers: apiId, apiKey

    Obtener Aplicantes y Verificar Estado

    Sin importar qué modelo de integración uses, obtén el applicantId aquí. Es requerido para todos los endpoints de datos financieros.

    GET https://service.criskco.com/apiservice.svc/get-applicants
    Headers: apiId, apiKey
    Parámetro Descripción
    taxId Filtrar por RFC
    refApplicantId Filtrar por tu referencia interna
    onboardingStatus Incluir estado de onboarding (true/false)
    fullResponse Dataset completo incluyendo financieros y blacklists (true/false). Usar solo cuando sea necesario — agrega latencia.

    Respuesta de Ejemplo

    {
      "responseDetails": "Data retrieved successfully",
      "success": true,
      "ApiApplicantData": {
        "applicantId": "1000143693",
        "taxId": "GAPXXXXXXXXX",
        "dateConnected": "2026-03-24T09:15:00Z",
        "onboardingStatus": "Available",
        "financials": { ... },
        "blackLists": ["SAT", "OFAC"]
      }
    }

    Estados de Onboarding

    Estado Significado
    Available Conectado y datos procesados — listo para consultar
    Processing Conectado pero datos aún en procesamiento
    Not Connected El aplicante aún no ha completado el onboarding

    blackLists: Retornado cuando fullResponse=true. Lista las fuentes de blacklist donde el aplicante tiene una bandera (e.g. "SAT" = EFOS/EDOS, "OFAC" = sanciones de EE.UU.).

    Validación de RFC

    RFC Individual

    GET /ValidateRFC?rfc=GAPXXXXXXXXX&name=GAP&postal=12345
    
    Params: rfc (required) · name (optional) · postal (optional)
    
    Response:
    {
      "Success": true,
      "ValidParameters": [
        { "Property": "ValidRFC", "Valid": true },
        { "Property": "ValidName", "Valid": true },
        { "Property": "ValidPostal", "Valid": true }
      ],
      "message": "RFC válido, y susceptible de recibir facturas"
    }

    Validación Masiva (hasta 5,000)

    Envía un archivo de texto con un RFC por línea, o RFC|Nombre|CP separados por pipe.

    POST /ValidateRFCBulk
    Body: plain-text file
    
    RFC only:
    ABCYYYYYYYYYY
    DEFZZZZZZZZZZ
    
    RFC + Name + Postal (pipe-separated):
    ABCYYYYYYYYYY|EMPRESA ABC|98765
    DEFZZZZZZZZZZ|EMPRESA DEF|12345

    Endpoints de Cumplimiento SAT

    Estos endpoints consultan por taxId (RFC) — no se requiere applicantId.

    Estado Fiscal (Opinión de Cumplimiento)

    GET /GetCompanyTaxStatus?taxId=GAPXXXXXXXXX
    
    Returns POSITIVO or NEGATIVO plus outstanding obligations (populated only when NEGATIVO).
    Campo Tipo Descripción
    RFC string Tax ID
    PayingTax string "POSITIVO" or "NEGATIVO"
    CompanyObligationsList array Obligaciones pendientes si NEGATIVO
    ReportUpdateDate date Fecha del reporte

    Regímenes Fiscales

    GET /GetCompanyTaxRegimes?taxId=GAPXXXXXXXXX
    
    Returns: RFC, Regime, ReportUpdateDate, PayingTax

    Constancia De Fiscal

    GET /GetCompanyFiscalDetails?taxId=GAPXXXXXXXXX
    
    Returns: RFC, Name, FirstSurname, SecondSurname, CompanyName, CapitalRegime,
    CommercialName, OperationStartDate, FiscalStatus, LastStatusChangeDate,
    FiscalRegisteredAddress

    FinScore Histórico

    GET /GetHistoricalFinscore?taxId=GAPXXXXXXXXX
    
    {
      "HistoricalFinscores": [
        { "Year": 2025, "Month": 10, "FinScore": 68.2 },
        { "Year": 2025, "Month": 11, "FinScore": 70.4 },
        { "Year": 2026, "Month": 1, "FinScore": 74.0 }
      ]
    }

    Datos Financieros del Aplicante

    Todos los endpoints financieros son POST con { "applicantId": "..." }. Parámetros opcionales fromDate/toDate filtran por fecha (ISO 8601).

    Información del Aplicante (Resumen)

    POST /applicantinfo
    
    { "applicantId": "1000143693" }
    
    Returns verified business info, blacklist status, and summarized financials.

    Clientes y Transacciones AR

    Method Endpoint Descripción
    POST /customers Lista de clientes + financieros
    POST /ar-transactions/invoices Facturas de venta
    POST /ar-transactions/payments Pagos recibidos
    POST /ar-transactions/creditmemos Notas de crédito emitidas
    POST /grouping/customers Todos los datos AR en una llamada

    Proveedores y Transacciones AP

    Method Endpoint Descripción
    POST /suppliers Lista de proveedores + financieros
    POST /ap-transactions/invoices Facturas de proveedores
    POST /ap-transactions/payments Pagos a proveedores
    POST /ap-transactions/creditmemos Notas de crédito de proveedores
    POST /ap-transactions/expenses Gastos no facturados
    POST /grouping/suppliers Todos los datos AP en una llamada

    Reportes Financieros

    Reportes raw — como aparecen en el ERP del aplicante:

    POST /financialreports/rowdata/balancesheet
    POST /financialreports/rowdata/profitandloss
    POST /financialreports/rowdata/bankstatement
    
    { "applicantId": "1000143693" }

    Reportes estandarizados — normalizados por CRiskCo:

    POST /financialreports/standard/balancesheet
    POST /financialreports/standard/profitandloss
    
    { "applicantId": "1000143693", "financialYear": "Current" }
    
    financialYear options:
      Current · FinancialYearEnd · PreviousFinancialYearEnd ·
      SecondPreviousFinancialYearEnd · ThirdPreviousFinancialYearEnd

    Todos los Financieros en Una Llamada

    POST /grouping/applicant-financials
    
    { "applicantId": "1000143693", "csvInJson": false }
    
    Returns raw data, standardized reports, documents, analytics, and summaries.
    Recommended for initial data pulls.

    Documentos

    POST /Documents
    
    { "applicantId": "1000143693", "csvInJson": false }
    report_type Descripción
    SAT_FINANCIAL_DECLARATION Declaraciones anuales presentadas al SAT
    SAT_CONTRIBUYENTE Opinión de Contribuyente del SAT
    SAT_ANALYTICS Reporte resumido de empresa por CRiskCo
    APPLICANT_FILES Archivos subidos durante el onboarding
    MONTHLY_GENERATED_REPORT Reporte mensual por CRiskCo

    Cada documento incluye un link de descarga HTTP directo.

    Endpoints SAT Adicionales

    Estructura de Propiedad

    GET /GetCompanyStructure?taxId=GAPXXXXXXXXX
    
    Returns: owner names, RFC, country, participation % (with/without vote),
    tenure periods, loans, capital movements.

    Detalles de Nómina

    GET /GetPayrollDetails?taxId=GAPXXXXXXXXX

    Detalles de Empleados

    GET /GetEmployeesDetails?taxId=GAPXXXXXXXXX
    
    Returns: name, RFC, CURP, position, start date, total work months,
    payment frequency, days paid, gross salary.

    Antecedentes Judiciales

    GET /GetInformationReport?taxId=GAPXXXXXXXXX
    
    Returns AntecedentesJudiciales grouped by state, with case numbers,
    dates, and court references.

    Salud del SAT

    GET /SatHealthCheck?serviceName=Declarations&systemType=SAT&unitType=Hours&unitAmount=24
    
    Returns avg/max response times, failure rates, and HTTP status codes per check.
    Use before making SAT-dependent calls to diagnose upstream issues.

    Gestión del Ciclo de Vida

    Actualizar Estado del Aplicante

    POST /applicant-status
    
    { "applicantId": "1000143693", "status": "Approved" }
    
    Statuses: New | UnderEvaluation | Approved | Denied | CancelByApplicant | CompanyDefaulted | Completed

    Los estados de desconexión detienen la sincronización de datos SAT. Volver a un estado conectado dispara un intento de reconexión.

    Disparar Actualización de Monitoreo

    POST /RequestMonitoring
    
    { "applicantId": "1000143693", "Source": "API" }
    
    Forces a fresh SAT data pull for an applicant already in your system.

    Mejores Prácticas

    • Siempre usa HTTPS. Nunca expongas tu apiKey del lado del cliente.
    • Valida las llamadas webhook entrantes para prevenir spoofing — verifica que las solicitudes provengan de las IPs de CRiskCo.
    • Implementa lógica de reintento con backoff exponencial.
    • Almacena applicantId localmente en tu LOS — lo usarás en cada llamada subsecuente.
    • Usa fullResponse=true solo cuando sea necesario — agrega latencia.
    • Verifica onboardingStatus Available antes de consultar endpoints financieros — consultar mientras está Processing retorna datos incompletos.
    • Para pipelines automatizados, usa el modelo Webhook en lugar de polling.

    Referencia Completa de Endpoints

    Method Endpoint Description
    GET /get-applicants Listar aplicantes, obtener applicantId y estado
    POST /OnboardingSatIntegration Onboarding de aplicante (Modelo A)
    POST /applicantinfo Datos financieros y de negocio
    GET /ValidateRFC Validar un RFC contra el SAT
    POST /ValidateRFCBulk Validar hasta 5,000 RFCs
    GET /GetCompanyTaxStatus Opinión de Cumplimiento
    GET /GetCompanyTaxRegimes Regímenes fiscales
    GET /GetCompanyFiscalDetails Constancia De Fiscal
    GET /GetHistoricalFinscore Historial de FinScore
    GET /GetCompanyStructure Estructura de propiedad
    GET /GetPayrollDetails Registros de nómina
    GET /GetEmployeesDetails Lista de empleados
    GET /GetInformationReport Antecedentes judiciales
    GET /SatHealthCheck Disponibilidad y latencia del SAT
    POST/GET /Subscriptions Gestionar webhooks
    POST /customers Lista de clientes + financieros
    POST /ar-transactions/invoices Facturas de venta (AR)
    POST /ar-transactions/payments Pagos recibidos (AR)
    POST /ar-transactions/creditmemos Notas de crédito emitidas (AR)
    POST /grouping/customers Todos los datos AR en una llamada
    POST /suppliers Lista de proveedores + financieros
    POST /ap-transactions/invoices Facturas de proveedores (AP)
    POST /ap-transactions/payments Pagos a proveedores (AP)
    POST /ap-transactions/creditmemos Notas de crédito de proveedores (AP)
    POST /ap-transactions/expenses Gastos no facturados
    POST /grouping/suppliers Todos los datos AP en una llamada
    POST /financialreports/rowdata/balancesheet Balance general (raw)
    POST /financialreports/rowdata/profitandloss Estado de resultados (raw)
    POST /financialreports/rowdata/bankstatement Estado de cuenta bancario
    POST /financialreports/standard/balancesheet Balance general estandarizado
    POST /financialreports/standard/profitandloss Estado de resultados estandarizado
    POST /Documents Documentos (declaraciones, reportes)
    POST /grouping/applicant-financials Todos los datos financieros en una llamada
    POST /applicant-status Actualizar estado del aplicante
    POST /RequestMonitoring Forzar actualización de datos SAT

    Utilizamos cookies para mejorar su experiencia. Al continuar visitando este sitio, acepta nuestro uso de cookies. Más información