A API de CPF da CPFHub.io permite verificar, em tempo real, se o nome e a data de nascimento informados pelo solicitante correspondem aos dados associados ao CPF consultado. Em processos de crédito consignado, essa verificação é a primeira barreira contra fraudes com documentos roubados ou dados falsos. A integração leva menos de 30 minutos e não exige cartão de crédito para começar.
Introdução
O crédito consignado e uma das modalidades de emprestimo mais populares no Brasil, com desconto direto na folha de pagamento ou beneficio do INSS. Justamente por oferecer taxas mais baixas e aprovacao facilitada, e também um alvo frequente de fraudes -- especialmente com uso de dados cadastrais falsos ou roubados.
O problema da fraude no consignado
Fraudes em crédito consignado incluem:
-
CPF de terceiros -- Uso de documentos roubados para solicitar emprestimos.
-
Dados falsos -- Nome ou data de nascimento alterados para burlar verificações.
-
Beneficiarios fantasma -- CPFs que não correspondem a pessoas reais.
-
Falsificacao de vinculo -- Simular vinculo empregaticio ou previdenciario.
A primeira linha de defesa e verificar se os dados informados pelo solicitante correspondem aos dados reais associados ao CPF.
Pontos de verificação no fluxo de consignado
| Etapa | Verificação via API |
|---|---|
| Solicitação do emprestimo | Validar CPF e confirmar nome |
| Análise de crédito | Confirmar data de nascimento e genero |
| Formalizacao do contrato | Revalidar dados antes da assinatura |
| Averbacao na folha | Confirmar CPF do beneficiario |
Implementação: verificação na solicitação
import requests
from datetime import datetime
class VerificadorConsignado:
def __init__(self, api_key):
self.session = requests.Session()
self.session.headers.update({
'x-api-key': api_key,
'Accept': 'application/json'
})
def verificar_solicitante(self, cpf, nome_informado, nascimento_informado):
"""
Verifica os dados do solicitante contra a API.
nascimento_informado: formato 'DD/MM/YYYY'
"""
url = f'https://api.cpfhub.io/cpf/{cpf}'
response = self.session.get(url, timeout=15)
if response.status_code != 200:
return {
'aprovado': False,
'motivo': f'Erro na consulta: HTTP {response.status_code}',
'score_confianca': 0
}
data = response.json()
if not data.get('success'):
return {
'aprovado': False,
'motivo': 'CPF nao encontrado',
'score_confianca': 0
}
pessoa = data['data']
verificacoes = []
pontos = 0
# Verificacao 1: Nome
nome_match = self._comparar_nomes(pessoa['name'], nome_informado)
verificacoes.append({
'campo': 'nome',
'informado': nome_informado,
'encontrado': pessoa['name'],
'match': nome_match
})
if nome_match:
pontos += 40
# Verificacao 2: Data de nascimento
nascimento_match = pessoa['birthDate'] == nascimento_informado
verificacoes.append({
'campo': 'nascimento',
'informado': nascimento_informado,
'encontrado': pessoa['birthDate'],
'match': nascimento_match
})
if nascimento_match:
pontos += 40
# Verificacao 3: CPF valido e consultavel
pontos += 20
score = pontos
aprovado = score >= 80
return {
'aprovado': aprovado,
'score_confianca': score,
'verificacoes': verificacoes,
'dados_api': {
'nome': pessoa['name'],
'genero': pessoa['gender'],
'nascimento': pessoa['birthDate']
},
'motivo': 'aprovado' if aprovado else 'dados_divergentes'
}
def _comparar_nomes(self, nome1, nome2):
palavras1 = set(nome1.upper().split())
palavras2 = set(nome2.upper().split())
if not palavras1 or not palavras2:
return False
intersecao = palavras1 & palavras2
return len(intersecao) / max(len(palavras1), len(palavras2)) >= 0.75
# Uso
verificador = VerificadorConsignado('SUA_CHAVE_DE_API')
resultado = verificador.verificar_solicitante(
cpf='12345678900',
nome_informado='Joao da Silva',
nascimento_informado='15/06/1990'
)
print(resultado)
Fluxo completo de verificação
def processar_solicitacao_consignado(verificador, solicitacao):
# Etapa 1: Verificar dados do solicitante
verificacao = verificador.verificar_solicitante(
cpf=solicitacao['cpf'],
nome_informado=solicitacao['nome'],
nascimento_informado=solicitacao['nascimento']
)
if not verificacao['aprovado']:
return {
'status': 'rejeitado',
'etapa': 'verificacao_cadastral',
'motivo': verificacao['motivo'],
'score': verificacao['score_confianca']
}
# Etapa 2: Verificar idade minima (normalmente 18+)
dados = verificacao['dados_api']
# Extrair ano da data de nascimento
partes = dados['nascimento'].split('/')
ano_nascimento = int(partes[2])
idade = datetime.now().year - ano_nascimento
if idade < 18:
return {
'status': 'rejeitado',
'etapa': 'verificacao_idade',
'motivo': 'solicitante_menor_de_idade'
}
# Etapa 3: Aprovado para analise de credito
return {
'status': 'aprovado_para_analise',
'score_cadastral': verificacao['score_confianca'],
'dados_validados': verificacao['dados_api'],
'proximo_passo': 'analise_credito'
}
Verificação em lote de beneficiarios INSS
Instituições que processam consignado para beneficiarios do INSS podem validar a base periodicamente:
import csv
import time
def validar_base_beneficiarios(verificador, arquivo):
resultados = {
'total': 0,
'validos': 0,
'divergentes': 0,
'nao_encontrados': 0,
'erros': 0
}
with open(arquivo, 'r') as f:
reader = csv.DictReader(f)
for row in reader:
resultado = verificador.verificar_solicitante(
cpf=row['cpf'],
nome_informado=row['nome'],
nascimento_informado=row['nascimento']
)
resultados['total'] += 1
if resultado['aprovado']:
resultados['validos'] += 1
elif resultado['motivo'] == 'CPF nao encontrado':
resultados['nao_encontrados'] += 1
elif resultado['motivo'] == 'dados_divergentes':
resultados['divergentes'] += 1
else:
resultados['erros'] += 1
time.sleep(2) # respeitar rate limit
return resultados
Integração com sistema de originacao
Em um sistema de originacao de crédito consignado, a verificação via API pode ser integrada como um step do pipeline:
async function pipelineConsignado(solicitacao) {
const etapas = [
{ nome: 'verificacao_cpf', fn: verificarCPF },
{ nome: 'analise_margem', fn: analisarMargem },
{ nome: 'score_credito', fn: calcularScore },
{ nome: 'aprovacao', fn: aprovar }
];
let contexto = { solicitacao };
for (const etapa of etapas) {
const resultado = await etapa.fn(contexto);
if (resultado.status === 'rejeitado') {
return { aprovado: false, etapa_rejeicao: etapa.nome, ...resultado };
}
contexto = { ...contexto, [etapa.nome]: resultado };
}
return { aprovado: true, contexto };
}
async function verificarCPF(ctx) {
const { cpf, nome } = ctx.solicitacao;
const response = await fetch(`https://api.cpfhub.io/cpf/${cpf}`, {
method: 'GET',
headers: {
'x-api-key': process.env.CPFHUB_API_KEY,
'Accept': 'application/json'
},
signal: AbortSignal.timeout(15000)
});
const data = await response.json();
if (!data.success) {
return { status: 'rejeitado', motivo: 'cpf_nao_encontrado' };
}
// Comparar nome
const nomeAPI = data.data.name.toUpperCase();
const nomeInformado = nome.toUpperCase();
if (!nomeAPI.includes(nomeInformado.split(' ')[0])) {
return { status: 'rejeitado', motivo: 'nome_divergente' };
}
return { status: 'aprovado', dados: data.data };
}
Conformidade regulatória
O Banco Central e o INSS exigem verificação de identidade em operações de crédito consignado. A validação via API contribui para:
-
Resolucao CMN 4.893 -- Exige procedimentos de KYC para operações de crédito.
-
IN INSS 138 -- Regulamenta a consignacao em beneficios previdenciarios.
-
LGPD -- Tratamento de dados pessoais com base legal de obrigação regulatória.
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 verificação de dados via API de CPF e uma etapa fundamental no processo de crédito consignado. Ao validar nome, data de nascimento e existencia do CPF antes de aprovar a operação, você reduz fraudes, fortalece o compliance e protege tanto a instituicao quanto o beneficiario.
Cadastre-se em cpfhub.io — 50 consultas mensais gratuitas, sem cartão de crédito — e comece hoje mesmo.
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.



