Para evitar multi-accounting em marketplaces, exija CPF válido e verificado via API no momento do cadastro, armazene o hash do CPF como chave de unicidade e bloqueie o CPF junto com a conta quando aplicar banimentos — impedindo que o mesmo titular crie uma nova conta com outro e-mail.
Introdução
O multi-accounting — prática de criar múltiplas contas em uma mesma plataforma — é um dos desafios mais persistentes para marketplaces. Usuários mal-intencionados criam contas duplicadas para explorar promoções de boas-vindas, contornar banimentos, manipular avaliações, realizar fraudes coordenadas ou acumular benefícios destinados a novos clientes. Como a criação de contas geralmente exige apenas um e-mail, essa barreira é trivial de contornar.
A validação de CPF na criação de contas resolve o problema ao vincular cada conta a uma pessoa física real.
Problemas causados pelo multi-accounting
Abuso de promoções
Plataformas frequentemente oferecem descontos ou créditos para novos usuários. Com múltiplas contas, um indivíduo resgata esses benefícios repetidamente.
Manipulação de avaliações
Vendedores ou compradores criam contas adicionais para inflar avaliações positivas dos próprios produtos ou publicar avaliações negativas de concorrentes.
Evasão de banimentos
Quando uma conta é suspensa por comportamento inadequado, o usuário simplesmente cria outra e continua operando.
Fraude coordenada
Múltiplas contas controladas pelo mesmo indivíduo podem ser usadas para simular transações, inflar métricas ou participar de esquemas de fraude de triangulação.
Distorção de métricas
A base de usuários fica inflada com contas duplicadas, comprometendo análises de negócio, relatórios para investidores e decisões estratégicas.
Estratégia de unicidade por CPF
A abordagem consiste em exigir um CPF válido e verificado para cada conta. Cada CPF pode ser vinculado a apenas uma conta ativa na plataforma.
Regras fundamentais
-
Um CPF, uma conta -- Cada CPF validado pode ter apenas uma conta ativa.
-
Validação real -- O CPF deve ser verificado via API, não apenas com validação sintática.
-
Nome deve conferir -- O nome informado no cadastro deve corresponder ao nome retornado pela API.
-
CPF imutável -- Após a criação da conta, o CPF não pode ser alterado pelo usuário.
Implementação com Python e FastAPI
import requests
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from difflib import SequenceMatcher
from datetime import datetime
app = FastAPI()
CPFHUB_API_KEY = 'SUA_CHAVE_DE_API'
# Simulacao de banco de dados
contas_db = {}
cpf_conta_map = {}
class NovaConta(BaseModel):
nome: str
cpf: str
email: str
senha: str
def consultar_cpf(cpf: str) -> dict:
url = f'https://api.cpfhub.io/cpf/{cpf}'
headers = {
'x-api-key': CPFHUB_API_KEY,
'Accept': 'application/json'
}
response = requests.get(url, headers=headers, timeout=10)
return response.json()
def similaridade(str1: str, str2: str) -> float:
return SequenceMatcher(
None,
str1.upper().strip(),
str2.upper().strip()
).ratio()
@app.post('/api/contas/criar')
def criar_conta(dados: NovaConta):
cpf = dados.cpf.replace('.', '').replace('-', '')
# 1. Verificar se o CPF ja esta vinculado a uma conta
if cpf in cpf_conta_map:
conta_existente = cpf_conta_map[cpf]
if contas_db[conta_existente]['status'] == 'ATIVA':
raise HTTPException(
status_code=409,
detail='Este CPF ja esta vinculado a uma conta ativa'
)
# 2. Validar CPF via API
resultado = consultar_cpf(cpf)
if not resultado.get('success'):
raise HTTPException(
status_code=400,
detail='CPF nao encontrado na base de dados'
)
dados_cpf = resultado['data']
# 3. Verificar correspondencia de nome
sim = similaridade(dados.nome, dados_cpf['name'])
if sim < 0.7:
raise HTTPException(
status_code=400,
detail='Nome informado nao corresponde ao CPF'
)
# 4. Criar conta
conta_id = f'CONTA-{len(contas_db) + 1:06d}'
conta = {
'id': conta_id,
'nome': dados_cpf['name'],
'cpf': cpf,
'email': dados.email,
'status': 'ATIVA',
'criada_em': datetime.now().isoformat(),
'dados_validados': {
'nome_api': dados_cpf['name'],
'genero': dados_cpf['gender'],
'nascimento': dados_cpf['birthDate'],
'similaridade_nome': round(sim, 2)
}
}
contas_db[conta_id] = conta
cpf_conta_map[cpf] = conta_id
return {
'sucesso': True,
'conta': {
'id': conta_id,
'nome': dados_cpf['name'],
'email': dados.email,
'status': 'ATIVA'
}
}
@app.get('/api/contas/verificar-cpf/{cpf}')
def verificar_disponibilidade_cpf(cpf: str):
cpf_limpo = cpf.replace('.', '').replace('-', '')
if cpf_limpo in cpf_conta_map:
conta_id = cpf_conta_map[cpf_limpo]
if contas_db[conta_id]['status'] == 'ATIVA':
return {
'disponivel': False,
'motivo': 'CPF ja vinculado a uma conta ativa'
}
return {'disponivel': True}
Tratando casos especiais
Conta suspensa ou banida
Quando uma conta é banida, o CPF vinculado a ela deve permanecer bloqueado para impedir que o usuário crie uma nova conta. Se a suspensão for temporária, o CPF pode ser liberado após o período.
Transferência de titularidade
Em casos excepcionais (herança, procuração legal), pode ser necessário transferir uma conta para outro CPF. Esse processo deve ser manual, documentado e validar o CPF do novo titular via API.
CPFs de menores de idade
Dependendo do tipo de marketplace, pode ser necessário verificar a idade do titular. A API retorna a data de nascimento, permitindo calcular a idade e aplicar restrições:
def verificar_idade_minima(dados_cpf: dict, idade_minima: int) -> bool:
ano_nascimento = dados_cpf['year']
idade = datetime.now().year - ano_nascimento
return idade >= idade_minima
Erro na API ou indisponibilidade
Se a API estiver temporariamente indisponível, o sistema pode criar a conta com status "PENDENTE_VALIDACAO" e processar a validação posteriormente. Contas pendentes devem ter funcionalidades limitadas até a confirmação.
Verificação em tempo real no front-end
Para melhorar a experiência do usuário, valide a disponibilidade do CPF antes do envio do formulário completo:
curl -X GET https://api.cpfhub.io/cpf/12345678900 \
-H "x-api-key: SUA_CHAVE_DE_API" \
-H "Accept: application/json" \
--max-time 10
Se o CPF retornar dados válidos e não estiver vinculado a nenhuma conta, exiba uma confirmação no formulário. Se já estiver vinculado, informe ao usuário que já existe uma conta para aquele CPF e ofereça a opção de recuperação de acesso.
Métricas de impacto
| Métrica | Antes da validação | Depois da validação |
|---|---|---|
| Contas duplicadas detectadas | Difícil de medir | Zero por definição |
| Abuso de cupons de boas-vindas | Alto | Eliminado |
| Avaliações falsas | Frequentes | Reduzidas significativamente |
| Contas após banimento | Recorrentes | Bloqueadas pelo CPF |
| Precisão da base de usuários | Baixa | Alta |
Boas práticas
-
Valide no back-end -- Nunca confie apenas na validação do front-end. A validação real deve acontecer no servidor.
-
Armazene o hash do CPF -- Para privacidade adicional, armazene o hash do CPF em vez do número em claro para verificações de unicidade.
-
Mensagens claras -- Quando o CPF já está vinculado, oriente o usuário a recuperar a conta existente.
-
Log de tentativas -- Registre tentativas de cadastro com CPFs já vinculados para identificar padrões de multi-accounting.
-
Conformidade LGPD -- Informe claramente na política de privacidade que o CPF é coletado e validado para garantir unicidade de contas. A ANPD orienta que a finalidade da coleta seja explicitada ao titular antes do tratamento.
Perguntas frequentes
O que acontece se o usuário tenta criar uma segunda conta com o mesmo CPF?
O sistema retorna HTTP 409 e bloqueia o cadastro. O usuário recebe a mensagem de que aquele CPF já está vinculado a uma conta ativa e é redirecionado para o fluxo de recuperação de acesso — impedindo multi-accounting sem expor qual conta existe.
Como a validação de CPF impede o abuso de cupons de boas-vindas?
Ao vincular o benefício ao CPF em vez do e-mail, o sistema garante que cada pessoa física receba o desconto apenas uma vez. Mesmo que o usuário crie um novo endereço de e-mail, o CPF já consta na base como utilizado e o benefício é negado automaticamente.
É necessário validar o CPF apenas no cadastro ou também em outras etapas?
O cadastro é o momento mais crítico, mas marketplaces com alto risco de fraude também validam CPF em ações sensíveis — como primeiro saque, mudança de dados bancários ou acesso de novo dispositivo. Isso cria camadas de verificação sem atrito excessivo para o usuário legítimo.
Como tratar o CPF de um usuário banido que apresenta CPF de terceiro para criar nova conta?
Combine a verificação de unicidade do CPF com análise comportamental. Se o CPF pertence a uma pessoa diferente do padrão de comportamento histórico (device fingerprint, IP, padrão de compra), sinalize para revisão manual antes de ativar a conta. A verificação de similaridade de nome no cadastro também ajuda a detectar esse cenário.
Conclusão
A validação de CPF na criação de contas é a forma mais eficaz de combater o multi-accounting em marketplaces. Ao vincular cada conta a um CPF verificado via API, a plataforma garante que cada pessoa física tenha uma única conta, eliminando abusos de promoções, manipulação de avaliações e evasão de banimentos.
Cadastre-se em cpfhub.io — 50 consultas mensais gratuitas, sem cartão de crédito — e implemente a barreira definitiva contra multi-accounting no seu marketplace.
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.



