Marketplaces podem evitar golpes com APIs gratuitas de CPF validando a identidade de vendedores e compradores no cadastro: a consulta confirma que o CPF existe, que o nome declarado corresponde ao titular e que o documento não está sendo reutilizado em múltiplas contas — bloqueando as fraudes mais comuns sem custo de licenciamento.
Introdução
Marketplaces são alvos frequentes de golpes digitais. Vendedores fraudulentos criam contas com CPFs falsos para aplicar golpes em compradores, enquanto compradores mal-intencionados usam identidades falsas para realizar chargebacks. A validação de CPF é a primeira camada de defesa contra esses cenários, e uma API gratuita de CPF permite implementá-la sem custo, especialmente em marketplaces em fase inicial que ainda não têm receita para investir em soluções pagas.
Tipos de golpes mais comuns em marketplaces
Cada tipo de golpe explora uma fraqueza diferente no processo de cadastro e verificação de identidade.
| Tipo de golpe | Como funciona | Impacto |
|---|---|---|
| Vendedor fantasma | Cria conta com CPF falso, anuncia produto, recebe pagamento e desaparece | Perda financeira do comprador |
| Conta múltipla | Mesmo fraudador cria várias contas com CPFs diferentes para contornar banimento | Reincidência de fraudes |
| CPF de terceiro | Usa CPF de outra pessoa para criar conta e cometer fraudes | Vítima inocente prejudicada |
| Chargeback fraudulento | Compra com identidade falsa e contesta o pagamento | Perda para vendedor e marketplace |
| Lavagem de reputação | Cria contas novas após ter conta anterior banida por má conduta | Erosão da confiança |
- Vendedor fantasma -- o golpe mais comum, facilitado quando não há verificação de identidade
- CPF de terceiro -- além da fraude, coloca o marketplace em risco de violação da LGPD
- Conta múltipla -- sem validação, nada impede que um fraudador banido retorne com novo cadastro
Como a validação de CPF combate cada golpe
A API de CPF atua em diferentes momentos do fluxo para bloquear tentativas de fraude.
import requests
import os
from datetime import datetime
class AntifraudeMarketplace:
def __init__(self):
self.api_key = os.environ.get("CPFHUB_API_KEY", "")
self.base_url = "https://api.cpfhub.io/cpf"
self.cpfs_cadastrados = {} # Em produção, usar banco de dados
def validar_novo_cadastro(self, cpf: str, nome_informado: str) -> dict:
cpf_limpo = "".join(c for c in cpf if c.isdigit())
# Verificação 1: CPF já cadastrado no marketplace
if cpf_limpo in self.cpfs_cadastrados:
return {
"aprovado": False,
"motivo": "CPF já cadastrado em outra conta",
"risco": "alto"
}
# Verificação 2: Consultar CPF na API
try:
response = requests.get(
f"{self.base_url}/{cpf_limpo}",
headers={"x-api-key": self.api_key},
timeout=10
)
if response.status_code != 200:
return {
"aprovado": False,
"motivo": "CPF não encontrado na base de dados",
"risco": "alto"
}
dados = response.json()
if not dados.get("success"):
return {
"aprovado": False,
"motivo": "CPF inválido",
"risco": "alto"
}
nome_api = dados["data"]["name"].upper()
nome_input = nome_informado.upper()
# Verificação 3: Nome corresponde
correspondencia = self._calcular_similaridade(nome_api, nome_input)
if correspondencia < 0.6:
return {
"aprovado": False,
"motivo": "Nome informado não corresponde ao CPF",
"risco": "alto",
"detalhe": f"Esperado: {nome_api}"
}
# Verificação 4: Idade mínima
ano_nascimento = int(dados["data"]["year"])
idade = datetime.now().year - ano_nascimento
if idade < 18:
return {
"aprovado": False,
"motivo": "Titular do CPF é menor de idade",
"risco": "medio"
}
self.cpfs_cadastrados[cpf_limpo] = {
"nome": nome_api,
"data_cadastro": datetime.now().isoformat()
}
return {
"aprovado": True,
"nome_confirmado": dados["data"]["name"],
"risco": "baixo"
}
except Exception as e:
return {
"aprovado": None,
"motivo": f"Erro na verificação: {str(e)}",
"risco": "medio"
}
def _calcular_similaridade(self, s1: str, s2: str) -> float:
palavras_s1 = set(s1.split())
palavras_s2 = set(s2.split())
if not palavras_s1 or not palavras_s2:
return 0.0
intersecao = palavras_s1 & palavras_s2
uniao = palavras_s1 | palavras_s2
return len(intersecao) / len(uniao)
| Verificação | Golpe combatido | Eficácia |
|---|---|---|
| CPF já cadastrado | Conta múltipla | Alta |
| CPF existe na base | Vendedor fantasma com CPF falso | Alta |
| Nome corresponde | CPF de terceiro | Média-alta |
| Idade mínima | Cadastro com CPF de menor | Alta |
- Verificação em camadas -- cada etapa filtra um tipo diferente de tentativa de fraude
- Similaridade de nome -- tolerante a variações de acentuação e abreviações
- Registro de CPFs -- impede que o mesmo CPF seja usado em múltiplas contas
Implementando verificação no fluxo de onboarding
A validação deve ser integrada ao fluxo de cadastro de vendedores, que exige maior rigor.
class OnboardingVendedor:
def __init__(self):
self.antifraude = AntifraudeMarketplace()
def iniciar_cadastro(self, dados: dict) -> dict:
etapas = {
"cpf": self._validar_cpf,
"dados_pessoais": self._validar_dados,
"endereco": self._validar_endereco,
}
resultados = {}
for etapa, validador in etapas.items():
resultado = validador(dados)
resultados[etapa] = resultado
if resultado.get("bloqueante"):
return {
"status": "rejeitado",
"etapa_falha": etapa,
"resultados": resultados
}
return {"status": "aprovado", "resultados": resultados}
def _validar_cpf(self, dados: dict) -> dict:
resultado = self.antifraude.validar_novo_cadastro(
cpf=dados.get("cpf", ""),
nome_informado=dados.get("nome", "")
)
return {
"aprovado": resultado["aprovado"] is True,
"bloqueante": resultado["aprovado"] is False,
"risco": resultado.get("risco", "desconhecido"),
"detalhes": resultado.get("motivo", "")
}
def _validar_dados(self, dados: dict) -> dict:
campos_obrigatorios = ["nome", "email", "telefone"]
ausentes = [c for c in campos_obrigatorios if not dados.get(c)]
return {
"aprovado": len(ausentes) == 0,
"bloqueante": len(ausentes) > 0,
"detalhes": f"Campos ausentes: {', '.join(ausentes)}" if ausentes else ""
}
def _validar_endereco(self, dados: dict) -> dict:
return {
"aprovado": bool(dados.get("cep")),
"bloqueante": False,
"detalhes": "" if dados.get("cep") else "CEP não informado"
}
- Validação em etapas -- cada etapa pode ser bloqueante ou apenas gerar um alerta
- Fail fast -- se o CPF é inválido, não há razão para continuar com as demais verificações
- Flexibilidade -- compradores podem ter validação mais leve, vendedores mais rigorosa
Métricas e monitoramento de fraudes
Acompanhar as métricas de validação ajuda a identificar padrões de ataque e ajustar as regras.
| Métrica | O que indica | Ação se anormal |
|---|---|---|
| Taxa de CPFs inválidos | % de cadastros com CPF falso | Aumentar verificação |
| Taxa de nome divergente | % de CPFs com nome diferente | Revisar tolerância |
| CPFs duplicados/dia | Tentativas de conta múltipla | Bloquear IP |
| Horário das tentativas | Padrão de horário dos golpistas | Regras por horário |
| Origem geográfica | Concentração suspeita de cadastros | Rate limit por região |
class MetricasAntifraude:
def __init__(self):
self.contadores = {
"total_validacoes": 0,
"cpf_invalido": 0,
"nome_divergente": 0,
"cpf_duplicado": 0,
"aprovados": 0,
}
def registrar(self, resultado: dict):
self.contadores["total_validacoes"] += 1
if resultado.get("aprovado") is True:
self.contadores["aprovados"] += 1
elif "não encontrado" in resultado.get("motivo", ""):
self.contadores["cpf_invalido"] += 1
elif "não corresponde" in resultado.get("motivo", ""):
self.contadores["nome_divergente"] += 1
elif "já cadastrado" in resultado.get("motivo", ""):
self.contadores["cpf_duplicado"] += 1
def relatorio(self) -> dict:
total = max(self.contadores["total_validacoes"], 1)
return {
"taxa_aprovacao": f"{self.contadores['aprovados'] / total:.1%}",
"taxa_cpf_invalido": f"{self.contadores['cpf_invalido'] / total:.1%}",
"taxa_nome_divergente": f"{self.contadores['nome_divergente'] / total:.1%}",
"taxa_duplicado": f"{self.contadores['cpf_duplicado'] / total:.1%}",
}
- Monitoramento contínuo -- métricas diárias ajudam a detectar ondas de tentativas de fraude
- Ajuste dinâmico -- se a taxa de fraude sobe, a tolerância da similaridade pode ser reduzida
- Relatórios -- dados quantitativos justificam investimento em camadas adicionais de proteção
Perguntas frequentes
O que é necessário para implementar validação de CPF em um marketplace?
Uma chamada GET para https://api.cpfhub.io/cpf/{CPF} com o header x-api-key retorna nome, data de nascimento e gênero do titular. Com esses dados, o marketplace consegue comparar o nome declarado pelo vendedor, verificar maioridade e detectar CPFs duplicados — tudo em tempo real durante o cadastro, com latência média de ~900ms.
Como a API reage quando o limite gratuito é atingido?
A API da CPFHub.io nunca bloqueia consultas nem retorna erro por volume excedido. Ao ultrapassar as 50 consultas mensais do plano gratuito, cada consulta adicional é cobrada automaticamente a R$0,15. O marketplace continua operando sem interrupção; o controle de custo fica no painel em app.cpfhub.io/settings/billing.
Como garantir conformidade com a LGPD ao validar CPF no marketplace?
Colete o CPF exclusivamente para verificação de identidade, registre a finalidade nos termos de uso e armazene apenas o mínimo necessário. A ANPD orienta que dados de identificação devem ser tratados com o princípio da necessidade. Não compartilhe dados de CPF com fornecedores que não tenham base legal para recebê-los.
Validação de CPF é suficiente para bloquear 100% das fraudes em marketplaces?
Não — é a camada mais acessível e de maior impacto imediato, mas deve ser combinada com análise de comportamento, verificação de e-mail e monitoramento de transações. CPFs sintéticos numericamente válidos podem passar na verificação algorítmica, mas a consulta à API confirma se o número pertence a uma pessoa real, eliminando a grande maioria das tentativas.
Conclusão
APIs gratuitas de CPF são uma ferramenta acessível e eficaz para marketplaces combaterem golpes desde o primeiro dia de operação. A validação em camadas, verificando existência do CPF, correspondência de nome, idade mínima e unicidade no marketplace, bloqueia a grande maioria das tentativas de fraude sem custo de licenciamento. Cadastre-se em cpfhub.io — 50 consultas mensais gratuitas, sem cartão de crédito — e ative a validação de CPF no onboarding de vendedores ainda hoje.
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.



