Skip to main content
Trébol realiza consultas a fuentes públicas externas (RENAPO, INE, SAT, SIGER, RUES, DIAN, Cámaras de Comercio) como parte del proceso de verificación. Estas fuentes pueden fallar por distintos motivos: datos incorrectos, servicio no disponible o errores inesperados. Esta página consolida cómo detectar si una consulta pública falló para cada fuente, dónde encontrar el indicador de error y qué valores esperar.
Cómo funcionan los errores en consultas públicas:
  • HTTP 200 OK siempre. La API responde 200 incluso cuando la consulta a la fuente externa falla. El indicador de error vive dentro del item_value del ítem (o en el payload del webhook para RENAPO) — no en el status code HTTP.
  • Errores finales. Trébol reintenta automáticamente antes de reportar; los valores de esta página solo aparecen cuando se agotan los reintentos internos.
  • Sincronía. RENAPO (CURP) opera de forma asíncrona — resultado vía webhook. Las demás fuentes (INE, SAT, SIGER, RUES, DIAN, Cámara de Comercio) devuelven el resultado en el item_value al procesar la verificación.
  • Si el error fue causado por datos de entrada incorrectos (ej. RFC mal escrito, NIT inexistente), corrige el dato y crea una nueva verificación.
  • Si el error refleja un problema técnico del servicio externo, contacta a soporte.
Los términos item_value e item_internal_status que aparecen en la tabla son campos del response de cada ítem (datos estructurados y estado interno de procesamiento, respectivamente). Para la estructura completa de respuesta, consulta Respuestas por tipo de ítem.

Tabla resumen


México

RENAPO — Validación CURP

La búsqueda de CURP contra RENAPO se dispara automáticamente al procesar items person_id o al extraer accionistas de documentos tipo acta (ac_mx, aa_mx, pw_mx), y se ejecuta de forma asíncrona. Para saber si falló, revisa el payload del webhook verification_people.curp_search_completed. Cuando la búsqueda falla, el campo people_error está presente en el payload. Campo indicador: people_error (string, opcional) — solo presente cuando ocurre un error. Valores posibles de people_error: Ejemplo de payload con error:
Si el webhook llega sin el campo people_error, la consulta CURP fue exitosa. Consulta la documentación completa del webhook en Webhooks → verification_people.curp_search_completed.

INE — Validación

Para items de tipo person_id con id_type: "ine_mx", Trébol realiza una validación del INE. El resultado se encuentra dentro de item_value en las claves ine_validation_result e ine_validation_message. Campos indicadores:
  • ine_validation_result (string) — resultado de la validación.
  • ine_validation_message (string) — mensaje descriptivo del resultado.
Valores de ine_validation_result que indican error (requieren acción del desarrollador): Valores de ine_validation_result informativos (no requieren acción): Valores de ine_validation_message:
La validación del INE solo se ejecuta cuando el id_type es ine_mx. Para otros tipos de identificación (passport, residence_mx, cc), estos campos son null.
Para la estructura completa de respuesta, consulta Items de documentos — KYB Todos los países → Validación del INE.

SAT — Firmas y sellos

El ítem public_sat_signatures consulta los certificados FIEL y sellos digitales ante el SAT. Cuando la consulta no devuelve certificados hay que distinguir dos casos distintos. El campo status dentro de item_value.data.{rfc} indica si la consulta falló, y validationResult.reason indica por qué. Valores de status: Valores de validationResult.reason (presente cuando status es fail): Valores de validationMessage:
status sigue tomando los mismos valores de siempre (success, fail, exception); validationResult.reason es un campo adicional que refina el motivo del fallo. Si hoy ramificas solo por status, tu integración sigue funcionando sin cambios.
Ejemplo de respuesta cuando el RFC no se encuentra en el SAT (rfc_not_found): Este ejemplo muestra ambos ítems SAT (business y representatives):
Cuando el ítem SAT de tipo business no encuentra el RFC (status: "fail" con validationResult.reason: "rfc_not_found"), el ítem de tipo representatives asociado se completa con item_internal_status: "sat_not_found" y item_value vacío, como se muestra en el segundo objeto del ejemplo. Si en cambio hubo una falla técnica (reason: "scraper_error" o status: "exception"), el ítem representatives se completa con item_internal_status: "sat_scrap_failed".
Distingue los dos casos por validationResult.reason: rfc_not_found significa que el RFC no está registrado en el SAT — verifica que sea correcto. scraper_error (o status: "exception") indica una falla técnica del portal del SAT — reintenta más tarde. No trates una falla técnica como un RFC inválido.
Para la documentación completa del ítem SAT, consulta Items de consultas públicas — KYB México → public_sat_signatures.

SIGER — Sistema Integral de Gestión Registral

Cuando la consulta al portal SIGER falla por problemas técnicos o comportamientos inesperados de la página, el ítem refleja el error en su estado interno. Campo indicador:
  • item_internal_status = "siger_error" — la consulta no pudo completarse.
Cuando item_internal_status es "siger_error", el item_value puede estar vacío o incompleto.
El error siger_error indica problemas técnicos con el portal SIGER (mal funcionamiento de la página o comportamientos inesperados), no datos incorrectos ingresados por el usuario.
Para la documentación completa del ítem SIGER, consulta Items de consultas públicas — KYB México → siger.

Colombia

RUES — Registro Único Empresarial

Cuando el NIT consultado no existe en RUES, la respuesta lo indica dentro del item_value. Campo indicador:
  • item_value.status = "NIT NO EXISTE" — el NIT no fue encontrado en el RUES.
Ejemplo de respuesta con error:
Este error indica que la página de RUES no encontró registros para el NIT proporcionado. Verifica que el NIT sea correcto e incluya el dígito de verificación.
Para la documentación completa del ítem RUES, consulta Items de consultas públicas — KYB Colombia → rues.

DIAN — Consulta de NIT (public_rut_co)

Cuando la consulta del NIT en la DIAN falla, el resultado se refleja en item_value. No uses el código HTTP ni item_internal_status como único indicador de éxito: el scrape puede terminar en "scrap_completed" tanto si la consulta fue exitosa como si falló. Campos indicadores:
  • item_value.status — estado tributario devuelto por la DIAN en consultas exitosas (texto del campo estado, por ejemplo "ACTIVO"); en fallos puede ser "EXCEPTION", "invalid" o cadena vacía.
  • item_value.rut_validation_result — resultado de la validación: "success" o "failed".
  • item_value.message — detalle operativo del proceso (mensaje de éxito, error de DIAN, NIT inválido, etc.).
Cómo detectar que la consulta falló: Considera la consulta fallida si se cumple cualquiera de estas condiciones:
Escenarios de fallo: Consulta exitosa:
  • item_value.rut_validation_result = "success".
  • item_value.status = texto del estado en DIAN (por ejemplo "ACTIVO"); la capitalización puede variar según la fuente.
  • item_value.message en la implementación actual suele ser "Process finished successfully." (texto operativo; para lógica de negocio prioriza status y rut_validation_result).
Ejemplo — error técnico:
Ejemplo — NIT no encontrado en DIAN:
Ejemplo — NIT inválido (entrada):
item_internal_status = "scrap_completed" solo indica que el proceso de consulta terminó, no que la DIAN devolvió un RUT válido. Integradores que solo validan status === "EXCEPTION" van a tratar los otros dos escenarios como exitosos por error.
Para la documentación completa del ítem de consulta de NIT en la DIAN, consulta Items de consultas públicas — KYB Colombia → public_rut_co.

Cámara de Comercio — Dirección pública (public_address_cc_co)

Trébol consulta datos de contacto y dirección en cámaras de comercio públicas. El flujo intenta, en orden: Medellín, luego Cali, y por último Bucaramanga (esta última también puede completar el correo si Cali no lo trae). Este ítem no expone item_value.status, item_value.message ni un campo equivalente a rut_validation_result. La detección de fallo se hace por contenido de item_value y, de forma auxiliar, por item_internal_status. Campos en item_value:
  • legal_name
  • organization_type
  • legal_email
  • phone
  • business_address (address, city, state, country)
  • tax_id_number
  • request_id (si se envió en la creación de la verificación)
Cómo detectar que la consulta falló: No hay código de error dedicado. Considera la consulta fallida si, una vez procesado el ítem, el nombre legal está vacío:
Para validaciones más estrictas, también puedes considerar fallida la consulta si la dirección comercial está vacía:
business_address es siempre un objeto (address, city, state, country) cuando viene en la respuesta; nunca es un string. Si la consulta no obtuvo dirección, la clave suele omitirse (no aparece en item_value). Consulta exitosa:
  • item_value.legal_name poblado.
  • item_value.business_address con dirección y, habitualmente, city / state.
  • Pueden faltar legal_email o phone según la cámara que respondió; eso no implica fallo total si hay razón social y dirección.
Escenarios (implementación actual): Ejemplo — consulta exitosa:
Ejemplo — consulta fallida (sin registro en ninguna fuente):
En fallo sin datos de cámara, business_address no se incluye en item_value (no es "" ni un objeto con strings vacíos).
item_internal_status = "scrap_completed" indica que el job de consulta terminó, no que se obtuvo dirección o razón social. No uses solo este campo para decidir éxito.
Si el error fue por NIT incorrecto, corrige el dato y crea una nueva verificación. Si legal_name viene vacío pero el NIT es correcto y el problema persiste, puede tratarse de indisponibilidad de las cámaras — contacta a soporte.
Para la documentación completa del ítem, consulta Items de consultas públicas — KYB Colombia → public_address_cc_co.

Siguientes pasos

Consultas públicas — México

Documentación completa de SIGER, SAT y CURP.

Consultas públicas — Colombia

Documentación completa de RUES, DIAN y Cámara de Comercio.

Items de documentos — INE

Documentación del ítem person_id y validación del INE.

Webhooks

Eventos de webhook incluyendo errores de CURP.