Skip to main content

Flujo: KYB México vía API

Contexto

KYB México permite verificar:
  • Personas morales (S.A. de C.V., S. de R.L., S.A.P.I.)
  • Personas físicas con actividad empresarial
  • Representantes legales y apoderados
Trébol automatiza extracción de actas, poderes, constancias fiscales y consultas a SIGER y SAT.

Endpoint base

Las 3 formas de procesar documentos

Recomendación general: empezar con generic (clasificación automática) y dejar que Trébol determine el tipo.

Items disponibles para KYB MX

Documentos (requieren file_url)

Estos están en el enum AllowedItemType del openapi (usado por record_validation_schema.requirements[].allowed_item_types en account-flows). En POST /verifications el field items[].type es string libre, así que también valen ahí.

Consultas públicas (no requieren archivo)

ℹ️ Estos no aparecen en el enum AllowedItemType (que es solo para items-documento). El field items[].type en POST /verifications es string libre, así que estos valores son válidos. La fuente canónica es la página de docs guia-devs/uso-kyb/mexico/items-consultas-publicas.

Globales aplicables a MX

person_id (INE/pasaporte/residencia), proof_address, bank_statement, generic.

Atributos principales del payload

Reglas de tax_id

  • Con flow_id: el tax_id raíz es obligatorio siempre.
  • Con items (sin flow): el tax_id raíz es opcional. Excepción: si usas public_sat_signatures con type: "business", debes proveer el RFC. Va en tax_id raíz o en options.tax_id_number del item SAT.
⚠️ file_url debe estar disponible al menos 5 minutos. Trébol descarga el archivo, no lo reusa.

Ejemplo 1 — Consulta simple (solo RFC, sin documentos)

Trébol consulta SIGER, FIEL de la empresa y FIEL del representante legal.

Respuesta de POST /verifications

Status 201. La respuesta es síncrona. El field se llama id (no verification_id) aunque represente el ID de la verificación. En el body de webhooks el mismo dato se llama verification_id.

Smoke test ejecutable (curl end-to-end)

Si todo está bien, recibes status 201 con un id UUID. Apunta a ese ID para cruzar con los webhooks que llegarán después.

Ejemplo 2 — Con documentos: clasificación automática

client_item_type es opcional — es un hint que ayuda a la clasificación. Si lo omites, Trébol detecta el tipo solo.

Ejemplo 3a — Solo validación (sin extraer info)

client_item_type es obligatorio en doc_validation. ruleset es opcional.

Ejemplo 3b — Solo extracción directa

Ejemplo 4 — SIGER en profundidad

siger_data_extraction: true analiza los actos registrados en SIGER y crea automáticamente items ac_mx, aa_mx, fme_mx para los actos relevantes. search_related_companies_siger: true identifica empresas en las que participan los accionistas.
⚠️ siger_data_extraction: true no funciona en verificaciones que también incluyen documentos cargados. Si necesitas ambas cosas, sepáralas en dos verificaciones. Si no tienes tax_id, declara el legal_name directamente:

key_people — apoderados y poderes

Para extraer poderes legales de personas específicas:

Carga directa (cuando no tienes file_url accesible)

Si tu archivo está en almacenamiento privado (S3 con TTL corto, generación dinámica) y no puedes pasar un file_url accesible 5 minutos, usa carga directa: Trébol te entrega un upload_url por item, tú subes el archivo directamente, Trébol procesa. Detalle del flujo en la documentación oficial: https://docs.gotrebol.com/guia-devs/crear-verificaciones/via-api/carga-directa

Flujo completo de integración

⚠️ Path params en kebab ({verification-id}, {etiqueta}), pero los fields del body y response son snake_case (verification_id, account_id).

Respuesta de GET /v2/companies//details (recortada)

Respuesta de GET /v2/verifications//people (recortada)

Ejemplo en código (Node.js)