Skip to main content

Visão geral

No sandbox, quando você cria uma validação KYC para uma entidade pessoa, a API pode retornar um resultado mock imediato com base no taxId (documento) da entidade. Nenhuma verificação externa é realizada; a resposta e os webhooks correspondem ao resultado associado a esse documento em nosso conjunto de teste. Isso permite testar todos os fluxos (aprovado, rejeitado, cancelado, dupla verificação RENAPER, etc.) sem passar por uma verificação real.
Configure um webhook para receber as respostas!No sandbox, os resultados de KYC são atualizados de forma assíncrona (igual à produção). Embora a API retorne 201 imediatamente após criar a validação, o resultado final (aprovado, rejeitado, etc.) é enviado via webhooks momentos depois.Você deve configurar um endpoint webhook em sua organização para receber as notificações de validação. Sem um webhook configurado, você não receberá as atualizações de status.📚 Aprenda a configurar webhooks: Integração webhook
O formato não importa. O taxId da entidade pode ser enviado com ou sem formatação (ex.: 99.990.001 ou 99990001). A API normaliza antes de comparar, então ambos funcionam igual.

Como funciona

  1. A entidade pessoa pertence a uma organização em modo sandbox.
  2. Você chama POST /api/kyc/validations com o entityId dessa entidade.
  3. A API consulta o taxId da entidade no mapa de teste do sandbox (após normalizar: apenas dígitos e letras).
  4. Se houver correspondência, uma validação mock é criada com status pending (201 Created) e momentos depois é atualizada para o status final (ex.: approved, rejected, cancelled).
  5. Os webhooks são enviados para seu endpoint configurado com o resultado final.
  6. Se não houver correspondência, a API segue o fluxo normal (cria uma sessão de verificação real e retorna providerSessionUrl).
Fluxo assíncrono: O comportamento no sandbox replica exatamente o fluxo de produção, que é assíncrono. A validação é criada no estado pending, depois atualizada e notificada via webhook. Não tente fazer polling imediato ao endpoint GET após criar a validação - use webhooks para receber o resultado.

Prévia sintética de entidade (somente GET)

No sandbox, ao consultar um número de documento do catálogo de teste e não existir entidade real, a Gu1 pode retornar uma pessoa sintética em vez de 404:
  • GET /api/entities/by-tax-id/{taxId}
  • GET /api/entities?taxId={taxId} (filtro exato, zero correspondências reais)
A resposta inclui sandboxMock: true, id: null e metadata.sandboxKycOutcome. Nada é gravado no banco.
A prévia é para descoberta e documentação. Para POST /api/kyc/validations ou POST /api/kyc/biometric/sessions com entityTaxId, você deve criar uma entidade pessoa real primeiro (com o mesmo taxId de teste). Endpoints KYC/biometria resolvem apenas linhas persistidas.
RENAPER no sandbox: Se você enviar doubleCheckRenaper: true ao criar a validação e o resultado for aprovado (ou rejeição relacionada ao RENAPER), a resposta e o payload do webhook incluirão metadata.responseDoubleChecks.renaper com a mesma estrutura que em produção.

Valores de teste padrão

Oferecemos um conjunto fixo de números de documento de teste em quatro formatos. Cada número corresponde a um resultado. A chave de busca é o valor normalizado (sem pontos, traços ou espaços).

Lista de resultados (o que cada número retorna)

Argentina – DNI (8 dígitos)

Use qualquer um destes como taxId da entidade (com ou sem pontos). O valor normalizado é usado para o match.

Argentina – CUIT (11 dígitos)

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

Brasil – CPF (11 dígitos)

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

Brasil – CNPJ (14 dígitos)

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

Exemplo: aprovado com RENAPER

  1. Crie uma entidade pessoa no sandbox com taxId: 99990001 (ou 99.990.001).
  2. Chame POST /api/kyc/validations com entityId e doubleCheckRenaper: true (body ou query).
  3. A API retorna 201 com a validação; em seguida o status é approved e o webhook kyc.validation_approved é enviado.
  4. O payload do webhook inclui o objeto completo da validação, incluindo metadata.responseDoubleChecks.renaper com verified: true, matchResult: "match", personalNumber, idTramitePrincipal e renaperData (resposta mock do registro).

Exemplo de resposta (mock aprovado)

O body da resposta e o payload do webhook seguem a mesma estrutura de uma validação real. Exemplo de forma para um mock aprovado (campos relevantes):
Quando a dupla verificação RENAPER não é solicitada, metadata.responseDoubleChecks não aparece em aprovado; quando é solicitada, aparece como acima. Para renaperData em rejeições ou erros de serviço, ver forma de renaperData.

Biometria incorporada (mock sandbox)

Após um KYC mock aprovado para a mesma entidade, você pode criar uma sessão biométrica incorporada (POST /api/kyc/biometric/sessions) também em modo mock no sandbox — sem UI hospedada; a Gu1 retorna o resultado imediatamente.
A biometria mock usa a mesma organização sandbox e o mesmo mapa de taxId de teste do mock de KYC. Validações mock incluem metadata.sandboxMock: true. Sessões biométricas mock incluem metadata.sandboxMock: true e metadata.sandboxMockOutcome (approved ou rejected).

Pré-requisitos

  1. Organização em modo sandbox (igual ao mock de KYC).
  2. Entidade pessoa com taxId de teste cujo outcome de KYC seja approved ou approved_with_renaper (ex.: 99990001, 99990002, 99990011).
  3. KYC aprovado para essa entidade (crie antes com POST /api/kyc/validations).

Outcomes biométricos por documento de teste

Se o mock de KYC for rejected ou cancelled, não é possível criar sessão biométrica (NO_KYC).

Forçar outcome na mesma entidade

Em qualquer entidade mock elegível, envie metadata.sandboxMockOutcome no body:
Valores: approved, rejected. Aplica-se apenas quando qualifica para mock sandbox (org sandbox + KYC mock aprovado, ou KYC com metadata.sandboxMock: true).

Exemplo: mock aprovado

  1. Criar entidade pessoa com taxId: 99990001.
  2. POST /api/kyc/validations → webhook kyc.validation_approved (ou GET até approved).
  3. POST /api/kyc/biometric/sessions com { "entityId": "..." }.
Resposta 201 com "status": "approved", hostedSessionId com prefixo sandbox-mock-bio-, webhook biometric.session_approved. Iframe não é necessário.

Exemplo: mock rejeitado

Opção A — documento 99990011 (KYC aprovado, biometria rejeitada por padrão). Opção B — mesma entidade 99990001 com "metadata": { "sandboxMockOutcome": "rejected" }. Resposta "status": "rejected"; webhook biometric.session_rejected.

Biometria real (não mock) no sandbox

Se o taxId não estiver no mapa de teste, ou a org não for sandbox, o create segue o fluxo de produção: UI de captura hospedada, status: pending, hostedSessionId atribuído pela Gu1. Exige retrato válido do KYC aprovado.

Retentativas e sessões ativas

  • Se a última sessão biométrica estiver pending ou in_progress, o create retorna 409 ACTIVE_SESSION_EXISTS com activeSessionId. Cancele com POST /api/kyc/biometric/sessions/:id/cancel.
  • Se um create anterior persistiu na Gu1 mas o cliente repetiu a chamada, a Gu1 reutiliza a linha existente quando o mesmo hostedSessionId é retornado (create idempotente).
Ver também: Sessão biométrica incorporada.

Dados mock personalizados

O conjunto padrão acima está disponível para todas as organizações sandbox sem configuração.
Adicionar ou alterar números de documento mock no seu sandbox:
Se você precisar de documentos de teste adicionais ou resultados diferentes para números específicos, entre em contato com a equipe Gu1. Dados mock personalizados para sandbox são gerenciados pela Gu1 e não podem ser configurados pelo cliente.

Ver também