For the complete documentation index, see llms.txt. This page is also available as Markdown.

Abertura de Conta (KYC/KYB)

Requer liberação / autorização

Este documento descreve, passo a passo, as rotas que um parceiro deve consumir para realizar o fluxo completo de abertura de conta (KYC) na 4Pay a partir do frontend do parceiro.


1. Visão Geral

Esta API permite que um parceiro construa seu próprio frontend de cadastro e conduza o cliente final por todo o fluxo de abertura de conta na 4Pay, incluindo validação de identidade (KYC) e liveness.

O fluxo é composto por múltiplas etapas sequenciais. Cada etapa deve ser concluída com sucesso antes de avançar para a próxima.

1.1 Endereços Base

Laboratório (sandbox): https://verify-api.4p.finance/lab/

Produção: https://verify-api.4p.finance/

ex. (laboratório): https://verify-api.4p.finance/lab/account/initial_registration
ex. (produção):    https://verify-api.4p.finance/v1/{hash-partner-id}/account/initial_registration

Nas seções seguintes, o path de cada rota é mostrado de forma relativa (ex.: /account/initial_registration). Monte a URL completa combinando com o endereço base do ambiente e, em produção, adicionando o Partner ID logo após o domínio.

1.2 Formato Padrão de Resposta

Todas as respostas da API seguem o mesmo formato-base. O campo mais importante para tratar a resposta programaticamente é sempre info.result — ele identifica de forma única o resultado da operação, independentemente do valor de success ou http_code.

💡 Dica de integração

Trate sempre a lógica da sua aplicação com base em info.result, não apenas em success ou http_code. Isso porque um http_code 200 pode conter tanto sucesso quanto falha de regra de negócio (ex.: documento já cadastrado). O campo message é amigável e pode ser exibido diretamente ao usuário final quando fizer sentido.

1.3 Arquitetura de Integração

🌐 Chamadas diretas do browser — sem backend intermediário

O frontend do parceiro deve requisitar a API da 4Pay diretamente do browser do cliente final, sem passar por um servidor/backend do parceiro como intermediário. Essa é uma exigência de arquitetura: é o que possibilita à 4Pay aplicar controle de IP e análises de risco via WAF diretamente sobre o tráfego do usuário final (ex.: listas de reputação de IP, detecção de proxy/VPN/datacenter, rate limiting por usuário). Se as requisições passarem pelo backend do parceiro, essa visibilidade se perde.

As rotas descritas neste documento são específicas do parceiro e possuem CORS liberado apenas para o domínio informado no cadastro da integração.

1.4 Autenticação — reCAPTCHA v3

O token deve ser gerado no frontend do parceiro com o site key exclusivo fornecido pela 4Pay para esse parceiro.

  • O domínio autorizado a gerar tokens com esse site key é restrito ao domínio do parceiro cadastrado.

  • O token é validado no backend da 4Pay (score mínimo e ação esperada). Veja a documentação do reCAPTCHA v3

1.5 Visão Geral do Fluxo

As etapas abaixo devem ser executadas nesta ordem:

  1. Cadastro inicial (e-mail e senha) — envia e-mail de confirmação de posse do e-mail

  2. Validação da hash de abertura de conta — confirma que a hash da URL recebida por e-mail é válida

  3. Envio do documento (CPF/CNPJ) — verifica se já existe conta com esse documento

  4. Solicitação do código de verificação de telefone (WhatsApp ou SMS)

  5. Validação do código de verificação enviado ao telefone

  6. Envio dos dados de endereço

  7. Início do processo de liveness (validação facial)

  8. Envio do documento de identidade (KYC)

  9. Verificação do status final da conta / KYC


2. Cadastro Inicial

Primeira etapa do fluxo. Cria o cadastro inicial do cliente com e-mail e senha.

POST /account/initial_registration

📧 O que acontece após essa chamada

Um e-mail é enviado ao cliente com um link de confirmação. O cliente precisa clicar nesse link para validar que é o dono do e-mail e continuar o cadastro. O link contém um parâmetro h (hash) que identifica essa abertura de conta — esse hash será reutilizado nas próximas etapas.

Payload (body)

Resposta — Sucesso

Campos do payload: email (e-mail do cliente), password (senha escolhida pelo cliente — ver requisitos abaixo), newsletter (1 = aceite de comunicações, 0 = recusa), rid (token do reCAPTCHA v3).

Requisitos de senha

A senha informada no campo password deve atender a todos os critérios abaixo:

  • Mínimo de 6 caracteres.

  • Máximo de 20 caracteres.

  • Combinação de letras maiúsculas e minúsculas.

  • Pelo menos um caractere especial (ex.: !, @, #, $).

  • Pelo menos um número.


3. Validação da Hash de Abertura de Conta

Executada quando o cliente acessa a URL recebida por e-mail (após clicar no link de confirmação). Valida se a hash daquela abertura de conta existe e retorna os dados já cadastrados até o momento.

GET /account/customer_hash/{hash}

🔑 Sobre a hash

É a mesma hash usada em todas as demais etapas do fluxo — recebida no parâmetro h da URL de confirmação enviada por e-mail. Aqui ela é enviada diretamente no path da URL, não no body.

Resposta — Hash encontrada

A hash é válida. O campo data traz os dados já cadastrados do cliente até o momento, incluindo o progresso do KYC (status_kyc e step_kyc).

Resposta — Hash não encontrada

Não existe abertura de conta com essa hash (pode ter expirado, já ter sido concluída, ou ser inválida).


4. Envio do Documento (Verificação de Existência)

Etapa executada assim que o cliente clica no link recebido por e-mail e preenche o CPF ou CNPJ no formulário do parceiro. Essa chamada verifica se já existe uma conta 4Pay associada a esse documento.

POST /account/update_customer

🔑 Sobre o hash

O hash é o identificador único e temporário dessa abertura de conta. Ele vem no parâmetro h da URL enviada por e-mail (ex.: https://lab-app.4p.finance/complete-registration?h=a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6) e deve ser reaproveitado em todas as etapas seguintes do fluxo. Esse hash é invalidado automaticamente assim que a conta é concluída.

Payload (body)

Resposta — Documento não encontrado (pode prosseguir)

Não existe conta com esse documento. O cadastro pode continuar normalmente.

Resposta — Documento já cadastrado

Já existe uma conta 4Pay com esse documento. O fluxo deve ser interrompido e o cliente informado.

Campos do payload: person_document (CPF ou CNPJ, sempre formatado/com máscara — ex.: 111.222.333-44), hash (identificador da abertura de conta), step_kyc (fixo em 1 nesta etapa).


5. Solicitação do Código de Verificação do Telefone

Envia um código de verificação para o telefone do cliente via WhatsApp. Canal recomendado.

POST /account/verification_code

Payload (body)

Resposta — Código enviado


6. Validação do Código de Verificação

Valida o código recebido pelo cliente via WhatsApp ou SMS.

POST /account/validation_code

Payload (body)

Resposta — Código válido

Resposta — Código inválido

7. Envio dos Dados de Endereço

Envia os dados de endereço e demais dados cadastrais complementares do cliente.

POST /account/update_customer

📌 Mesma rota da Etapa 4

Esta é a mesma rota /account/update_customer usada na Etapa 4, porém com um payload mais completo e step_kyc = 4, indicando avanço no fluxo de KYC.

Payload (body)

Resposta — Sucesso

Campo person_type aceita dois valores: "personal" (pessoa física) ou "empresarial" (pessoa jurídica).


8. Início do Processo de Liveness

Solicita a URL de liveness (validação facial) do cliente, via integração com a Didit.

POST /account/liveness

Payload (body)

Resposta — Sucesso

🎥 Como executar o liveness

A URL retornada em data.url deve ser aberta utilizando o SDK Web ou o SDK Mobile da Didit (Documentação/SDK Didit). Caso o cliente esteja no computador, ele pode escanear um QR Code e concluir o liveness pelo celular, retornando em seguida ao fluxo no computador — ou, se estiver iniciando o cadastro diretamente pelo celular, conclui tudo no próprio dispositivo. ATENÇÃO: No desktop, utilizando o SDK da Didit, seu frontend monitora a conclusão do liveness e envia o usuário para a próxima etapa de envio do documento.


9. Envio do Documento de Identidade (KYC)

Após a conclusão do liveness, o cliente envia a imagem do documento de identidade.

POST /account/complete_kyc

Arquivo (multipart/form-data)

Envie as Keys "files" para o arquivo e "customer" contendo o Value com um JSON para a hash da conta.

Exemplo multipart/form-data:

ATENÇÃO:

  • O arquivo do documento deve ser renomeado para "document" caso não tenha esse nome.

  • Deve conter a FOTO e CPF (preferencialmente CNH) para que seja feita o Face Match, OCR e Documentoscopia para validação dos dados e KYC.


10. Verificação do Status Final da Conta / KYC

Consulta o status final da conta após a conclusão do envio do documento de KYC.

POST /account/kyc_validation

Payload (body)

Resposta — Tudo certo (conta aprovada)

Após esta chamada, se a conta estiver completa e validada, o cliente recebe um e-mail de confirmação de abertura de conta na 4Pay.

Respostas — Conta não aprovada / dados inválidos

Nestes casos, o campo info.result identifica o motivo específico da reprovação:

info.result
O que significa

account_not_approved

A conta não pôde ser aprovada neste momento.

invalid_data

Dados enviados durante o cadastro são inválidos, de forma geral.

invalid_owner_data

Dados do titular da conta (pessoa física) são inválidos.

invalid_company_data

Dados da empresa (pessoa jurídica) são inválidos.

kyc_data_is_invalid

Os dados extraídos do processo de KYC (documento/liveness) são inválidos.

basic_data_is_invalid

Dados básicos do cadastro são inválidos.

all_data_is_invalid

Todos os dados enviados são inválidos.

Exemplo de resposta de reprovação:

Atualizado