Introdução
Fintechs de pagamento são alvos frequentes de esquemas de lavagem de dinheiro. Criminosos utilizam CPFs falsos, de laranjas ou de pessoas falecidas para criar contas e movimentar recursos ilícitos. A validação de CPF via API é uma das primeiras linhas de defesa contra essas práticas, permitindo identificar inconsistências no momento do cadastro e durante transações suspeitas.
O papel do CPF no PLD/FT
O CPF é o identificador fundamental de pessoas físicas no sistema financeiro brasileiro. Validar a autenticidade e a consistência dos dados vinculados ao CPF é obrigatório por regulamentação do Banco Central e do COAF.
| Regulamentação | Requisito | Como a API de CPF ajuda |
|---|---|---|
| Circular BCB 3.978/2020 | Identificação e qualificação de clientes | Verificação de dados cadastrais em tempo real |
| Lei 9.613/1998 | Prevenção à lavagem de dinheiro | Detecção de CPFs inconsistentes no onboarding |
| Resolução CVM 50/2021 | Conheça seu cliente (KYC) | Cruzamento de nome e data de nascimento |
| COAF - Comunicações | Reporte de operações suspeitas | Dados precisos para alimentar relatórios |
- KYC (Know Your Customer) -- a validação de CPF é o primeiro passo do processo de conhecer seu cliente
- Monitoramento contínuo -- não basta validar no cadastro; transações suspeitas exigem revalidação
- Rastreabilidade -- cada consulta gera um registro que pode ser usado como evidência em auditorias
- Proporcionalidade -- o nível de verificação deve ser proporcional ao risco da operação
Sinais de alerta que a validação detecta
A consulta ao CPF via API revela inconsistências que são sinais clássicos de lavagem de dinheiro.
const axios = require("axios");
async function analisarRiscoPLD(cpf, dadosInformados) {
const response = await axios.get(
`https://api.cpfhub.io/cpf/${cpf.replace(/\D/g, "")}`,
{ headers: { "x-api-key": process.env.CPFHUB_API_KEY } }
);
const { data } = response.data;
const alertas = [];
// Alerta 1: Nome divergente
if (data.nameUpper !== dadosInformados.nome.toUpperCase()) {
alertas.push({
tipo: "NOME_DIVERGENTE",
severidade: "ALTA",
detalhe: `API: ${data.nameUpper} | Informado: ${dadosInformados.nome}`,
});
}
// Alerta 2: Data de nascimento divergente
if (data.birthDate !== dadosInformados.dataNascimento) {
alertas.push({
tipo: "DATA_NASCIMENTO_DIVERGENTE",
severidade: "ALTA",
detalhe: `API: ${data.birthDate} | Informado: ${dadosInformados.dataNascimento}`,
});
}
// Alerta 3: Idade incompatível com perfil
const idade = calcularIdade(data.birthDate);
if (idade < 18 || idade > 100) {
alertas.push({
tipo: "IDADE_INCOMPATIVEL",
severidade: "CRITICA",
detalhe: `Idade calculada: ${idade} anos`,
});
}
// Alerta 4: Gênero divergente do documento
if (data.gender !== dadosInformados.genero) {
alertas.push({
tipo: "GENERO_DIVERGENTE",
severidade: "MEDIA",
detalhe: `API: ${data.gender} | Informado: ${dadosInformados.genero}`,
});
}
return {
cpf: data.cpf,
risco: alertas.length === 0 ? "BAIXO" : alertas.length >= 2 ? "ALTO" : "MEDIO",
alertas,
requerAnaliseManual: alertas.some((a) => a.severidade === "CRITICA"),
};
}
function calcularIdade(dataNascimento) {
const nascimento = new Date(dataNascimento);
const hoje = new Date();
let idade = hoje.getFullYear() - nascimento.getFullYear();
const mesAtual = hoje.getMonth() - nascimento.getMonth();
if (mesAtual < 0 || (mesAtual === 0 && hoje.getDate() < nascimento.getDate())) {
idade--;
}
return idade;
}
| Sinal de alerta | Severidade | Ação recomendada |
|---|---|---|
| Nome divergente | Alta | Bloquear e solicitar documentação |
| Data de nascimento divergente | Alta | Bloquear e solicitar documentação |
| Idade menor que 18 anos | Crítica | Bloquear imediatamente |
| Idade acima de 100 anos | Crítica | Investigar uso de CPF de falecido |
| Múltiplas contas com mesmo CPF | Alta | Investigar possível laranja |
Implementando o fluxo de PLD no onboarding
O fluxo de PLD deve ser integrado diretamente no processo de cadastro, com decisões automatizadas para os casos claros e encaminhamento para análise manual nos casos ambíguos.
async function onboardingComPLD(dadosCadastro) {
// Etapa 1: Validação de CPF
const analise = await analisarRiscoPLD(
dadosCadastro.cpf,
{
nome: dadosCadastro.nomeCompleto,
dataNascimento: dadosCadastro.dataNascimento,
genero: dadosCadastro.genero,
}
);
// Etapa 2: Decisão baseada no risco
switch (analise.risco) {
case "BAIXO":
return { status: "APROVADO", proximaEtapa: "verificacao_documentos" };
case "MEDIO":
await encaminharParaAnalise(dadosCadastro, analise);
return { status: "EM_ANALISE", prazo: "24 horas" };
case "ALTO":
await registrarAlertaPLD(dadosCadastro, analise);
return { status: "BLOQUEADO", motivo: "inconsistencia_cadastral" };
}
}
async function registrarAlertaPLD(dados, analise) {
// Registra para o time de compliance
await db.alertasPLD.create({
cpf: dados.cpf,
alertas: analise.alertas,
timestamp: new Date(),
status: "PENDENTE_INVESTIGACAO",
requiereComunicacaoCOAF: analise.alertas.length >= 3,
});
}
- Decisão automatizada -- risco baixo segue automaticamente; risco alto é bloqueado sem intervenção humana
- Análise manual -- casos de risco médio são encaminhados para o time de compliance
- Registro obrigatório -- todas as decisões de PLD devem ser registradas com detalhes para auditoria
- Comunicação ao COAF -- operações com múltiplos alertas podem exigir comunicação ao regulador
Monitoramento contínuo de transações
A validação no onboarding é o primeiro passo, mas a prevenção eficaz exige monitoramento contínuo das transações.
| Regra de monitoramento | Ação | Frequência |
|---|---|---|
| Volume acima de R$ 10.000/dia | Revalidar CPF + análise manual | Em tempo real |
| Transações para múltiplos destinatários | Verificar CPFs dos destinatários | Em tempo real |
| Padrão de fracionamento (structuring) | Alerta automático + investigação | Diária |
| Mudança de dados cadastrais | Revalidar CPF após alteração | Por evento |
| Conta inativa que volta a transacionar | Revalidar CPF + análise de perfil | Por evento |
- Threshold dinâmico -- ajuste os limites com base no perfil do cliente e no histórico de transações
- Machine learning -- combine a validação de CPF com modelos de detecção de anomalias para maior precisão
- Revalidação periódica -- execute consultas de CPF periodicamente para detectar mudanças no status
Perguntas frequentes
O que é necessário para implementar validação de CPF neste contexto?
A validação de CPF exige uma chamada à API com o número do documento e a chave de autenticação. A CPFHub.io retorna o status do CPF, nome do titular e data de nascimento em menos de 200ms, permitindo a verificação em tempo real durante o cadastro ou transação.
A API CPFHub.io funciona para todos os volumes de consulta?
Sim. O plano gratuito oferece 50 consultas por mês sem cartão de crédito — ideal para testes e projetos pequenos. Para volumes maiores, o plano Pro inclui 1.000 consultas mensais por R$149. Se o limite for ultrapassado, a API não bloqueia: cobra R$0,15 por consulta adicional.
Como garantir conformidade com a LGPD ao usar uma API de CPF?
Use o CPF apenas para a finalidade declarada ao titular, armazene apenas o necessário (não guarde o CPF cru se um token bastar), implemente controle de acesso aos logs de consulta e documente a base legal para o tratamento. A ANPD orienta que dados de identificação devem ser tratados com o princípio da necessidade.
Quanto tempo leva para integrar a API CPFHub.io?
A integração básica leva menos de 30 minutos: crie uma conta em cpfhub.io, gere a API key no painel e faça uma chamada GET para https://api.cpfhub.io/cpf/{CPF} com o header x-api-key. A documentação inclui exemplos em Python, Node.js, PHP, Java e outras linguagens.
Conclusão
A validação de CPF via API é um componente essencial do programa de PLD/FT de qualquer fintech de pagamento. Desde o onboarding até o monitoramento contínuo de transações, a consulta em tempo real permite identificar inconsistências que são sinais clássicos de lavagem de dinheiro. Implemente as práticas deste artigo com a API da CPFHub.io — o plano gratuito com 50 consultas mensais está disponível sem cartão de crédito para validar a integração antes de escalar. 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.



