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.

Redação CPFHub.io
Redação CPFHub.io
··7 min de leitura
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ênciaAção recomendada
Chargeback confirmado como fraudeInclusão imediata
Múltiplos chargebacks (2 ou mais em 6 meses)Inclusão imediata
Devolução abusiva comprovadaInclusão após análise
Compra com dados de terceiro confirmadaInclusão imediata
Tentativa de pagamento com cartão roubadoInclusão após confirmação
Comportamento suspeito sem confirmação de fraudeMonitoramento, não inclusão

Implementação com 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.


  • 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.

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 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.


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 — 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.

CPFHub.io

Pronto para integrar a API?

50 consultas gratuitas para testar agora. Sem cartão de crédito. Acesso imediato à documentação.

Redação CPFHub.io

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.

WhatsAppFale conosco via WhatsApp