# Como usar validação de CPF em plataformas de food delivery (iFood, Rappi)

> Descubra como plataformas de food delivery podem usar validação de CPF via API para prevenir fraudes e proteger restaurantes parceiros.

**Publicado:** 21/09/2025
**Autor:** Redação CPFHub.io
**URL:** https://cpfhub.io/blog/como-usar-validacao-de-cpf-em-plataformas-de-food-delivery

---


Plataformas de food delivery podem usar a validação de CPF via API para vincular cada conta a uma identidade real, eliminando contas descartáveis, bloqueando fraudes de cupom e reduzindo chargebacks em até 50%. Com a CPFHub.io, a verificação acontece em ~900ms durante o cadastro, sem prejudicar a experiência do usuário que está com fome. O plano gratuito oferece 50 consultas mensais sem cartão de crédito para você começar agora.

## Introdução

O mercado de food delivery no Brasil movimenta dezenas de bilhões de reais por ano, com plataformas como iFood e Rappi processando milhões de pedidos diariamente. Esse volume massivo atrai fraudadores que exploram brechas no cadastro e no pagamento para obter refeições sem pagar, gerar chargebacks e abusar de cupons promocionais.

A validação de CPF via API é uma das ferramentas mais eficazes para combater esses problemas, pois vincula cada conta a uma identidade real e verificável.

---

## Fraudes comuns no food delivery

### Chargeback após entrega

O golpe mais frequente: o consumidor faz o pedido com seu próprio cartão, recebe a refeição e depois contesta a cobrança junto ao emissor do cartão, alegando que não reconhece a compra. Com a validação de CPF, a plataforma possui evidências de que o titular do CPF corresponde ao titular do cartão, fortalecendo a defesa contra chargebacks.

### Contas descartáveis para cupons

Plataformas de delivery oferecem cupons generosos para novos usuários -- às vezes R$ 20 ou mais na primeira compra. Fraudadores criam dezenas de contas com e-mails descartáveis para usar esses cupons repetidamente. A exigência de CPF único por conta elimina essa possibilidade.

### Fraude de entregador

Entregadores que marcam a entrega como realizada sem de fato entregar o pedido. Embora a validação de CPF do entregador não seja o foco principal deste artigo, o mesmo princípio se aplica -- vincular cada entregador a um CPF verificado facilita a responsabilização.

### Pedidos com cartão roubado

Compras feitas com dados de cartão de crédito roubados, geralmente para endereços diferentes do cadastro. A verificação de CPF permite cruzar o titular do cartão com o titular da conta.

---

## Pontos de validação no fluxo

A validação de CPF no food delivery deve ocorrer em momentos estratégicos para maximizar a proteção sem prejudicar a experiência do usuário.

### No cadastro da conta

É o momento ideal para exigir o CPF. O usuário já espera preencher dados pessoais, e a validação ocorre apenas uma vez. O CPF fica vinculado à conta permanentemente.

### Na adição de novo meio de pagamento

Quando o usuário adiciona um novo cartão de crédito, verificar se o titular do cartão corresponde ao CPF cadastrado adiciona uma camada de segurança.

### Em pedidos acima de determinado valor

Para pedidos de alto valor -- acima de R$ 200, por exemplo -- uma revalidação do CPF pode ser acionada como medida extra de segurança.

---

## Implementação em Node.js

O exemplo a seguir mostra um middleware para plataformas de food delivery com validação de CPF integrada.

```javascript
const express = require("express");
const axios = require("axios");

const app = express();
app.use(express.json());

const CPFHUB_API_URL = "https://api.cpfhub.io/cpf";
const CPFHUB_API_KEY = "SUA_CHAVE_DE_API";
const REQUEST_TIMEOUT = 10000; // 10 segundos

// Simulação de banco de dados
const contas = new Map();
const cpfsRegistrados = new Map(); // cpf -> contaId
const pedidos = [];
const VALOR_LIMITE_REVERIFICACAO = 200.0;

function limparCpf(cpf) {
 return cpf.replace(/\D/g, "");
}

async function consultarCpfHub(cpf) {
 const cpfLimpo = limparCpf(cpf);

 try {
 const response = await axios.get(`${CPFHUB_API_URL}/${cpfLimpo}`, {
 headers: {
 "x-api-key": CPFHUB_API_KEY,
 Accept: "application/json",
 },
 timeout: REQUEST_TIMEOUT,
 });

 if (response.data.success) {
 return response.data.data;
 }
 return null;
 } catch (error) {
 if (error.code === "ECONNABORTED") {
 throw new Error("Timeout na consulta de CPF");
 }
 if (error.response) {
 const { status } = error.response;
 if (status === 401) throw new Error("API key inválida");
 if (status === 404) return null;
 }
 throw new Error("Erro ao consultar CPF");
 }
}

// Cadastro de conta com CPF
app.post("/api/conta/cadastro", async (req, res) => {
 const { nome, email, telefone, cpf } = req.body;

 if (!cpf || !nome || !email) {
 return res.status(400).json({
 erro: "Nome, email e CPF são obrigatórios",
 });
 }

 const cpfLimpo = limparCpf(cpf);

 // Verifica duplicidade de CPF
 if (cpfsRegistrados.has(cpfLimpo)) {
 return res.status(409).json({
 erro: "Este CPF já está vinculado a uma conta existente",
 contaExistente: true,
 });
 }

 // Valida CPF via API
 try {
 const dados = await consultarCpfHub(cpfLimpo);
 if (!dados) {
 return res.status(422).json({
 erro: "CPF não encontrado na base de dados",
 });
 }

 // Verifica correspondência básica de nome
 const primeiroNomeInformado = nome.trim().split(" ")[0].toUpperCase();
 const primeiroNomeApi = dados.name.trim().split(" ")[0].toUpperCase();

 if (primeiroNomeInformado !== primeiroNomeApi) {
 return res.status(422).json({
 erro: "Nome informado não corresponde ao CPF",
 });
 }

 const contaId = `CONTA-${Date.now()}`;

 contas.set(contaId, {
 id: contaId,
 nome: dados.name,
 email,
 telefone,
 cpf: cpfLimpo,
 genero: dados.gender,
 dataNascimento: dados.birthDate,
 verificado: true,
 criadoEm: new Date().toISOString(),
 totalPedidos: 0,
 cuponsUsados: [],
 scoreRisco: 0,
 });

 cpfsRegistrados.set(cpfLimpo, contaId);

 res.json({
 sucesso: true,
 contaId,
 mensagem: `Conta criada para ${dados.name}`,
 });
 } catch (error) {
 res.status(503).json({ erro: error.message });
 }
});

// Aplicar cupom de primeira compra
app.post("/api/pedido/aplicar-cupom", (req, res) => {
 const { contaId, codigoCupom } = req.body;

 const conta = contas.get(contaId);
 if (!conta) {
 return res.status(404).json({ erro: "Conta não encontrada" });
 }

 if (!conta.verificado) {
 return res.status(403).json({
 erro: "CPF precisa ser verificado antes de usar cupons",
 });
 }

 // Verifica se o cupom é de primeira compra
 if (codigoCupom === "PRIMEIRACOMPRA") {
 if (conta.totalPedidos > 0) {
 return res.status(400).json({
 erro: "Cupom válido apenas para primeira compra",
 });
 }

 // Verifica se o CPF já usou este cupom (em qualquer conta)
 for (const [, outraConta] of contas) {
 if (
 outraConta.cpf === conta.cpf &&
 outraConta.cuponsUsados.includes(codigoCupom)
 ) {
 return res.status(403).json({
 erro: "Este CPF já utilizou este cupom",
 });
 }
 }
 }

 conta.cuponsUsados.push(codigoCupom);

 res.json({
 sucesso: true,
 desconto: 20.0,
 mensagem: "Cupom aplicado com sucesso",
 });
});

// Criar pedido com verificação de risco
app.post("/api/pedido/criar", async (req, res) => {
 const { contaId, itens, valorTotal, enderecoEntrega } = req.body;

 const conta = contas.get(contaId);
 if (!conta) {
 return res.status(404).json({ erro: "Conta não encontrada" });
 }

 // Análise de risco baseada no CPF
 const riscos = [];

 // Conta recém-criada com pedido alto valor
 const idadeConta =
 (Date.now() - new Date(conta.criadoEm).getTime()) / (1000 * 60 * 60);
 if (idadeConta < 1 && valorTotal > 100) {
 riscos.push("Conta com menos de 1 hora e pedido acima de R$ 100");
 }

 // Muitos pedidos em curto período
 const pedidosRecentes = pedidos.filter(
 (p) =>
 p.contaId === contaId &&
 Date.now() - new Date(p.criadoEm).getTime() < 3600000
 );
 if (pedidosRecentes.length >= 3) {
 riscos.push("Mais de 3 pedidos na última hora");
 }

 // Pedido acima do limite requer re-verificação
 if (valorTotal > VALOR_LIMITE_REVERIFICACAO) {
 try {
 const dadosAtuais = await consultarCpfHub(conta.cpf);
 if (!dadosAtuais) {
 return res.status(422).json({
 erro: "Falha na re-verificação de CPF para pedido de alto valor",
 });
 }
 } catch (error) {
 riscos.push("Falha na re-verificação de CPF");
 }
 }

 const pedido = {
 id: `PED-${Date.now()}`,
 contaId,
 cpf: conta.cpf,
 itens,
 valorTotal,
 enderecoEntrega,
 riscos,
 status: riscos.length > 2 ? "REVISAO_MANUAL" : "CONFIRMADO",
 criadoEm: new Date().toISOString(),
 };

 pedidos.push(pedido);
 conta.totalPedidos += 1;

 res.json({
 sucesso: true,
 pedidoId: pedido.id,
 status: pedido.status,
 alertas: riscos.length > 0 ? riscos : undefined,
 mensagem:
 pedido.status === "REVISAO_MANUAL"
 ? "Pedido em análise. Você será notificado em breve."
 : "Pedido confirmado!",
 });
});

app.listen(3000, () => {
 console.log("Servidor rodando na porta 3000");
});
```

---

## Proteção para restaurantes parceiros

Restaurantes parceiros são as maiores vítimas de fraudes em plataformas de delivery. Quando um pedido é contestado via chargeback, o restaurante muitas vezes arca com o prejuízo -- a comida já foi preparada e entregue, e o valor não é repassado.

A validação de CPF protege os restaurantes de várias formas. Reduz o volume de pedidos fraudulentos ao exigir identidade verificada. Fornece evidências para defesa contra chargebacks. Permite criar listas de bloqueio baseadas em CPF para fraudadores reincidentes. Facilita a resolução de disputas, pois cada pedido está vinculado a uma pessoa identificável.

---

## Métricas de fraude no delivery

Com a validação de CPF implementada, acompanhe as seguintes métricas para avaliar a eficácia da proteção.

A **taxa de chargeback** deve cair significativamente -- uma redução de 30% a 50% é comum após a implementação da validação de CPF. A **taxa de rejeição no cadastro** por CPF duplicado indica o volume de tentativas de criação de contas falsas. O **valor médio de pedidos rejeitados** por análise de risco ajuda a calibrar os limites de verificação. A **proporção de cupons por CPF único** revela se as campanhas promocionais estão atingindo usuários reais.

---

## Experiência do usuário

A principal preocupação ao adicionar validação de CPF em food delivery é o impacto na experiência do usuário. No delivery, a rapidez é fundamental -- ninguém quer preencher formulários quando está com fome.

A solução é solicitar o CPF apenas no cadastro inicial, uma única vez. A API da [**CPFHub.io**](https://www.cpfhub.io/) responde em ~900ms, tornando a verificação imperceptível para o usuário e garantindo que apenas identidades reais acessem os benefícios da plataforma.

---

## Perguntas frequentes

### O que é necessário para implementar validação de CPF neste contexto?

A validação de CPF exige uma chamada à API com o número do documento e a chave de autenticação. A CPFHub.io retorna o status do CPF, nome do titular e data de nascimento em ~900ms, permitindo a verificação em tempo real durante o cadastro ou transação.

### A API CPFHub.io funciona para todos os volumes de consulta?

Sim. O plano gratuito oferece 50 consultas por mês sem cartão de crédito — ideal para testes e projetos pequenos. Para volumes maiores, o plano Pro inclui 1.000 consultas mensais por R$149. Se o limite for ultrapassado, a API não bloqueia: cobra R$0,15 por consulta adicional.

### Como garantir conformidade com a LGPD ao usar uma API de CPF?

Use o CPF apenas para a finalidade declarada ao titular, armazene apenas o necessário (não guarde o CPF cru se um token bastar), implemente controle de acesso aos logs de consulta e documente a base legal para o tratamento. A [ANPD](https://www.gov.br/anpd) orienta que dados de identificação devem ser tratados com o princípio da necessidade.

### Quanto tempo leva para integrar a API CPFHub.io?

A integração básica leva menos de 30 minutos: crie uma conta em cpfhub.io, gere a API key no painel e faça uma chamada GET para `https://api.cpfhub.io/cpf/{CPF}` com o header `x-api-key`. A documentação inclui exemplos em Python, Node.js, PHP, Java e outras linguagens.

### Leia também

- [API de CPF para verificação de identidade em processos de admissão de funcionários](https://cpfhub.io/blog/api-de-cpf-para-verificacao-de-identidade-em-processos-de-admissao-de-funcionarios)
- [APIs de CPF para plataformas de recrutamento e seleção de talentos](https://cpfhub.io/blog/apis-cpf-plataformas-recrutamento-selecao-talentos)
- [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)
- [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

Plataformas de food delivery enfrentam desafios únicos de fraude que impactam consumidores, restaurantes e a própria plataforma. A validação de CPF via API oferece uma solução elegante -- verifica a identidade do usuário uma única vez, no cadastro, e protege todo o ecossistema a partir desse ponto. Com a [**CPFHub.io**](https://www.cpfhub.io/), você tem uma integração simples, latência de ~900ms e dados atualizados da Receita Federal para blindar sua plataforma contra fraudes.

Cadastre-se em [cpfhub.io](https://www.cpfhub.io/) — 50 consultas mensais gratuitas, sem cartão de crédito — e comece hoje mesmo.

