O abuso reiterado de reembolsos custa a você duas vezes, veja como as lojas deixam você reagir
O cliente que reembolsa repetidas vezes não é um acaso. O abuso de reembolsos custa a você o dinheiro devolvido mais a computação que você já gastou, e ambas as lojas entregam a você um sinal de identidade, o appAccountToken da Apple e o ID de conta ofuscado do Google, para juntar o padrão.

Principais conclusões
- Apenas dois fluxos de reembolso permitem que um desenvolvedor apresente provas contra o abuso de reembolsos: o CONSUMPTION_REQUEST da Apple, com uma janela de 12 horas, e a revisão de estornos do Google Play por meio da Review Refund API, com uma janela de 24 horas.
- O appAccountToken da Apple é um UUID que você gera e anexa a uma compra, e o StoreKit o vincula à transação resultante, então seu servidor pode rastrear cada reembolso até a conta exata que o fez.
- O ID de conta ofuscado do Google Play é uma string com hash, limitada a 64 caracteres, que o próprio Google usa para detectar atividade irregular, como muitos dispositivos comprando em uma única conta em um curto período.
- Armazenar dados pessoais em texto puro no ID de conta ofuscado do Google faz com que suas compras sejam bloqueadas, então o campo deve ser um valor criptografado ou um hash unidirecional, nunca um e-mail sem tratamento.
- O campo voidedReason do Google Play marca friendly_fraud e fraud como motivos distintos de um reembolso comum do tipo remorse, o que permite direcionar abusadores reincidentes para uma fila de revisão em vez de um caminho automático de reembolsar e esquecer.
- O Google diz que bloqueou mais de US$ 2 bilhões em transações fraudulentas e abusivas em 2022, e os campos de identidade que alimentam esse sistema só funcionam se você os preencher em cada compra.
- Cada compra reembolsada que mantém o acesso é computação, armazenamento e gasto de API que você continua pagando sobre um dinheiro que já devolveu, e um reembolsador reincidente multiplica essa conta de propósito.
Um único reembolso é um custo de fazer negócios. A mesma conta reembolsando pela quarta vez, depois de usar o que comprou a cada vez, é abuso de reembolsos, e é um padrão que você só consegue ver se cada compra carrega uma identidade que você controla. Apple e Google dão a você essa identidade, e ambos dão uma janela estreita para colocá-la diante da loja antes que um reembolso ou estorno seja decidido. Perca a janela, ou nunca anexe a identidade, e um reembolsador reincidente parece exatamente igual a um cliente insatisfeito de primeira viagem. Veja como distingui-los, e quanto vale essa diferença em dinheiro.
Por que o abuso de reembolsos é um problema de identidade, não de reembolso
A loja decide o reembolso. Você não consegue impedir um cliente de pedir, e na maioria dos fluxos não consegue impedir a loja de conceder. O que você pode fazer é decidir se uma determinada conta já fez isso antes, e se o conteúdo que ela comprou foi de fato entregue e usado. Ambas são perguntas sobre identidade: qual dos seus usuários está por trás desta transação, e qual é o histórico dele. Se suas compras não carregam um identificador estável de volta aos seus próprios registros de usuário, você não consegue responder nenhuma das duas, e cada reembolso chega sem contexto.
Essa é a verdadeira lacuna. A mecânica do reembolso é fixada pela política. As provas que você traz para ela são inteiramente suas para construir, e começam no momento da compra, não no momento do reembolso.
As duas janelas em que as provas mudam o resultado
Existem exatamente dois fluxos em que algo que você envia pode mover uma decisão. O CONSUMPTION_REQUEST da Apple dispara quando um cliente pede reembolso de um consumível ou de uma assinatura de renovação automática, e você tem 12 horas para responder. A revisão de estornos do Google Play dispara quando um usuário contesta uma cobrança com o banco, e você tem 24 horas para responder por meio da Review Refund API. Todo outro reembolso, o reembolso de autoatendimento de 48 horas do Play, um reembolso concedido pelo suporte, um reembolso automático por compra não reconhecida, é decidido sem você.
Ambos os canais de prova são muito mais fortes quando a transação já carrega seu identificador. As informações de consumo da Apple podem incluir o appAccountToken junto com o histórico e o gasto da conta, e a revisão do Google pode se apoiar no ID de conta ofuscado que ela vem observando desde a compra. Uma conta sem identificador é uma conta sem histórico para apresentar.
Os dois campos de identidade, lado a lado
Apple e Google resolveram o mesmo problema de maneira quase idêntica, com nomes diferentes e regras diferentes. Ambos permitem que você marque uma compra com um valor que aponta de volta ao seu próprio registro de usuário. Nenhum está ativo por padrão. Ambos são inúteis se você não os define no momento da compra.
Apple: appAccountToken
appAccountToken é um UUID que você gera e passa quando uma compra começa. O StoreKit o associa à transação resultante, e ele aparece nos dados da transação que seu servidor verifica e nas informações de consumo que você devolve durante um CONSUMPTION_REQUEST. Como é o seu valor, ele mapeia uma transação da loja diretamente para a conta no seu banco de dados, sem e-mail nem nome envolvidos. Ele precisa ser um UUID real, e qualquer outra coisa é rejeitada. A Apple depois adicionou um endpoint Set App Account Token que pode anexar ou atualizar o token em transações passadas, incluindo compras feitas fora do seu app, como resgates de códigos de oferta.
Google Play: o ID de conta ofuscado
O equivalente do Google é o setObfuscatedAccountId, uma string opcional vinculada à conta compradora. A própria documentação do Google é direta sobre seu propósito: o Google Play o usa para detectar atividade irregular, como muitos dispositivos fazendo compras na mesma conta em um curto período, e para bloquear algumas transações fraudulentas antes que se completem. É limitada a 64 caracteres, e não deve carregar dados pessoais em texto puro. Guarde ali um e-mail sem tratamento e o Google bloqueia a compra imediatamente, porque o campo espera um valor criptografado ou um hash unidirecional. Um campo irmão, setObfuscatedProfileId, existe para apps em que uma conta contém vários perfis.
| Campo | Loja | Tipo e limite | Definido por | Padrão | O que a loja faz com ele |
|---|---|---|---|---|---|
| appAccountToken | Apple | UUID | Você, na compra | Não definido | Vincula a transação ao seu usuário, retornado nos dados de transação e consumo |
| obfuscatedAccountId | Google Play | String com hash, máx. 64 caracteres | Você, na compra | Não definido | Detecta atividade irregular e bloqueia parte da fraude antes de concluir |
Quanto realmente custa um reembolso de um abusador reincidente
O reembolso em si é a menor parte da conta. Quando uma loja concede um reembolso, você devolve a receita, e isso é o que fica visível no balanço. O que não está na linha do reembolso é tudo o que você gastou entregando o produto que agora é gratuito.
Imagine um consumível que dispara trabalho real: uma geração de imagens, um lote de chamadas à API de um provedor de modelos, uma exportação de vídeo, um pagamento a um criador. Você pagou por essa computação no momento em que o cliente a usou. O reembolso recupera o preço, mas não recupera a fatura do provedor. Um reembolsador reincidente é alguém que aprendeu que o conteúdo sobrevive ao reembolso, então repete o ciclo: compra, consome, reembolsa, repete. A cada ciclo, você arca com o custo de entrega uma segunda vez.
Depois há a própria transferência de custos da loja. A partir de 3 de agosto de 2026, o Google Play transfere o preço de compra e as taxas de estorno do banco para o desenvolvedor nos pedidos feitos após essa data. Um estorno que antes era em grande parte problema do Google passa a ser sua receita mais uma taxa, e um contestador reincidente aumenta esse número toda vez. Os campos de identidade são o que permite alimentar a Review Refund API com as provas para contestar uma disputa ilegítima dentro da janela de 24 horas.
O Google coloca a escala de forma clara: diz que bloqueou mais de US$ 2 bilhões em transações fraudulentas e abusivas em 2022. Esse número existe porque os sinais, o ID de conta ofuscado entre eles, estavam preenchidos. Um app que envia compras com campos de identidade vazios abre mão dessa proteção.

Como pegar reembolsadores reincidentes antes de a loja decidir
Marque cada compra com uma identidade que seja sua
Defina appAccountToken em cada compra do StoreKit e setObfuscatedAccountId em cada compra do Play Billing, ambos gerados a partir do seu próprio registro de usuário. Na Apple, use um UUID real mapeado para a conta. No Google, aplique hash à chave da conta para que nenhum dado pessoal trafegue em texto puro. Faça isso no momento da compra, porque no Google esse é o único passo que você não consegue recuperar depois.
Mantenha um registro com chave nessa identidade
Armazene cada compra, entrega, evento de consumo e reembolso contra o identificador. Quando um CONSUMPTION_REQUEST ou uma revisão de estorno chega, o histórico completo da conta, reembolsos anteriores incluídos, está a uma única consulta de distância. As informações de consumo da Apple têm campos explícitos exatamente para isso: consumptionStatus, deliveryStatus, playTime, accountTenure, lifetimeDollarsPurchased, e a sua refundPreference.
Leia o voidedReason e direcione os abusadores de forma diferente
Quando uma compra do Google é anulada, o campo voidedReason diz por quê, e friendly_fraud e fraud são valores separados de um reembolso comum do tipo remorse. Direcione esses para uma fila de revisão e uma política mais rígida, não para o mesmo caminho automático de um reembolso de primeira vez. A própria orientação do Google é um modelo de várias advertências: avise um primeiro infrator, tome medidas mais firmes com os reincidentes, e desative as compras para uma conta que insiste.
Responda à janela toda vez
As provas só contam dentro das duas janelas. Automatize a resposta do CONSUMPTION_REQUEST para que dispare bem dentro das 12 horas, e a revisão de estorno para que dispare dentro das 24. Um histórico perfeito que você envia atrasado é um histórico que a loja nunca lê.
| Sinal que você quer pegar | Onde ele fica | O campo ou fluxo que o revela |
|---|---|---|
| Mesma conta, muitos dispositivos, curto período | Google Play | Detecção de atividade irregular do ID de conta ofuscado |
| Esta conta já reembolsou antes | Seu registro | Histórico com chave em appAccountToken ou no ID de conta ofuscado |
| O conteúdo foi entregue e consumido | Apple | deliveryStatus e consumptionStatus nas informações de consumo |
| Uma disputa é na verdade fraude do próprio titular | Google Play | Valor friendly_fraud de voidedReason |
O que as lojas farão e não farão por você
Vale ser preciso sobre a divisão de trabalho, porque é fácil supor que as lojas cuidam do abuso, e na maioria das vezes elas não avisam quando não cuidam. O Google usa ativamente o ID de conta ofuscado para bloquear parte da fraude antes de uma compra se concluir, e seus sistemas pegam uma grande parcela no nível da plataforma. A Apple decide cada reembolso por conta própria e trata suas informações de consumo como uma entrada, nunca um voto. Nenhuma loja mantém sua lista de abusadores por você, deduz um consumível reembolsado do seu saldo, nem diz não a um reembolsador reincidente em seu nome. A identidade é da loja para agir nas margens e sua para agir em todo o resto.
Essa é a mesma razão pela qual o RefundHalt baseia tudo na identidade da compra: um reembolso, uma revisão de estorno e uma solicitação de consumo para a mesma conta se resolvem em um único histórico, então um reembolsador reincidente aparece como um padrão na primeira vez que repete, não depois da quarta fatura que você já pagou.
Perguntas frequentes
- O que é abuso de reembolsos em um app?
- Abuso de reembolsos é um cliente pedindo reembolsos repetidamente depois de receber e usar o que comprou, de modo que mantém o conteúdo ou o benefício enquanto recupera o dinheiro. Nas lojas de apps, geralmente aparece como a mesma conta reembolsando consumíveis ou assinaturas repetidas vezes, ou como friendly fraud, em que uma cobrança legítima é contestada com o banco.
- Como vinculo uma compra dentro do app a um usuário específico?
- Na Apple, gere um UUID e passe-o como appAccountToken quando a compra começa, e o StoreKit o vincula à transação e o retorna nos dados de transação e consumo. No Google Play, chame setObfuscatedAccountId com um valor com hash vinculado à conta. Ambos mapeiam uma transação da loja para o seu próprio registro de usuário sem expor dados pessoais.
- A Apple ou o Google podem me dizer que uma conta é um reembolsador reincidente?
- Não diretamente. O Google usa o ID de conta ofuscado para detectar atividade irregular e bloquear parte da fraude antes da compra, e a Apple permite que você envie o histórico da conta durante uma solicitação de consumo, mas nenhuma loja entrega a você uma lista de reembolsadores reincidentes. Você constrói isso por conta própria a partir do seu próprio registro com chave nos campos de identidade.
- Por que o Google bloqueia minha compra quando defino o ID de conta?
- Porque o ID de conta ofuscado não pode conter dados pessoais em texto puro. Armazenar algo como um endereço de e-mail sem tratamento nele faz o Google Play bloquear a compra. Use um valor criptografado ou um hash unidirecional, e mantenha-o dentro do limite de 64 caracteres.
- Contestar reembolsos por meio da solicitação de consumo interrompe o abuso?
- Pode reduzi-lo. O CONSUMPTION_REQUEST é um de apenas dois fluxos em que suas provas chegam à loja antes de ela decidir, e o histórico da conta mais os dados de entrega e consumo ajudam a Apple a identificar o abuso de devoluções e o friendly fraud. Mas não é um bloqueio. A Apple ainda decide, e o abuso que chega por fluxos não contestáveis não é afetado.
Fontes e leituras adicionais
- Apple: appAccountToken (App Store Server API)
- Apple: ConsumptionRequest (App Store Server API)
- Android: BillingFlowParams.Builder.setObfuscatedAccountId
- Android: Fight fraud and abuse (Play Billing security)
- Google Play Developer API: Voided Purchases
- Google Play Billing: Provide refund and chargeback suggestions (Review Refund API)
- Android Developers Blog: Play Commerce prevented over $2 billion in fraudulent and abusive transactions in 2022
- Google Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
O piloto automático de reembolsos para App Store e Google Play
Continue lendo
The refunds you cannot contest: what Apple and Google decide without asking you
Only two refund flows ever ask for your evidence: Apple's consumption request and Google Play's chargeback review. Everything else, the 48-hour Play refund, support refunds, voided purchases, unacknowledged trials, is decided without you. Here is the full map, what you can prevent, and what you can only record.
Apple's CONSUMPTION_REQUEST, explained: the 12 hours that decide your refund
When a customer asks Apple for a refund, Apple asks you first. Here's exactly what the CONSUMPTION_REQUEST notification contains, what Apple expects back, how to answer one end to end, and why most developers silently forfeit.