Estornos de offerwall: por que conversões são revertidas e como parar de pagar por elas
Um estorno (chargeback) em um offerwall significa que a rede pega de volta o dinheiro de uma conversão, muitas vezes semanas depois de você já ter pago o usuário. Este guia explica por que isso acontece, como tratar no seu código e como deixar de pagar por isso desde o início.
Resposta curta
Um estorno de offerwall é a rede retirando o pagamento de uma conversão que o anunciante rejeitou, muitas vezes dias ou semanas depois de você creditar o usuário. Trate os postbacks de estorno pelo ID da transação, retenha as conversões arriscadas até passar a janela de validação e verifique a conta antes do saque, o último momento em que o dinheiro ainda é seu.
- Taxas de estorno típicas
- Publicações do setor costumam citar de 10 a 25 por cento no tráfego de offerwall.
- Causas comuns
- VPN ou país errado, usuários duplicados, ofertas concluídas rápido demais, emuladores e bots, postbacks repetidos.
- Métrica principal
- Taxa de estorno: valor estornado dividido pelo valor total pago, por offerwall e por mês.
- Proteção mais simples
- Períodos de retenção para contas novas e ofertas que pagam muito.
O que é um estorno de offerwall
Quando um usuário conclui uma oferta, a rede envia um postback ao seu site e você credita o usuário. A rede só recebe do anunciante depois, quando ele já verificou a qualidade dos usuários. Se o anunciante rejeita uma conversão, a rede a estorna e normalmente envia um segundo postback com valor negativo.
O problema é o tempo. Os estornos costumam chegar dias ou semanas depois da conversão original. Nessa altura, um usuário fraudulento já pode ter sacado e sumido, e o dinheiro sai da sua margem. Publicações do setor costumam citar taxas de estorno de 10 a 25 por cento no tráfego de offerwall, então não é um caso raro.
Motivos comuns para estornar conversões
| Motivo | O que aconteceu | Como evitar |
|---|---|---|
| País errado | O usuário estava em uma VPN ou em um país que o anunciante não queria | Verifique a rede no clique da oferta e esconda os offerwalls de quem usa VPN |
| Usuários duplicados | A mesma pessoa instalou o app em várias contas | Ligue contas por dispositivo e por endereço de pagamento |
| Rápido demais | Nível 10 em dois minutos, uma pesquisa respondida em segundos | Compare o tempo de conclusão com o de jogadores reais |
| Baixa qualidade | O app foi instalado e removido, sem uso real | Retenções mais longas em ofertas de instalação para contas novas |
| Emuladores e bots | Instalações vindas de emuladores, fazendas de dispositivos ou scripts | Detecte automação e emuladores antes do clique |
| Postbacks duplicados | O mesmo ID de transação foi enviado ou reenviado duas vezes | Guarde os IDs de transação e ignore repetições |
Quase tudo isso é visível antes de a rede estornar qualquer coisa. Os dados estão nos seus próprios registros: quem clicou, de onde, em qual dispositivo e quanto tempo levou.
Trate os postbacks de estorno corretamente
Antes de pensar em prevenção, garanta que o seu site lida bem com os estornos. Muitos sites ignoram em silêncio os postbacks negativos, e assim o prejuízo nunca é descontado do saldo do usuário.
- Aceite o postback de estorno. Leia na documentação da rede qual status ou valor negativo ela envia e confirme que o seu endpoint trata esse caso.
- Associe pelo ID da transação à conversão original e registre as duas. Nunca aplique o mesmo estorno duas vezes.
- Desconte do saldo do usuário, mesmo que fique negativo. Um saldo negativo bloqueia o próximo saque até ser recuperado.
- Mostre ao usuário no histórico, com o nome da oferta. Registros claros reduzem os pedidos de suporte.
- Acompanhe por offerwall e por usuário, para ver quais usuários e quais offerwalls geram mais estornos.
// Sketch of a postback endpoint
$tx = $request->transaction_id;
$status = $request->status; // for example 'completed' or 'reversed'
if (Conversion::where('transaction_id', $tx)->where('status', $status)->exists()) {
return 'OK'; // already processed: ignore replays
}
if ($status === 'reversed') {
$original = Conversion::where('transaction_id', $tx)->firstOrFail();
$original->user->decrement('balance', $original->amount); // may go negative
}Períodos de retenção: pague depois pelas conversões arriscadas
Um período de retenção mantém a conversão pendente por alguns dias antes de o usuário poder sacá-la. É a proteção mais simples contra estornos, porque a maioria deles chega enquanto o dinheiro ainda está do seu lado.
- Retenha por mais tempo as ofertas que pagam muito. Uma oferta de jogo de vários dólares merece uma retenção mais longa do que poucos centavos de uma pesquisa curta.
- Retenha por mais tempo as contas novas. A confiança cresce com a idade da conta e um histórico de saques limpo.
- Libere antes para usuários confiáveis. Usuários antigos sem estornos podem pular quase toda a espera, o que mantém felizes os seus melhores usuários.
- Explique as retenções na página da oferta. Os usuários aceitam esperar quando sabem por que e por quanto tempo.
Pare a fraude antes do saque
A retenção adia o problema; a detecção o elimina. O melhor momento para agir é o saque, porque é o último ponto em que o dinheiro ainda é seu.
- Velocidade da oferta. Registre quando o usuário clicou na oferta e quando a conversão chegou. Compare com o tempo que usuários reais levam.
- Velocidade de conversões. Uma rajada de conversões em pouco tempo vinda de uma conta raramente é uma pessoa real.
- IDs de transação duplicados. Um ID repetido indica um postback reenviado ou duplicado.
- Saques de contas novas. Contas recém-criadas que sacam imediatamente merecem um olhar mais atento.
- Dispositivos e endereços de pagamento compartilhados. Os estornos se concentram em grupos de multicontas.
Meça a sua taxa de estorno
Divida o valor estornado pelo valor total pago em cada offerwall, a cada mês. Separe por país e por idade da conta. Uma taxa subindo em um offerwall costuma apontar para uma fonte de tráfego ou um grupo de usuários, e as redes acompanham esse número de perto quando decidem como tratar o seu site.
Quando você sabe quais segmentos mais geram estornos, pode apertar retenções e verificações ali e afrouxar no resto, o que é mais justo com os usuários honestos.
| Métrica | Como calcular | O que ela mostra |
|---|---|---|
| Taxa de estorno | Valor estornado dividido pelo valor total pago, por offerwall e por mês | A qualidade geral do tráfego como a rede a vê |
| Taxa de estorno por idade da conta | O mesmo, separando contas com menos e mais de 30 dias | Se as contas novas precisam de retenções mais longas |
| Pago antes do estorno | Valor estornado que já tinha sido sacado | O dinheiro que você realmente perdeu |
| Usuários mais estornados | Usuários ordenados pelo valor estornado | Contas e grupos para revisar primeiro |
Trabalhe junto com as redes de offerwall
As redes estão do seu lado mais vezes do que parece. Elas também perdem dinheiro com tráfego estornado e preferem manter um publisher que corrige problemas a perder um. Quando os estornos subirem, pergunte ao seu gerente de conta quais ofertas e países são afetados e se ele pode enviar o motivo do estorno em cada postback negativo.
Conte o que você mudou: verificação de VPN no clique da oferta, retenções para contas novas, fila de revisão de saques. Publishers que mostram uma taxa de estorno em queda estão em posição muito melhor para pedir pagamentos maiores ou acesso a ofertas premium.
Como o CashoutGuard automatiza isso
Envie ao CashoutGuard um evento de conversão quando chegar um postback, com o ID da oferta, o ID da transação da rede e o valor. Ele lembra do clique na oferta, então sabe quanto tempo a oferta realmente levou.
offer_completed_too_fastquando o tempo entre o clique e a conversão é menor do que jogadores reais conseguem.conversion_velocityecashout_velocitypara rajadas de atividade.duplicate_transactionpara IDs de transação repetidos.new_account_cashoutpara contas que sacam logo depois do cadastro.
Cada saque chega então a uma fila de revisão com esses motivos, e webhooks assinados avisam o seu backend no momento em que uma conta passa a bloqueada, para congelar o saldo antes do próximo saque. Comece no modo sombra e compare os saques sinalizados com os estornos que as suas redes enviam. Veja a documentação com os campos da conversão.