Skip to main content

Descripción general

En sandbox, cuando creas una validación KYC para una entidad persona, la API puede devolver un resultado mock inmediato según el taxId (documento) de la entidad. No se realiza ninguna verificación externa; la respuesta y los webhooks coinciden con el resultado asociado a ese documento en nuestro set de prueba. Así puedes probar todos los flujos (aprobado, rechazado, cancelado, doble chequeo RENAPER, etc.) sin pasar por una verificación real.
¡Configura un webhook para recibir las respuestas!En sandbox, el resultado de KYC se actualiza de forma asíncrona (igual que en producción). Aunque la API devuelve 201 inmediatamente después de crear la validación, el resultado final (aprobado, rechazado, etc.) se envía a través de webhooks momentos después.Debes configurar un endpoint webhook en tu organización para recibir las notificaciones de validación. Sin un webhook configurado, no recibirás las actualizaciones de estado.📚 Aprende a configurar webhooks: Integración webhook
El formato no importa. El taxId de la entidad puede enviarse con o sin formato (p. ej. 99.990.001 o 99990001). La API lo normaliza antes de comparar, por lo que ambos funcionan igual.

Cómo funciona

  1. La entidad persona pertenece a una organización en modo sandbox.
  2. Llamas a POST /api/kyc/validations con el entityId de esa entidad.
  3. La API busca el taxId de la entidad en el mapa de prueba de sandbox (tras normalizar: solo dígitos y letras).
  4. Si hay coincidencia, se crea una validación mock con estado pending (201 Created) y momentos después se actualiza al estado final (p. ej. approved, rejected, cancelled).
  5. Se envían los webhooks correspondientes a tu endpoint configurado con el resultado final.
  6. Si no hay coincidencia, la API sigue el flujo normal (crea una sesión de verificación real y devuelve providerSessionUrl).
Flujo asíncrono: El comportamiento en sandbox replica exactamente el flujo de producción, que es asíncrono. La validación se crea en estado pending, y luego se actualiza y se notifica vía webhook. No intentes hacer polling inmediato al endpoint GET después de crear la validación - usa webhooks para recibir el resultado.

Vista previa sintética de entidad (solo GET)

En sandbox, si consultás un número de documento del catálogo de prueba y no existe una entidad real, Gu1 puede devolver una persona sintética en lugar de 404:
  • GET /api/entities/by-tax-id/{taxId}
  • GET /api/entities?taxId={taxId} (filtro exacto, cero coincidencias reales)
La respuesta incluye sandboxMock: true, id: null y metadata.sandboxKycOutcome. No se escribe nada en la base de datos.
La vista previa es para descubrimiento y documentación. Para POST /api/kyc/validations o POST /api/kyc/biometric/sessions con entityTaxId, primero debés crear una entidad persona real (con el mismo taxId de prueba). Los endpoints KYC/biometría resuelven solo filas persistidas.
RENAPER en sandbox: Si envías doubleCheckRenaper: true al crear la validación y el resultado es aprobado (o un rechazo relacionado con RENAPER), la respuesta y el payload del webhook incluirán metadata.responseDoubleChecks.renaper con la misma estructura que en producción.

Valores de prueba por defecto

Ofrecemos un set fijo de números de documento de prueba en cuatro formatos. Cada número corresponde a un resultado. La clave de búsqueda es el valor normalizado (sin puntos, guiones ni espacios).

Lista de resultados (qué devuelve cada número)

Argentina – DNI (8 dígitos)

Usa cualquiera de estos como taxId de la entidad (con o sin puntos). El valor normalizado es el que se usa para el match.

Argentina – CUIT (11 dígitos)

Formato: 20-XXXXXXXX-X. Ejemplo: 20-99990001-9.

Brasil – CPF (11 dígitos)

Formato: XXX.XXX.XXX-XX. Ejemplo: 999.900.001-01.

Brasil – CNPJ (14 dígitos)

Formato: XX.XXX.XXX/XXXX-XX. Ejemplo: 99.990.000/0001-01.

Ejemplo: aprobado con RENAPER

  1. Crea una entidad persona en sandbox con taxId: 99990001 (o 99.990.001).
  2. Llama a POST /api/kyc/validations con entityId y doubleCheckRenaper: true (body o query).
  3. La API devuelve 201 con la validación; poco después el estado es approved y se envía el webhook kyc.validation_approved.
  4. El payload del webhook incluye el objeto completo de la validación, incluido metadata.responseDoubleChecks.renaper con verified: true, matchResult: "match", personalNumber, idTramitePrincipal y renaperData (respuesta mock del registro).

Ejemplo de respuesta (mock aprobado)

El body de la respuesta y el payload del webhook siguen la misma estructura que una validación real. Ejemplo de forma para un mock aprobado (campos relevantes):
Cuando no se pide doble chequeo RENAPER, metadata.responseDoubleChecks no aparece en aprobado; cuando sí se pide, aparece como arriba. Para renaperData en rechazos o errores de servicio, ver forma de renaperData.

Biometría embebida (mock sandbox)

Tras un KYC mock aprobado para la misma entidad, podés crear una sesión biométrica embebida (POST /api/kyc/biometric/sessions) también en modo mock en sandbox: sin UI hospedada; Gu1 devuelve el resultado de inmediato.
La biometría mock usa la misma organización sandbox y el mismo mapa de taxId de prueba que el mock de KYC. Las validaciones mock incluyen metadata.sandboxMock: true. Las sesiones biométricas mock incluyen metadata.sandboxMock: true y metadata.sandboxMockOutcome (approved o rejected).

Requisitos

  1. Organización en modo sandbox (igual que KYC mock).
  2. Entidad persona con taxId de prueba cuyo outcome de KYC sea approved o approved_with_renaper (p. ej. 99990001, 99990002, 99990011).
  3. KYC aprobado para esa entidad (crearlo antes con POST /api/kyc/validations).

Outcomes biométricos por documento de prueba

Si el mock de KYC es rejected o cancelled, no podés crear sesión biométrica (NO_KYC).

Forzar outcome en la misma entidad

En cualquier entidad mock elegible, enviá metadata.sandboxMockOutcome en el body:
Valores: approved, rejected. Solo aplica si califica para mock sandbox (org sandbox + KYC mock aprobado, o KYC con metadata.sandboxMock: true).

Ejemplo: mock aprobado

  1. Crear entidad persona con taxId: 99990001.
  2. POST /api/kyc/validations → webhook kyc.validation_approved (o GET hasta approved).
  3. POST /api/kyc/biometric/sessions con { "entityId": "..." }.
Respuesta 201 con "status": "approved", hostedSessionId con prefijo sandbox-mock-bio-, webhook biometric.session_approved. No hace falta iframe.

Ejemplo: mock rechazado

Opción A — documento 99990011 (KYC aprobado, biometría rechazada por defecto). Opción B — misma entidad 99990001 con "metadata": { "sandboxMockOutcome": "rejected" }. Respuesta "status": "rejected"; webhook biometric.session_rejected.

Biometría real (no mock) en sandbox

Si el taxId no está en el mapa de prueba, o la org no es sandbox, el create sigue el flujo de producción: UI de captura hospedada, status: pending, y un hostedSessionId asignado por Gu1. Requiere retrato válido del KYC aprobado.

Reintentos y sesiones activas

  • Si la última sesión biométrica está pending o in_progress, el create devuelve 409 ACTIVE_SESSION_EXISTS con activeSessionId. Cancelala con POST /api/kyc/biometric/sessions/:id/cancel.
  • Si un create anterior persistió en Gu1 pero el cliente reintentó, Gu1 reutiliza la fila existente cuando devuelve el mismo hostedSessionId (create idempotente).
Ver también: Sesión biométrica embebida.

Datos mock personalizados

El set por defecto anterior está disponible para todas las organizaciones sandbox sin configuración.
Añadir o cambiar números de documento mock en tu sandbox:
Si necesitas documentos de prueba adicionales o resultados distintos para números concretos, contacta al equipo de Gu1. Los datos mock personalizados para sandbox los gestiona Gu1 y no pueden configurarse por el cliente.

Ver también