Todos os artigos
Guia prático8 min de leitura

O ROAS do seu app ainda conta as compras que a Apple e o Google reembolsaram, então faça lances pelo ROAS líquido

Os reembolsos raramente voltam para as plataformas de anúncios, então o ROAS continua creditando compras que a Apple e o Google já devolveram. Veja onde o Firebase, o Google Ads e o AdAttributionKit perdem os reembolsos, quanto isso custa e como montar o ROAS líquido de um app.

A mesa de um analista de marketing com gráficos de campanhas em um notebook, um iPhone, um celular Android e linhas impressas riscadas, representando o ROAS líquido após os reembolsos do app

Principais conclusões

  • O evento app_store_refund, coletado automaticamente pelo Firebase, só é disparado quando o Google Play reembolsa uma compra no app. O Google o marca como exclusivo do Android, então os reembolsos da App Store nunca reduzem a receita de in_app_purchase que o Firebase registrou.
  • O Google Ads acompanha automaticamente as compras no app do Google Play em apps Android e informa o valor da compra como valor de conversão. Em assinaturas, ele registra apenas a primeira compra e o valor do primeiro pagamento.
  • Os ajustes de conversão do Google Ads podem corrigir o valor de uma conversão ou retraí-la a zero, e o Google diz que conversões on-line só podem ser ajustadas se tiverem sido enviadas com um ID de transação.
  • O AdAttributionKit da Apple tem três janelas de conversão após a primeira abertura, dias 0 a 2, 3 a 7 e 8 a 35, e o valor de conversão detalhado só aparece no primeiro postback.
  • O ROAS líquido é a receita atribuída aos anúncios menos os reembolsos dessas compras, dividida pelo investimento em anúncios. Uma campanha com ROAS bruto maior pode ficar atrás no ROAS líquido quando seus compradores pedem mais reembolsos.
  • Os sinais de reembolso chegam ao servidor do desenvolvedor, não à rede de anúncios. A Apple envia uma App Store Server Notification do tipo REFUND, e o Google Play informa anulações por meio das notificações do desenvolvedor em tempo real e da Voided Purchases API, que cobre os últimos 30 dias.
  • Só dois fluxos de reembolso permitem que o desenvolvedor envie provas: o CONSUMPTION_REQUEST da Apple, respondido em até 12 horas, e a revisão de chargeback do Google Play por meio de orders.reviewrefund, respondida em até 24 horas.

Os painéis de anúncios registram uma compra no app no momento em que ela acontece, e a maioria nunca a desfaz. Quando a Apple ou o Google reembolsam essa compra depois, o dinheiro sai do seu repasse, mas continua na receita da campanha, então o ROAS segue creditando o anúncio que fez a venda. O ROAS líquido, receita após reembolsos dividida pelo investimento em anúncios, é o número que mostra quais campanhas realmente se pagaram. Você precisa montá-lo por conta própria, porque o sinal de reembolso chega ao seu servidor, não à rede de anúncios.

Por que o ROAS superestima a receita quando os reembolsos ficam de fora

O ROAS divide a receita atribuída pelo investimento em anúncios. A receita costuma ser registrada uma única vez, na compra, por um SDK no dispositivo ou por uma importação de conversões da loja. O reembolso é um evento posterior que acontece fora do dispositivo, entre o cliente e a Apple ou o Google. Se nada o levar de volta à mesma campanha, a compra continua contando.

Isso seria inofensivo se os reembolsos fossem raros e bem distribuídos. Normalmente não são. Um criativo que promete mais do que o app entrega, uma oferta exibida ao público errado ou uma fonte de tráfego cheia de cartões roubados concentram os reembolsos em campanhas específicas. O ROAS bruto esconde exatamente essa diferença.

O que é ROAS líquido?

O ROAS líquido é a mesma razão com os reembolsos descontados da linha de cima: receita atribuída a uma campanha, menos os reembolsos dessas mesmas compras, dividida pelo custo da campanha. Algumas equipes também descontam a comissão da loja e os impostos. O que quer que você desconte, os reembolsos são a parte que muda qual campanha vence.

Onde os reembolsos se perdem entre a loja e o seu painel de anúncios

O Firebase registra reembolsos do Google Play, não da App Store

A lista de eventos coletados automaticamente do Google inclui in_app_purchase, disparado quando um usuário conclui uma compra no app, incluindo uma assinatura inicial, processada pela App Store da Apple ou pelo Google Play. Seu equivalente de reembolso, app_store_refund, é disparado quando o Google Play reembolsa uma compra no app, e o Google o marca como exclusivo do Android. Nem o app_store_refund nem os eventos automáticos de assinatura são exportados para o BigQuery.

A mesma página diz que o Analytics não mede automaticamente a receita e os reembolsos de compras de apps pagos, e que a receita informada pode ser diferente da exibida no Google Play Developer Console. No iOS, nada desconta automaticamente um reembolso da App Store de uma compra que o Firebase já registrou.

O Google Ads registra o valor da compra como valor de conversão

Em apps Android que usam faturamento no app, o Google Ads pode acompanhar as compras no app de quem clicou no seu anúncio, sem código no app. O Google diz que o valor da compra é informado automaticamente como valor de conversão. Em assinaturas, só a primeira compra é registrada como conversão, e só o valor do primeiro pagamento é registrado. O artigo de ajuda não menciona reembolsos.

O Google Ads tem, sim, uma ferramenta de correção. Os ajustes de conversão permitem corrigir o valor de uma conversão sem alterar a contagem, ou retraí-la, o que define seu valor como 0.00 e alimenta as estratégias de lances por CPA e por ROAS. O Google diz que conversões on-line só podem ser ajustadas se você usou um ID de transação, e que uma conversão retraída não pode ser ajustada de novo. Essa página não menciona conversões de apps, então confirme que sua configuração de conversões aceita ajustes antes de depender deles.

Os postbacks de anúncios da Apple fecham antes que muitos reembolsos cheguem

O AdAttributionKit tem três janelas de conversão que começam quando o usuário abre o app pela primeira vez: dias 0 a 2, dias 3 a 7 e dias 8 a 35. O app pode atualizar seu valor de conversão até o fim de cada janela. Depois, a Apple envia o postback após um atraso aleatório, de 24 a 48 horas para o primeiro e de 24 a 144 horas para o segundo e o terceiro. Se o app travar um valor antes da hora, o sistema ignora as atualizações seguintes naquela janela.

O valor de conversão detalhado só aparece no primeiro postback. Os seguintes trazem, no máximo, um valor aproximado. Uma compra feita no dia 1 que a Apple reembolsa no dia 10 já foi informada em um postback que não pode mais mudar.

Ponto de mediçãoO que registra na compraO que acontece quando a compra é reembolsada
Firebase in_app_purchase, Android e iOSID do produto, preço, valor, moeda, quantidadeAndroid: app_store_refund é disparado. iOS: não há evento automático de reembolso
Google Ads, conversões do Google Play, AndroidO valor da compra como valor de conversão, só o primeiro pagamento em assinaturasNão descrito. Ajustes podem corrigir ou retrair conversões on-line enviadas com um ID de transação
Postbacks do AdAttributionKit, iOSUm valor de conversão por janela, detalhado só no primeiroFixo depois que o postback daquela janela é preparado
Seu próprio servidorCada transação, vinculada ao seu ID de usuárioNotificação REFUND da Apple, sinais de compras anuladas do Google Play

Quando os reembolsos de apps chegam e quem decide

Os reembolsos não seguem um único calendário. Alguns chegam poucas horas depois da compra e outros meses depois, e é por isso que o ROAS de uma coorte continua caindo depois que o relatório da campanha parecia fechado.

Caminho do reembolsoPrazo, nas palavras da própria lojaQuem decideSinal no seu servidor
Pedido de reembolso no Google PlayEm até 48 horas, o cliente pede ao Google. Depois disso, o Google o encaminha ao desenvolvedorO Google, depois vocêCompra anulada via RTDN e Voided Purchases API
Reembolso do desenvolvedor no Google PlayQuando você emitirVocêCompra anulada, se você revogar o acesso
Denúncia de cobrança não autorizada no Google PlayEm até 120 dias após a transaçãoO GoogleCompra anulada
Reembolso da AppleSolicitado em reportaproblem.apple.com, retorno em 24 a 48 horasA AppleNotificação REFUND com revocationReason
Solicitação de consumo da AppleVocê responde em até 12 horasA Apple, usando seus dadosCONSUMPTION_REQUEST
Revisão de chargeback do Google PlayVocê responde em até 24 horas por meio de orders.reviewrefundO banco, após suas provasCompra anulada se o chargeback for mantido

Quanto custa, em dinheiro, um ROAS que ignora reembolsos

Pegue duas campanhas com o mesmo orçamento. Os números abaixo são uma ilustração, não uma referência de mercado.

LinhaCampanha ACampanha B
Investimento em anúncios$10,000$10,000
Receita de compras atribuídas$14,000$12,500
ROAS bruto1.401.25
Parcela reembolsada dessa receita18%4%
Receita após reembolsos$11,480$12,000
ROAS líquido1.151.20

O ROAS bruto manda você colocar dinheiro em A. O ROAS líquido mostra que B reteve mais de cada dólar. Se os seus lances funcionam com o valor bruto, o algoritmo continua encontrando mais compradores como os de A, porque nada nunca avisa que eles pediram o dinheiro de volta.

O investimento em anúncios é só a primeira conta. Um cliente reembolsado também deixa para trás:

  • Repasses. Acordos com afiliados, criadores e influenciadores pagos por compra costumam pagar sobre a venda, não sobre a venda menos os reembolsos, a menos que o contrato diga o contrário.
  • Processamento, chamadas de API e armazenamento. Um usuário reembolsado usou seus servidores, suas APIs pagas de terceiros e seu armazenamento até o acesso ser revogado. Essas faturas não são reembolsadas.
  • Custos de chargeback. Desde 3 de agosto de 2026, o Google repassa ao desenvolvedor o preço da compra contestada mais as tarifas bancárias, então uma fonte de tráfego Android cheia de disputas custa mais do que a receita que perde.
  • Segmentação pior. Lances baseados em valor treinados com compras reembolsadas saem à procura de mais pessoas parecidas com as que receberam o dinheiro de volta.
Duas pilhas de moedas sobre uma mesa, uma mais baixa depois que moedas foram retiradas, ao lado de um celular e uma calculadora, mostrando como os reembolsos reduzem a receita por trás do ROAS líquido

Uma taxa alta de reembolsos em uma campanha é fraude ou promessa quebrada?

Muitas vezes é a promessa. O revocationReason da Apple diz de que lado o reembolso caiu. Um 0 significa que a App Store reembolsou a transação por outros motivos, como uma compra acidental. Um 1 significa que ela reembolsou por um problema real ou percebido dentro do seu app. Um acúmulo de 1 em uma campanha costuma apontar para o criativo do anúncio ou para o onboarding ao qual ele leva. Um acúmulo de denúncias de cobrança não autorizada no Google Play aponta para a fonte de tráfego.

Como montar o ROAS líquido de um app

Você não precisa de uma ferramenta nova para começar. Precisa de alguns cruzamentos que seus dados provavelmente ainda não fazem.

  • Guarde a campanha no usuário. Armazene o resultado da atribuição junto ao seu próprio ID de usuário na instalação, para que qualquer transação futura possa ser rastreada até uma campanha.
  • Guarde a transação no usuário. Defina um appAccountToken nas compras de iOS e um ID de conta ofuscado nas compras do Google Play, para que cada evento da loja seja associado ao seu usuário sem adivinhação.
  • Escute os reembolsos no servidor. Trate a notificação REFUND da Apple vinda das App Store Server Notifications V2 e as notificações de compras anuladas do Google Play. Consulte a Voided Purchases API como garantia, já que ela só retorna anulações dos últimos 30 dias.
  • Mostre bruto e líquido lado a lado, por coorte de compra. Atribua cada reembolso à campanha e à data da compra que o gerou, não ao dia em que o reembolso apareceu.
  • Envie correções onde a plataforma aceitar. Se as suas conversões do Google Ads levam um ID de transação, corrija ou retraia as reembolsadas. Onde a plataforma não aceitar correções, redistribua o orçamento com base nos números líquidos.
  • Responda às duas solicitações de provas no prazo. O RefundHalt responde ao CONSUMPTION_REQUEST da Apple dentro da janela de 12 horas e à revisão de chargeback do Google Play dentro de 24 horas, para que os reembolsos que você pode contestar recebam a sua versão dos fatos.

Os reembolsos devem contar na data da compra ou na data do reembolso?

Para decisões de campanha, na data da compra. Um reembolso é um fato sobre uma compra, e a compra pertence a uma campanha. O financeiro lança na data do reembolso, e é por isso que o seu relatório de ROAS e o seu repasse não vão bater em nenhum dia específico. Mantenha as duas visões e identifique cada uma.

Quando o ROAS líquido de uma coorte é definitivo?

Ele se acomoda em etapas. A janela de reembolso por autoatendimento do Google fecha após 48 horas, a Apple diz aos clientes que esperem um retorno sobre o pedido de reembolso em 24 a 48 horas, e uma denúncia de cobrança não autorizada no Google Play pode chegar em até 120 dias após a transação. Trate os primeiros números como provisórios e revise a mesma coorte mais tarde.

Perguntas frequentes

O Firebase desconta reembolsos da receita de compras no app?
Só no Google Play. O evento app_store_refund, coletado automaticamente pelo Firebase, é disparado quando o Google Play reembolsa uma compra no app, e o Google o marca como exclusivo do Android. Não existe equivalente automático para reembolsos da App Store, e o Google diz que o Analytics não mede automaticamente a receita e os reembolsos de compras de apps pagos.
O Google Ads remove das conversões as compras no app reembolsadas?
O próprio artigo do Google sobre conversões do Google Play não diz isso. Ele afirma que o valor da compra é informado como valor de conversão e não menciona reembolsos. Os ajustes de conversão do Google Ads podem corrigir ou retrair uma conversão, e o Google diz que conversões on-line só podem ser ajustadas se tiverem sido enviadas com um ID de transação.
Os postbacks do AdAttributionKit podem refletir um reembolso?
Só se o reembolso acontecer antes de o postback daquela janela de conversão ser preparado. As janelas vão dos dias 0 a 2, 3 a 7 e 8 a 35 após a primeira abertura, e quando uma janela termina ou o valor é travado, a Apple ignora as atualizações seguintes naquela janela.
Como calculo o ROAS líquido de um app?
Pegue a receita atribuída a uma campanha, subtraia os reembolsos dessas mesmas compras e divida pelo investimento em anúncios da campanha. Atribua cada reembolso à coorte de compra que o gerou, usando a notificação REFUND da Apple e os sinais de compras anuladas do Google Play como registro de reembolsos.
Posso contestar os reembolsos que reduzem o meu ROAS?
Só dois tipos. O CONSUMPTION_REQUEST da Apple permite enviar dados de consumo em até 12 horas, e a revisão de chargeback do Google Play por meio de orders.reviewrefund dá a você 24 horas. Os reembolsos de 48 horas do Google Play, os reembolsos pelo suporte e as compras anuladas são decididos sem você, e os chargebacks bancários são definitivos.

Fontes e leituras adicionais

RefundHalt

O piloto automático de reembolsos para App Store e Google Play

Continue lendo

A próxima solicitação de reembolso já está a caminho.

Configure a RefundHalt no tempo que você levaria para ler mais um e-mail de suporte sobre um reembolso que não conseguiu contestar.