Introdução
Fintechs de investimento devem validar o CPF dos investidores via API no onboarding para cumprir as exigências da CVM e do BACEN: a confirmação de identidade é obrigatória antes de qualquer operação de compra ou venda de ativos, e a API de CPF é o método mais rápido para verificar que o investidor é quem diz ser.
Fintechs de investimento operam sob regulamentação rigorosa da CVM (Comissão de Valores Mobiliários) e da Anbima. O cadastro de investidores exige verificação de identidade robusta, e o CPF é o identificador central nesse processo. Uma validação inadequada pode resultar em multas, sanções e até perda da licença de operação.
Requisitos regulatórios para cadastro de investidores
A CVM e a Anbima estabelecem requisitos específicos para a identificação de investidores que toda plataforma deve atender.
| Regulamentação | Requisito principal | Impacto no cadastro |
|---|---|---|
| Resolução CVM 50/2021 | Política de KYC completa | Validação de identidade obrigatória |
| Instrução CVM 617/2019 | Cadastro simplificado para investidores | CPF é o identificador mínimo |
| Código Anbima de Distribuição | Due diligence de clientes | Cruzamento de dados cadastrais |
| Circular BCB 3.978/2020 | Prevenção à lavagem de dinheiro | Validação contínua de CPF |
| Lei 9.613/1998 | Identificação de beneficiário final | CPF vinculado a dados reais |
- Cadastro simplificado -- para investimentos de baixo valor, o CPF e dados básicos são suficientes
- Cadastro completo -- para investimentos qualificados, exige-se verificação documental além do CPF
- Atualização cadastral -- a regulamentação exige atualização periódica dos dados dos investidores
- Classificação de risco -- investidores são classificados por perfil de risco, o que determina o nível de verificação
Implementando a validação no fluxo de cadastro
O cadastro de investidores deve validar o CPF como primeiro passo, antes de prosseguir para suitability e abertura de conta.
import requests
from dataclasses import dataclass
from enum import Enum
from typing import Optional
class PerfilInvestidor(Enum):
CONSERVADOR = "conservador"
MODERADO = "moderado"
ARROJADO = "arrojado"
QUALIFICADO = "qualificado"
PROFISSIONAL = "profissional"
@dataclass
class ResultadoValidacao:
valido: bool
nome_conferido: bool
nascimento_conferido: bool
dados_api: dict
alertas: list
def validar_cpf_investidor(cpf: str, nome: str, nascimento: str) -> ResultadoValidacao:
response = requests.get(
f"https://api.cpfhub.io/cpf/{cpf.replace('.', '').replace('-', '')}",
headers={"x-api-key": "sua-chave-aqui"},
timeout=10,
)
if not response.json().get("success"):
return ResultadoValidacao(
valido=False,
nome_conferido=False,
nascimento_conferido=False,
dados_api={},
alertas=["CPF não encontrado ou inválido"],
)
data = response.json()["data"]
alertas = []
# Conferência de nome
nome_upper = nome.upper().strip()
nome_conferido = nome_upper == data["nameUpper"]
if not nome_conferido:
alertas.append(f"Nome divergente: informado '{nome_upper}', base '{data['nameUpper']}'")
# Conferência de data de nascimento
nascimento_conferido = nascimento == data["birthDate"]
if not nascimento_conferido:
alertas.append(f"Nascimento divergente: informado '{nascimento}', base '{data['birthDate']}'")
return ResultadoValidacao(
valido=True,
nome_conferido=nome_conferido,
nascimento_conferido=nascimento_conferido,
dados_api=data,
alertas=alertas,
)
- Validação em camadas -- primeiro válida o CPF, depois confere nome e nascimento, depois prossegue para suitability
- Alertas granulares -- cada divergência gera um alerta específico para análise do compliance
- Dados da API -- os dados retornados são armazenados como evidência da verificação realizada
Classificação de risco e nível de verificação
A regulamentação exige níveis diferentes de verificação conforme o perfil e o volume de investimentos do cliente.
| Perfil | Volume | Nível de verificação | Validações obrigatórias |
|---|---|---|---|
| Varejo (até R$ 10k) | Baixo | Simplificado | CPF + nome |
| Varejo (R$ 10k-100k) | Médio | Padrão | CPF + nome + nascimento |
| Qualificado (> R$ 1M) | Alto | Reforçado | CPF + nome + nascimento + documentos |
| Profissional (> R$ 10M) | Muito alto | Completo | Tudo acima + due diligence aprofundada |
def determinar_nivel_verificacao(valor_investimento: float, perfil: PerfilInvestidor) -> dict:
if perfil in [PerfilInvestidor.PROFISSIONAL]:
return {
"nivel": "completo",
"validacoes": ["cpf", "nome", "nascimento", "documentos", "due_diligence"],
"prazo_analise": "5 dias úteis",
}
elif perfil == PerfilInvestidor.QUALIFICADO or valor_investimento > 1_000_000:
return {
"nivel": "reforcado",
"validacoes": ["cpf", "nome", "nascimento", "documentos"],
"prazo_analise": "3 dias úteis",
}
elif valor_investimento > 10_000:
return {
"nivel": "padrao",
"validacoes": ["cpf", "nome", "nascimento"],
"prazo_analise": "1 dia útil",
}
else:
return {
"nivel": "simplificado",
"validacoes": ["cpf", "nome"],
"prazo_analise": "imediato",
}
- Abordagem baseada em risco -- maior risco exige maior verificação, conforme orientação da CVM
- Escalabilidade -- a validação automatizada via API permite processar cadastros simplificados instantaneamente
- Auditoria -- cada nível de verificação é documentado para apresentar aos reguladores quando necessário
Atualização cadastral periódica
A validação de CPF não é um evento único. A regulamentação exige revisão periódica dos dados dos investidores.
from datetime import datetime, timedelta
def verificar_necessidade_atualizacao(investidor: dict) -> dict:
ultima_validacao = datetime.fromisoformat(investidor["ultima_validacao_cpf"])
hoje = datetime.now()
intervalos = {
"alto_risco": timedelta(days=180), # 6 meses
"medio_risco": timedelta(days=365), # 1 ano
"baixo_risco": timedelta(days=730), # 2 anos
}
intervalo = intervalos.get(investidor["classificacao_risco"], timedelta(days=365))
if hoje - ultima_validacao > intervalo:
return {
"necessita_atualizacao": True,
"dias_desde_ultima": (hoje - ultima_validacao).days,
"prazo_limite": (ultima_validacao + intervalo).isoformat(),
}
return {"necessita_atualizacao": False}
# Executar batch de verificação
def batch_atualizacao_cadastral(investidores: list):
pendentes = []
for inv in investidores:
resultado = verificar_necessidade_atualizacao(inv)
if resultado["necessita_atualizacao"]:
pendentes.append({
"cpf": inv["cpf"],
"nome": inv["nome"],
"dias_atraso": resultado["dias_desde_ultima"],
})
return pendentes
| Classificação de risco | Frequência de atualização | Método |
|---|---|---|
| Alto risco | A cada 6 meses | Revalidação completa via API |
| Médio risco | Anual | Revalidação de CPF e nome |
| Baixo risco | A cada 2 anos | Revalidação simplificada |
Perguntas frequentes
Quais reguladores supervisionam o KYC em fintechs de investimento?
Principalmente a CVM (Comissão de Valores Mobiliários) para intermediários de valores mobiliários, e o BACEN para fintechs com licença de instituição de pagamento ou banco digital. Ambos exigem processos de identificação e due diligence de clientes antes do início das operações.
A validação de CPF é suficiente para o KYC de investidores?
Para investidores pessoas físicas em produtos de baixo risco, pode ser suficiente como etapa inicial. Para produtos complexos, investimentos acima de determinados valores ou clientes classificados como PEP (Pessoas Expostas Politicamente), são exigidas verificações adicionais, como análise de documentos e declaração de origem de recursos.
Como integrar validação de CPF no onboarding digital de uma fintech?
Inclua a consulta à API como etapa imediatamente após o usuário informar o CPF no formulário. Compare o nome retornado com o nome declarado e a data de nascimento para confirmar a identidade. Armazene o log da consulta como parte do dossiê de KYC do investidor.
CPFs de menores de idade podem ser usados em plataformas de investimento?
Menores de 16 anos não têm capacidade civil plena e precisam de representação legal. Entre 16 e 18 anos, são relativamente capazes. A maioria das fintechs de investimento exige 18 anos, e a validação de data de nascimento via API de CPF é o controle automático para essa restrição.
Conclusão
A validação de CPF é a pedra angular do compliance em fintechs de investimento. Desde o cadastro simplificado até a due diligence completa, a consulta via API garante que os dados dos investidores são autênticos e consistentes. Com a atualização cadastral periódica automatizada, sua plataforma mantém conformidade contínua com CVM, Anbima e Banco Central. Implemente essa camada de segurança com a CPFHub.io — plano gratuito com 50 consultas mensais disponível sem cartão de crédito para começar. Acesse cpfhub.io para criar sua conta.
CPFHub.io
Pronto para integrar a API?
50 consultas gratuitas para testar agora. Sem cartão de crédito. Acesso imediato à documentação.
Sobre a redação
Redação CPFHub.io
Time editorial especializado em APIs de CPF, identidade digital e compliance no mercado brasileiro. Produzimos guias técnicos, análises regulatórias e tutoriais sobre LGPD e KYC para desenvolvedores e líderes de produto.



