Skip to content

KYC ​

Todos los endpoints requieren Authorization: Bearer <token> y están acotados al tenant (clientId) resuelto desde OAuth. El producto KYC debe estar habilitado para tu tenant — de lo contrario las llamadas devuelven 403.

Descripción general ​

La API de KYC permite que tu tenant solicite procesos de verificación de identidad (background-check y, opcionalmente, verificación documental) para personas físicas (PF) y personas jurídicas (PJ), íntegramente vía API. Cada consulta se cobra por llamada exitosa, según el tipo (PF/PJ) y el modelo elegido.

Modelos de background-check ​

El campo backgroundcheckModel define la profundidad de la verificación (y el volumen de datos devuelto):

ModeloDescripción
BASICValidación de identidad esencial
MEDIUMValidación extendida
COMPLETEVerificación completa (background check)

El precio unitario varía por tipo (PF/PJ) y modelo, según tu contrato.

Flujo asíncrono ​

El KYC es asíncrono:

  1. Inicias el proceso (POST /v1/kyc/person o /v1/kyc/company). La respuesta devuelve un kycUUID y status: "PROCESSING".
  2. El resultado se procesa de forma asíncrona (procesos kyc-backgroundcheck y kyc-documentscopy) — haz seguimiento por polling en GET /v1/kyc/list (el push por webhook para eventos kyc-* está en el roadmap).
  3. Cuando documentscopyFlag = true, se genera una URL de webview (entregada de forma asíncrona) que el usuario final debe completar para finalizar la verificación documental.

El cobro ocurre en la iniciación exitosa (cuando se devuelve el kycUUID), de forma idempotente por kycUUID.


POST /v1/kyc/person ​

Inicia un proceso de KYC para una persona física (identificada por CPF).

Body:

CampoTipoObligatorioDescripción
backgroundcheckModelstringSíBASIC | MEDIUM | COMPLETE
documentscopyFlagbooleanSíSi es true, inicia la verificación documental (genera webview) tras el background-check
vatNumberstringSíCPF (11 dígitos)
namestringSíNombre completo
birthDatestringSíFecha de nacimiento (dd-mm-aaaa)
motherNamestringSíNombre completo de la madre

Response 200 OK:

json
{
  "data": {
    "kycUUID": "9a8c3a75-4c71-4c26-b373-14f9a6c25eaf",
    "status": "PROCESSING",
    "kycType": "PF",
    "model": "BASIC",
    "documentscopy": true,
    "webviewUrl": null
  }
}

webviewUrl puede llegar null en la iniciación y completarse después — consulta GET /v1/kyc/list hasta que aparezca.


POST /v1/kyc/company ​

Inicia un proceso de KYC para una persona jurídica (identificada por CNPJ).

Body:

CampoTipoObligatorioDescripción
backgroundcheckModelstringSíBASIC | MEDIUM | COMPLETE
documentscopyFlagbooleanSíSi es true, genera una webview de verificación documental para cada integrante del qsa
vatNumberstringSíCNPJ (14 dígitos)
legalNamestringSíRazón social
qsaarraySíCuadro de socios y administradores (1 a 3 registros); al menos un SOCIO_ADMINISTRADOR

Cada ítem de qsa:

CampoTipoDescripción
ownerTypestringSOCIO_ADMINISTRADOR | SOCIO
vatNumberstringCPF del socio
namestringNombre del socio
birthDatestringFecha de nacimiento (dd-mm-aaaa)
motherNamestringNombre de la madre del socio

Response 200 OK:

json
{
  "data": {
    "kycUUID": "9a8c3a75-4c71-4c26-b373-14f9a6c25eaf",
    "status": "PROCESSING",
    "kycType": "PJ",
    "model": "COMPLETE",
    "documentscopy": false
  }
}

GET /v1/kyc/list ​

Lista los procesos de KYC de tu tenant (con el estado más reciente). La lista se sirve desde nuestro registro interno, acotada a tu tenant — nunca ves procesos de otros tenants.

Query params:

ParamTipoObligatorioDescripción
kycUUIDstringNoFiltra por un proceso específico

Response 200 OK:

json
{
  "data": {
    "result": [
      {
        "kycUUID": "9a8c3a75-4c71-4c26-b373-14f9a6c25eaf",
        "vatNumber": "111***11",
        "process": "kyc-backgroundcheck",
        "status": "APPROVED",
        "kycType": "PF"
      }
    ]
  }
}
  • process: kyc-backgroundcheck | kyc-documentscopy
  • status: APPROVED | REPROVED | PROCESSING | PENDING
  • vatNumber se devuelve enmascarado.

POST /v1/kyc/manual-decision ​

Aplica una decisión manual (aprobar/rechazar) a uno de los procesos de KYC de tu tenant. El kycUUID debe pertenecer a tu tenant.

Body:

CampoTipoObligatorioDescripción
kycUUIDstringSíIdentificador del proceso
decisionstringSíAPPROVED | REPROVED
reasonstringSíJustificación (hasta 500 caracteres)

Response 200 OK:

json
{
  "data": {
    "kycUUID": "9a8c3a75-4c71-4c26-b373-14f9a6c25eaf",
    "decision": "APPROVED"
  }
}

Seguimiento de estado ​

Los procesos de KYC se actualizan de forma asíncrona:

ProcesoCuándo dispara
kyc-backgroundcheckFinalización/actualización del background-check
kyc-documentscopyGeneración de la webview y finalización/actualización de la verificación documental

Cada registro lleva el kycUUID y el status (APPROVED | REPROVED | PROCESSING | PENDING).

Consulta por polling. Hoy el seguimiento se hace vía GET /v1/kyc/list (p. ej. cada 30s mientras esté PROCESSING). Los eventos kyc-* aún no se entregan en el webhook del tenant — el push por webhook (payload mínimo kycUUID + status) está en el roadmap. Los webhooks de onboarding de cuenta (onboarding-*, incluido onboarding-biometrics) no se ven afectados y se entregan normalmente.


Errores comunes ​

HTTPSituación
400backgroundcheckModel inválido, CPF/CNPJ ausente, qsa sin SOCIO_ADMINISTRADOR
403Producto KYC no habilitado para el tenant; o un kycUUID de otro tenant en manual-decision

Consulta Manejo de Errores para el envelope de error estándar.