# Como validar CPF na criação de contas em marketplaces para evitar multi-accounting

> Aprenda a implementar validação de CPF na criação de contas em marketplaces para prevenir multi-accounting e fraudes com múltiplas identidades.

**Publicado:** 24/04/2025
**Autor:** Redação CPFHub.io
**URL:** https://cpfhub.io/blog/como-validar-cpf-na-criacao-de-contas-em-marketplaces-para-evitar-multi-accounting

---


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

```python
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:

```python
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:

```bash
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](https://www.gov.br/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.

### Leia também

- [Como evitar chargebacks usando validação de CPF no checkout](https://cpfhub.io/blog/como-evitar-chargebacks-usando-validacao-de-cpf-no-checkout)
- [Golpe do CPF clonado em compras online: como detectar e prevenir](https://cpfhub.io/blog/golpe-cpf-clonado-compras-online-detectar-prevenir)
- [Diferença entre validação de CPF e consulta de CPF: quando usar cada uma](https://cpfhub.io/blog/diferenca-entre-validacao-de-cpf-e-consulta-de-cpf-quando-usar-cada-uma)
- [KYC no Brasil: quais setores são obrigados a validar CPF por lei](https://cpfhub.io/blog/kyc-no-brasil-quais-setores-sao-obrigados-a-validar-cpf-por-lei)

---

## 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](https://www.cpfhub.io/) — 50 consultas mensais gratuitas, sem cartão de crédito — e implemente a barreira definitiva contra multi-accounting no seu marketplace.

