# Como validar CPF em programas de afiliados para evitar auto-compra fraudulenta

> Saiba como usar validação de CPF via API para detectar e prevenir auto-compra fraudulenta em programas de afiliados e marketing de performance.

**Publicado:** 25/12/2024
**Autor:** Redação CPFHub.io
**URL:** https://cpfhub.io/blog/como-validar-cpf-em-programas-de-afiliados-para-evitar-auto-compra-fraudulenta

---


Validar o CPF do comprador contra o CPF do afiliado em cada transação é a forma mais direta de detectar auto-compra fraudulenta em programas de afiliados: a API do CPFHub.io retorna nome, data de nascimento e outros dados do titular, permitindo cruzar identidades em tempo real e bloquear ou reter comissões antes que o pagamento seja liberado.

## Introdução

Programas de afiliados são uma estratégia poderosa de aquisição de clientes. O modelo funciona bem quando afiliados genuínos promovem produtos e recebem comissões por vendas reais. O problema surge quando afiliados manipulam o sistema realizando auto-compras -- comprando os produtos que eles mesmos promovem para receber a comissão sem gerar demanda real. Essa prática corrói a margem do negócio e distorce métricas de performance.

A validação de CPF é uma técnica eficaz para detectar auto-compra, pois permite cruzar a identidade do afiliado com a identidade do comprador.

---

## O que é auto-compra em programas de afiliados

A auto-compra ocorre quando um afiliado realiza compras usando seu próprio link de afiliação para receber a comissão. Em variações mais sofisticadas, o afiliado pode:

* **Usar dados de familiares** -- Comprar com CPF do cônjuge, filhos ou pais para dificultar a detecção.

* **Criar múltiplas contas** -- Registrar-se como afiliado e como comprador com identidades diferentes.

* **Comprar e devolver** -- Efetuar a compra para receber a comissão e depois solicitar o reembolso do produto.

* **Usar CPFs de terceiros** -- Adquirir ou utilizar dados de pessoas sem relação para mascarar a operação.

O impacto financeiro vai além da comissão paga indevidamente: inclui custos de processamento de pagamento, logística de envio e devolução, e o desgaste operacional de lidar com transações fraudulentas.

---

## Como a validação de CPF detecta auto-compra

O princípio é simples: ao cadastrar um afiliado, o programa coleta e válida seu CPF. Quando uma compra é realizada pelo link desse afiliado, o sistema válida o CPF do comprador e verifica se há relação entre os dois.

### Verificações possíveis

* **CPF idêntico** -- O CPF do comprador é o mesmo do afiliado. Caso mais simples de detectar.

* **Mesmo sobrenome e endereço** -- Pode indicar compra por familiar.

* **Nome parcialmente coincidente** -- Variações do mesmo nome podem indicar tentativa de camuflagem.

* **Padrão de compras** -- Um afiliado cujos compradores têm CPFs com dados semelhantes (mesmo sobrenome, faixas etárias próximas) pode estar usando dados de familiares.

---

## Implementação com Node.js

O exemplo abaixo mostra como criar um middleware de validação que compara o CPF do afiliado com o CPF do comprador em cada transação:

```javascript
const express = require('express');
const app = express();
app.use(express.json());

const CPFHUB_API_KEY = 'SUA_CHAVE_DE_API';

async function consultarCpf(cpf) {
 const controller = new AbortController();
 const timeoutId = setTimeout(() => controller.abort(), 10000);

 try {
 const response = await fetch(
 `https://api.cpfhub.io/cpf/${cpf}`,
 {
 method: 'GET',
 headers: {
 'x-api-key': CPFHUB_API_KEY,
 'Accept': 'application/json'
 },
 signal: controller.signal
 }
 );
 clearTimeout(timeoutId);
 return await response.json();
 } catch (error) {
 clearTimeout(timeoutId);
 throw error;
 }
}

function extrairSobrenome(nomeCompleto) {
 const partes = nomeCompleto.toUpperCase().trim().split(' ');
 return partes.length > 1 ? partes[partes.length - 1] : '';
}

async function verificarAutoCompra(cpfAfiliado, cpfComprador) {
 const alertas = [];
 let risco = 'BAIXO';

 // 1. CPF identico
 if (cpfAfiliado === cpfComprador) {
 return {
 risco: 'CRITICO',
 alertas: ['CPF do comprador e identico ao CPF do afiliado'],
 acao: 'BLOQUEAR_COMISSAO'
 };
 }

 // 2. Consultar ambos os CPFs
 const [dadosAfiliado, dadosComprador] = await Promise.all([
 consultarCpf(cpfAfiliado),
 consultarCpf(cpfComprador)
 ]);

 if (!dadosAfiliado.success || !dadosComprador.success) {
 alertas.push('Falha na validacao de um dos CPFs');
 risco = 'ALTO';
 return { risco, alertas, acao: 'REVISAR' };
 }

 const nomeAfiliado = dadosAfiliado.data.nameUpper;
 const nomeComprador = dadosComprador.data.nameUpper;

 // 3. Verificar sobrenome comum
 const sobrenomeAfiliado = extrairSobrenome(nomeAfiliado);
 const sobrenomeComprador = extrairSobrenome(nomeComprador);

 if (sobrenomeAfiliado && sobrenomeAfiliado === sobrenomeComprador) {
 alertas.push(
 `Mesmo sobrenome: afiliado="${nomeAfiliado}", `
 + `comprador="${nomeComprador}"`
 );
 risco = 'MEDIO';
 }

 // 4. Verificar proximidade de idade (possivel familiar)
 const idadeAfiliado = new Date().getFullYear() - dadosAfiliado.data.year;
 const idadeComprador = new Date().getFullYear() - dadosComprador.data.year;
 const diffIdade = Math.abs(idadeAfiliado - idadeComprador);

 if (diffIdade <= 5 && sobrenomeAfiliado === sobrenomeComprador) {
 alertas.push('Possivel familiar: sobrenome igual e idades proximas');
 risco = 'ALTO';
 }

 // 5. Decisao
 let acao;
 if (risco === 'ALTO') {
 acao = 'RETER_COMISSAO';
 } else if (risco === 'MEDIO') {
 acao = 'REVISAR';
 } else {
 acao = 'LIBERAR_COMISSAO';
 }

 return { risco, alertas, acao };
}

app.post('/api/vendas/validar-comissao', async (req, res) => {
 const { cpf_afiliado, cpf_comprador, valor_comissao } = req.body;

 try {
 const resultado = await verificarAutoCompra(
 cpf_afiliado,
 cpf_comprador
 );

 res.json({
 validacao: resultado,
 comissao: valor_comissao,
 liberada: resultado.acao === 'LIBERAR_COMISSAO'
 });
 } catch (error) {
 res.status(500).json({ erro: 'Erro na validacao' });
 }
});

app.listen(3000);
```

---

## Regras de decisão para comissões

| Situação detectada | Risco | Ação recomendada |
| --- | --- | --- |
| CPF do comprador igual ao do afiliado | Crítico | Bloquear comissão e notificar compliance |
| Mesmo sobrenome e idades próximas | Alto | Reter comissão para análise manual |
| Apenas mesmo sobrenome | Médio | Revisar manualmente antes de liberar |
| Nenhuma relação detectada | Baixo | Liberar comissão normalmente |

---

## Estratégias complementares

### Período de quarentena

Não libere comissões imediatamente. Estabeleça um período de quarentena (por exemplo, 30 dias) para que devoluções e chargebacks possam ser processados antes do pagamento ao afiliado. Essa prática reduz o incentivo para compra-e-devolução.

### Limite de comissões por CPF de comprador

Se o mesmo CPF de comprador aparece com frequência nos pedidos de um afiliado, isso indica uma base de compradores restrita ou artificial. Estabeleça limites de comissão por CPF único de comprador.

### Monitoramento de taxa de devolução

Afiliados com taxas de devolução significativamente acima da média são candidatos a análise aprofundada. A auto-compra frequentemente resulta em devoluções após o recebimento da comissão.

### Validação de CPF no cadastro do afiliado

Antes mesmo de ativar um afiliado, valide seu CPF via API:

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

Confirme que o nome retornado corresponde ao nome informado. Isso garante que a identidade do afiliado é real e facilita as verificações futuras contra auto-compra.

---

## Métricas de monitoramento

Para medir a eficácia do sistema, acompanhe:

* **Taxa de bloqueio de comissões** -- Percentual de comissões retidas ou bloqueadas.

* **Taxa de confirmação após revisão** -- Quantas comissões retidas se mostraram legítimas após análise.

* **Economia mensal** -- Valor total de comissões indevidas evitadas.

* **Taxa de devolução por afiliado** -- Comparar com a média da plataforma.

---

## Perguntas frequentes

### Por que a validação de CPF é mais eficaz do que cookies ou fingerprint para detectar auto-compra?

Cookies e fingerprints são facilmente contornados com navegadores diferentes, VPNs ou dispositivos alternativos. O CPF é um identificador vinculado à identidade civil do afiliado e do comprador — impossível de falsificar sem documentação falsa. Cruzar os dados cadastrais retornados pela API (nome, sobrenome, data de nascimento) permite identificar relações familiares e identidades compartilhadas que nenhuma técnica baseada em sessão consegue detectar.

### A API do CPFHub.io pode ser chamada em paralelo para os dois CPFs sem risco de bloqueio?

Sim. Como demonstrado no código com `Promise.all()`, as duas consultas rodam em paralelo sem problema. A API do CPFHub.io não bloqueia requisições ao atingir o limite do plano — ela cobra R$0,15 por consulta adicional. O plano gratuito oferece 50 consultas/mês para testes, e o plano Pro inclui 1.000 consultas mensais por R$149.

### Quais campos da resposta da API são mais úteis para detecção de auto-compra?

Os campos `nameUpper` (nome em maiúsculas, ideal para comparações) e `year` (ano de nascimento, para inferir parentesco por faixa etária) são os mais relevantes. O campo `name` serve para exibição ao operador durante revisão manual. Combinando sobrenome extraído de `nameUpper` com a diferença de `year` entre afiliado e comprador, é possível sinalizar automaticamente possíveis relações familiares.

### Como comunicar ao afiliado que a comissão foi retida sem revelar o método de detecção?

Informe que a comissão está em período de revisão conforme as políticas do programa, sem especificar que o cruzamento de CPF foi o gatilho. Preserve os dados de auditoria internamente — incluindo os resultados da consulta à API — para embasar eventual contestação. A [ANPD](https://www.gov.br/anpd) orienta que o uso de dados pessoais para fins de prevenção à fraude deve constar na política de privacidade e nos termos do programa de afiliados.

### Leia também

- [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)
- [API de CPF grátis para desenvolvedores: como começar em 5 minutos](https://cpfhub.io/blog/api-cpf-gratis-desenvolvedores-comecar-5-minutos)
- [Onboarding digital em fintechs: como validar CPF em menos de 30 segundos](https://cpfhub.io/blog/onboarding-digital-em-fintechs-como-validar-cpf-em-menos-de-30-segundos)
- [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 auto-compra fraudulenta em programas de afiliados é um problema que pode comprometer seriamente a rentabilidade de operações de marketing de performance. A validação de CPF permite identificar relações entre afiliados e compradores que seriam impossíveis de detectar apenas com dados de sessão ou cookies.

Cadastre-se em [cpfhub.io](https://www.cpfhub.io/) — 50 consultas mensais gratuitas, sem cartão de crédito — e comece a cruzar CPFs de afiliados e compradores em cada transação para proteger as comissões que você realmente deve pagar.

