# Como implementar lista negra de CPFs fraudulentos no seu e-commerce

> Aprenda a implementar e gerenciar uma lista negra de CPFs fraudulentos no e-commerce, combinando validação via API com regras de bloqueio automatizado.

**Publicado:** 25/03/2025
**Autor:** Redação CPFHub.io
**URL:** https://cpfhub.io/blog/como-implementar-lista-negra-de-cpfs-fraudulentos-no-seu-e-commerce

---


Uma lista negra de CPFs bloqueia automaticamente fraudadores reincidentes no e-commerce, impedindo novas transações de CPFs com histórico comprovado de chargeback, devolução abusiva ou uso de dados de terceiros — sem impactar clientes legítimos.

## Introdução

Toda operação de e-commerce que atua por tempo suficiente acumula um histórico de fraudes. CPFs envolvidos em chargebacks, devoluções abusivas, compras com cartões roubados e outras práticas ilícitas representam riscos recorrentes se não forem catalogados e bloqueados. Uma lista negra (blocklist) de CPFs fraudulentos é uma ferramenta de defesa que impede que esses indivíduos causem novos prejuízos.

Porém, manter uma lista negra eficaz exige mais do que simplesmente armazenar CPFs em um banco de dados. É necessário validar os CPFs, definir critérios de inclusão e remoção, e garantir conformidade legal.

---

## Por que manter uma lista negra de CPFs

* **Prevenção de reincidência** -- Fraudadores conhecidos são impedidos de realizar novas transações.

* **Redução de chargebacks** -- Bloquear CPFs com histórico de disputas reduz o volume de contestações.

* **Proteção automatizada** -- A verificação contra a lista negra é instantânea e não requer análise humana.

* **Inteligência de fraude** -- O registro histórico de CPFs fraudulentos permite identificar padrões e tendências.

* **Defesa em disputas** -- Demonstrar que a empresa mantém mecanismos ativos de prevenção fortalece a posição em contestações junto a operadoras.

---

## Critérios de inclusão na lista negra

Nem toda ocorrência negativa deve resultar em bloqueio permanente. Defina critérios claros:

| Ocorrência | Ação recomendada |
| --- | --- |
| Chargeback confirmado como fraude | Inclusão imediata |
| Múltiplos chargebacks (2 ou mais em 6 meses) | Inclusão imediata |
| Devolução abusiva comprovada | Inclusão após análise |
| Compra com dados de terceiro confirmada | Inclusão imediata |
| Tentativa de pagamento com cartão roubado | Inclusão após confirmação |
| Comportamento suspeito sem confirmação de fraude | Monitoramento, não inclusão |

---

## Implementação com Python

```python
import requests
import json
from datetime import datetime

CPFHUB_API_KEY = 'SUA_CHAVE_DE_API'

# Simulacao de banco de dados da lista negra
lista_negra = {}

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 adicionar_lista_negra(cpf: str, motivo: str, evidencias: list,
                          adicionado_por: str) -> dict:
    # Validar o CPF antes de adicionar
    resultado = consultar_cpf(cpf)

    if not resultado.get('success'):
        return {'erro': 'CPF nao encontrado na base. Verifique o numero.'}

    dados = resultado['data']

    # Verificar se ja esta na lista
    if cpf in lista_negra:
        lista_negra[cpf]['ocorrencias'].append({
            'motivo': motivo,
            'evidencias': evidencias,
            'data': datetime.now().isoformat(),
            'adicionado_por': adicionado_por
        })
        lista_negra[cpf]['ultima_atualizacao'] = datetime.now().isoformat()
        return {
            'sucesso': True,
            'acao': 'atualizado',
            'registro': lista_negra[cpf]
        }

    # Criar novo registro
    registro = {
        'cpf': cpf,
        'nome': dados['name'],
        'genero': dados['gender'],
        'nascimento': dados['birthDate'],
        'status': 'ATIVO',
        'adicionado_em': datetime.now().isoformat(),
        'ultima_atualizacao': datetime.now().isoformat(),
        'ocorrencias': [{
            'motivo': motivo,
            'evidencias': evidencias,
            'data': datetime.now().isoformat(),
            'adicionado_por': adicionado_por
        }]
    }

    lista_negra[cpf] = registro
    return {'sucesso': True, 'acao': 'adicionado', 'registro': registro}

def verificar_lista_negra(cpf: str) -> dict:
    if cpf in lista_negra and lista_negra[cpf]['status'] == 'ATIVO':
        return {
            'bloqueado': True,
            'motivo': lista_negra[cpf]['ocorrencias'][-1]['motivo'],
            'total_ocorrencias': len(lista_negra[cpf]['ocorrencias']),
            'desde': lista_negra[cpf]['adicionado_em']
        }
    return {'bloqueado': False}

def remover_lista_negra(cpf: str, motivo_remocao: str,
                        removido_por: str) -> dict:
    if cpf not in lista_negra:
        return {'erro': 'CPF nao encontrado na lista negra'}

    lista_negra[cpf]['status'] = 'REMOVIDO'
    lista_negra[cpf]['removido_em'] = datetime.now().isoformat()
    lista_negra[cpf]['motivo_remocao'] = motivo_remocao
    lista_negra[cpf]['removido_por'] = removido_por

    return {'sucesso': True, 'acao': 'removido'}

def validar_pedido(cpf: str, nome: str, valor: float) -> dict:
    # 1. Verificar lista negra
    verificacao = verificar_lista_negra(cpf)
    if verificacao['bloqueado']:
        return {
            'aprovado': False,
            'motivo': 'CPF bloqueado na lista negra',
            'detalhes': verificacao
        }

    # 2. Validar CPF via API
    resultado = consultar_cpf(cpf)
    if not resultado.get('success'):
        return {
            'aprovado': False,
            'motivo': 'CPF nao encontrado na base'
        }

    # 3. Verificar nome
    from difflib import SequenceMatcher
    sim = SequenceMatcher(
        None,
        nome.upper().strip(),
        resultado['data']['nameUpper']
    ).ratio()

    if sim < 0.7:
        return {
            'aprovado': False,
            'motivo': 'Nome divergente do CPF'
        }

    return {
        'aprovado': True,
        'titular': resultado['data']['name'],
        'cpf_validado': resultado['data']['cpf']
    }

# Exemplo: adicionar CPF a lista negra
print(adicionar_lista_negra(
    cpf='98765432100',
    motivo='Chargeback confirmado como fraude',
    evidencias=['Pedido #12345', 'Contestacao operadora ref. CB-2025-001'],
    adicionado_por='analista@loja.com'
))

# Exemplo: validar pedido
print(validar_pedido(
    cpf='98765432100',
    nome='Teste da Silva',
    valor=500.00
))
```

---

## Estrutura de dados da lista negra

Cada registro na lista negra deve conter informações suficientes para auditoria:

* **CPF** -- O número do documento.

* **Nome do titular** -- Obtido via API no momento da inclusão.

* **Status** -- ATIVO ou REMOVIDO.

* **Ocorrências** -- Lista de eventos que motivaram a inclusão, cada um com motivo, evidências, data e responsável.

* **Data de inclusão** -- Quando o CPF foi adicionado.

* **Data de remoção** -- Se aplicável, quando e por que foi removido.

Essa estrutura garante rastreabilidade completa e facilita auditorias internas e externas.

---

## Boas práticas de gestão

### Revisão periódica

Revise a lista negra periodicamente (por exemplo, a cada 6 meses) para:

* Remover CPFs que foram incluídos por erro.
* Reavaliar CPFs com ocorrências antigas que podem não representar mais risco.
* Atualizar os dados cadastrais consultando a API novamente.

### Processo de apelação

Ofereça um canal para que pessoas bloqueadas possam solicitar a revisão da decisão. Isso protege a empresa de bloqueios injustos e demonstra boa-fé.

### Níveis de bloqueio

Em vez de um bloqueio binário, considere níveis:

* **Alerta** -- O pedido é sinalizado mas pode ser aprovado manualmente.
* **Restrição** -- O CPF pode comprar apenas com pagamento antecipado (boleto/PIX).
* **Bloqueio total** -- Nenhuma compra é permitida.

### Compartilhamento entre empresas

Considere participar de redes de compartilhamento de informações sobre fraudes, desde que em conformidade com a LGPD. Isso amplia a cobertura da lista negra com dados de outras operações.

---

## Conformidade legal

* **LGPD** -- A manutenção de uma lista negra é justificável pela base legal de legítimo interesse (prevenção de fraudes). Porém, o titular tem direito de saber que seus dados estão sendo tratados e de solicitar revisão.

* **CDC** -- A recusa de venda deve ser fundamentada em evidências concretas de fraude, não em suspeitas infundadas.

* **Registro de decisões** -- Mantenha logs detalhados de cada inclusão e exclusão para demonstrar que o processo é criterioso e não discriminatório.

---

## Perguntas frequentes

### O que é uma lista negra de CPFs e como ela funciona no e-commerce?

É um registro interno de CPFs associados a comportamento fraudulento confirmado — chargeback confirmado, devolução fraudulenta, criação de múltiplas contas. Quando um CPF da lista tenta fazer uma nova compra, o sistema bloqueia automaticamente ou sinaliza para revisão manual, interrompendo a reincidência antes que o prejuízo se repita.

### É legal manter uma lista negra de CPFs no Brasil?

Sim, desde que baseada em critérios objetivos e documentados (chargebacks confirmados, fraudes comprovadas) e desde que o uso seja interno para proteção do negócio. A [LGPD](https://www.planalto.gov.br/ccivil_03/_ato2015-2018/2018/lei/l13709.htm) permite o tratamento de dados para interesse legítimo, incluindo prevenção a fraudes. Não é recomendado compartilhar essa lista com terceiros sem base legal específica.

### Quais critérios justificam adicionar um CPF à lista negra?

Chargeback confirmado pela operadora, devolução fraudulenta comprovada, múltiplas contas detectadas com o mesmo CPF, ou uso do CPF em tentativas de fraude documentadas. Nunca use critérios subjetivos ou reclamações sem evidência — isso expõe a empresa a questionamentos legais e bloqueios injustos.

### Como combinar lista negra com validação de CPF via API?

Use a validação via API para confirmar que o CPF existe e o nome corresponde ao informado (barreira contra identidades falsas). Em seguida, verifique o CPF na sua lista negra interna (barreira contra reincidentes). As duas verificações são complementares: a API valida o CPF perante a Receita Federal; a lista negra aplica o histórico da sua própria operação.

### Leia também

- [Golpe do CPF clonado em compras online: como detectar e prevenir](https://cpfhub.io/blog/golpe-cpf-clonado-compras-online-detectar-prevenir)
- [Fraude de devolução: como vincular CPF para rastrear devoluções abusivas](https://cpfhub.io/blog/fraude-de-devolucao-como-vincular-cpf-para-rastrear-devolucoes-abusivas)
- [Como evitar chargebacks usando validação de CPF no checkout](https://cpfhub.io/blog/como-evitar-chargebacks-usando-validacao-de-cpf-no-checkout)
- [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)

---

## Conclusão

Uma lista negra de CPFs bem implementada é uma das ferramentas mais eficazes para proteger um e-commerce contra fraudes recorrentes. Ao combinar a validação de CPF via API com critérios claros de inclusão, revisão periódica e conformidade legal, a empresa cria uma barreira automatizada que bloqueia fraudadores conhecidos sem impactar clientes legítimos.

Cadastre-se em [cpfhub.io](https://www.cpfhub.io/) — 50 consultas mensais gratuitas, sem cartão de crédito — e valide o CPF de cada pedido antes de liberar a entrega, bloqueando reincidentes com precisão.

