Todos os artigos
Guia prático8 min de leitura

Apple e Google reembolsam uma loja de cada vez, então sua assinatura multiplataforma precisa cortar o acesso em todas as outras

Quando a Apple ou o Google reembolsa uma assinatura multiplataforma, seu app Android, seu app de iPhone e seu site não ficam sabendo sozinhos. Veja como vincular cada compra a uma única conta, revogar o direito de acesso certo e parar de pagar para atender usuários reembolsados.

Um iPhone, um celular Android e um notebook lado a lado sobre uma mesa, cada um conectado à mesma conta de uma assinatura multiplataforma

Principais conclusões

  • A App Review Guideline 3.1.3(b) da Apple permite que apps que funcionam em várias plataformas deem acesso a conteúdos e assinaturas adquiridos em outras plataformas ou no site do desenvolvedor, desde que esses itens também estejam disponíveis como compras no app.
  • Apple e Google só reembolsam compras feitas na própria loja, então um reembolso da Apple em uma assinatura multiplataforma não chega à cobrança do Google Play nem à cobrança web do cliente. O servidor do desenvolvedor precisa remover o acesso que concedeu em cada plataforma.
  • A Apple envia uma notificação REFUND pelo App Store Server Notifications V2 quando reembolsa um consumível, um não consumível, uma assinatura não renovável ou uma assinatura de renovação automática, e afirma que o desenvolvedor é responsável por armazenar, monitorar e agir sobre cada transação reembolsada.
  • O appAccountToken da Apple é um UUID que o desenvolvedor anexa a uma compra no app, e o endpoint Set App Account Token da App Store Server API pode adicioná-lo depois a compras feitas fora do app, como um código de oferta resgatado.
  • O setObfuscatedAccountId do Google Play vincula uma compra a uma conta no app do desenvolvedor, tem limite de 64 caracteres e faz as compras serem bloqueadas se contiver dados pessoais em texto puro, como um e-mail.
  • A Voided Purchases API do Google Play informa compras reembolsadas e contestadas com um orderId e um voidedSource de 0 para o usuário, 1 para o desenvolvedor ou 2 para o Google.
  • Em pedidos do Google Play feitos depois de 3 de agosto de 2026, quando um chargeback é aceito, o desenvolvedor paga o preço da compra, menos a taxa de serviço do Play, mais as tarifas de chargeback do banco.

Seu assinante pagou à Apple, abriu seu app Android na mesma tarde e agora usa seu site no trabalho. Aí a Apple faz o reembolso. O Google Play não sabe. Sua cobrança web não sabe. A menos que seu próprio servidor corte o acesso, uma assinatura multiplataforma reembolsada continua funcionando em todas as telas que leem seu banco de dados de contas. As lojas reembolsam uma vitrine de cada vez, e seu sistema de contas é o único lugar onde a assinatura existe por inteiro. Por isso ele é o único lugar capaz de encerrá-la.

Por que o reembolso de uma loja não encerra uma assinatura multiplataforma

A Apple permite esse modelo com todas as letras. A App Review Guideline 3.1.3(b), Multiplatform Services, diz que apps que funcionam em várias plataformas podem permitir que os usuários acessem conteúdos, assinaturas ou recursos adquiridos no seu app em outras plataformas ou no seu site, desde que esses itens também estejam disponíveis como compras no app.

O guia da Apple sobre oferecer uma mesma assinatura em vários apps descreve como isso funciona na prática. Seu servidor concede o acesso usando um banco de dados de contas unificado, e todos os apps leem dele. O mesmo guia alerta que, se uma compra não for propagada para os outros apps, o usuário pode acabar pagando mais de uma vez pelo mesmo serviço.

Esse desenho tem uma consequência que muita gente não percebe. O direito de acesso fica no seu banco de dados, mas cada loja só conhece os próprios recibos. A Apple pode reembolsar a compra no iPhone e avisar seu servidor. Ela não consegue avisar nada ao seu app Android nem ao seu site. Se o tratamento de reembolsos só atualizar o cliente iOS, o cliente recebe o dinheiro de volta e mantém a assinatura em todo o resto.

Onde pagouQuem decide o reembolsoComo seu servidor fica sabendoQuem pode interromper as renovações
App StoreAppleNotificação REFUND no App Store Server Notifications V2O cliente, nos ajustes de assinatura da App Store ou em uma tela de gerenciamento que seu app abre
Google PlayGoogle nas primeiras 48 horas, depois você ou o GoogleVoided Purchases API e notificações do desenvolvedor em tempo realO cliente, ou você via purchases.subscriptionsv2.cancel
Seu siteVocêOs webhooks do seu processador de pagamentosVocê

Como revogar o acesso em todas as plataformas depois de um reembolso

Vincule cada compra a uma única conta

Associar um reembolso a uma pessoa é a parte difícil, porque cada loja identifica o comprador do seu jeito. As duas oferecem um campo para o seu próprio ID de conta. Use-o em todas as compras.

  • Na Apple, defina um appAccountToken, um UUID gerado por você, quando a compra começa. A App Store devolve o mesmo UUID nas informações da transação e da renovação. A Apple diz que você pode reutilizar um mesmo valor para todas as transações do mesmo cliente.
  • Se o cliente comprou fora do seu app, por exemplo resgatando um código de oferta na App Store, a transação não tem token. O endpoint Set App Account Token adiciona um. Em uma assinatura de renovação automática, ele vale para a renovação atual e as seguintes, não para transações passadas, e não funciona com compras compartilhadas pelo Compartilhamento Familiar.
  • No Google Play, passe um ID de conta ofuscado com setObfuscatedAccountId ao iniciar o fluxo de cobrança. O limite é de 64 caracteres. O Google diz que dados pessoais em texto puro, como um e-mail, fazem as compras serem bloqueadas, e recomenda criptografia ou um hash unidirecional.

Ouça as duas lojas e grave um único direito de acesso

A Apple envia REFUND quando reembolsa qualquer tipo de produto, inclusive assinaturas de renovação automática. Ela envia REFUND_REVERSED quando reverte um reembolso já concedido, por causa de uma contestação aberta pelo cliente. No Google Play, a Voided Purchases API lista compras reembolsadas e contestadas, cada uma com um orderId que identifica a compra ou renovação exata. Seu processador web envia o próprio evento de reembolso. Os três devem chegar ao mesmo handler e alterar o mesmo registro.

Revogue o direito de acesso, não a conta

Um reembolso cancela uma compra, não uma pessoa. Remova o acesso que veio da compra reembolsada e recalcule o que a conta ainda tem. Se o cliente também tiver uma assinatura ativa em outra loja, ele mantém o acesso por ela. Se não tiver, todos os clientes perdem os recursos premium na próxima vez que consultarem seu servidor.

Quando a mesma pessoa assina em duas lojas

Assinaturas duplicadas são a outra metade do problema. Alguém assina no Android, compra um iPhone novo, não faz login e assina de novo. Agora está pagando duas vezes pelo mesmo serviço, e uma dessas cobranças costuma virar um pedido de reembolso. A equipe de comércio da Apple, respondendo a um desenvolvedor nos Apple Developer Forums, foi direta: o sistema de contas de um app deve incluir uma lógica para impedir a compra duplicada em outra plataforma.

Consulte todas as lojas antes de exibir o paywall

Faça o usuário entrar na conta antes do paywall, busque todas as compras ativas dele no seu servidor e pule a oferta se alguma delas cobrir esta plataforma. Essa única verificação evita a maioria das cobranças duplicadas antes que aconteçam.

Qual compra devo reembolsar quando a duplicidade já aconteceu?

Reembolse a que você controla. No Google Play, você mesmo pode emitir o reembolso no Play Console, e purchases.subscriptionsv2.cancel com DEVELOPER_REQUESTED_STOP_PAYMENTS interrompe o próximo pagamento. A assinatura web é sua, e você pode reembolsá-la diretamente. Os reembolsos da App Store são decididos pela Apple, então, se a duplicidade estiver no iPhone, o cliente faz o pedido à Apple, e seu app pode abrir esse pedido com a API de solicitação de reembolso do StoreKit.

Quanto custa um reembolso que não chega a uma plataforma

O preço reembolsado é só a primeira perda. Um cliente cujo reembolso da Apple nunca chegou ao seu app Android ou ao seu site continua usando o que você paga para manter no ar. Cada sessão continua consumindo processamento. Cada recurso de IA continua fazendo chamadas a APIs de terceiros que são cobradas de você. Os arquivos dele continuam ocupando armazenamento, e se o seu app paga criadores por visualização ou por uso, esses repasses continuam saindo. Em um plano anual, isso pode significar um ano inteiro de custos de operação para uma conta que agora não paga nada.

A via bancária piora tudo. Em pedidos do Google Play feitos depois de 3 de agosto de 2026, o Google diz que, quando um chargeback é aceito, o desenvolvedor responde pelo preço da compra, menos a taxa de serviço do Play, mais as tarifas de chargeback cobradas pela instituição financeira. Um chargeback é definitivo no banco. Um cliente que fez chargeback e ainda tem acesso custou a você o preço, as tarifas e o custo de operação, tudo de uma vez.

O que continua rodando depois de uma revogação perdidaQuem paga
Processamento de servidor para cada sessão no Android ou na webVocê
Chamadas a APIs de terceiros feitas pelos seus recursosVocê
Armazenamento dos arquivos e do histórico do usuárioVocê
Repasses por uso ou por visualização a criadoresVocê
Tarifas de chargeback em um pedido do Google Play depois de 3 de agosto de 2026Você, além do preço da compra menos a taxa de serviço do Play
Uma mão segurando um smartphone ao lado de um notebook aberto, com um segundo celular virado para baixo, a rotina comum de quem usa uma assinatura multiplataforma

O uso multiplataforma continua sendo evidência

Uma única conta em todas as plataformas também ajuda quando uma loja pede a sua versão. As informações de consumo da Apple perguntam qual parte de um consumível, um não consumível ou uma assinatura não renovável o cliente consumiu. Em assinaturas de renovação automática você não envia um percentual, porque a Apple o calcula pelo tempo decorrido. A análise de chargeback do Google Play aceita até 1.000 eventos de uso de consumo, e cada um pode levar o ID de conta ofuscado. Uso registrado sob um mesmo ID de conta, seja qual for o dispositivo que o gerou, é uso que você pode comprovar.

Quais reembolsos nunca pedem a sua versão

A maioria dos reembolsos é decidida sem você. O Google Play pode reembolsar uma compra em até 48 horas pelo próprio fluxo de reembolso. Reembolsos do suporte da loja, compras anuladas e o reembolso automático do Google para compras que você nunca confirma, em cerca de 72 horas, acontecem primeiro e são informados depois. Nesses casos, a lógica de revogação acima é todo o trabalho.

Só dois fluxos pedem evidências. O CONSUMPTION_REQUEST da Apple dá a você 12 horas para enviar as informações de consumo. A análise de chargeback do Google Play dá 24 horas a partir da PendingRefundReviewNotification para responder via orders.reviewrefund, e o Google registra apenas a sua primeira chamada. O RefundHalt responde aos dois dentro do prazo, usando os dados de uso que você já coleta, vinculados à mesma conta em todos os seus apps.

Um checklist rápido para reembolsos multiplataforma

  • Defina appAccountToken nas compras da Apple e um ID de conta ofuscado nas compras do Google Play.
  • Preencha os tokens da Apple que faltam com Set App Account Token nos resgates de códigos de oferta.
  • Encaminhe REFUND e REFUND_REVERSED da Apple, as compras anuladas do Google Play e os reembolsos web para um único handler.
  • Guarde cada compra com sua origem e calcule o acesso a partir de todas as compras ativas.
  • Consulte as compras de todas as lojas antes de exibir um paywall em qualquer plataforma.

Perguntas frequentes

Posso dar a usuários de iPhone acesso a uma assinatura que compraram no Android ou no meu site?
Sim. A App Review Guideline 3.1.3(b) da Apple permite que apps que funcionam em várias plataformas deem acesso a conteúdos, assinaturas ou recursos adquiridos em outras plataformas ou no seu site, desde que esses itens também estejam disponíveis como compras no app de iPhone.
Se a Apple reembolsar um assinante, o Google Play ou minha cobrança web ficam sabendo?
Não. A Apple avisa seu servidor por uma notificação REFUND no App Store Server Notifications V2, e mais ninguém. Seu servidor precisa remover o acesso que aquela compra concedeu no Android, na web e em qualquer outro lugar onde a conta faça login.
Como associo um reembolso da App Store a uma conta de usuário?
Use o appAccountToken, um UUID que seu app anexa à compra e que a App Store devolve nas informações da transação. Para compras feitas fora do seu app, como o resgate de um código de oferta, o endpoint Set App Account Token da Apple adiciona ou substitui o token. Ele não aceita transações do Compartilhamento Familiar.
Um cliente assina tanto na App Store quanto no Google Play. Qual devo reembolsar?
Reembolse a que você controla. Você pode reembolsar um pedido do Google Play no Play Console e interromper o próximo pagamento com purchases.subscriptionsv2.cancel. A Apple decide os reembolsos da App Store, então uma duplicidade no iPhone passa pela solicitação de reembolso da Apple, que seu app pode abrir com o StoreKit.
O uso no meu site ou no meu app Android conta como evidência em uma análise de reembolso?
O uso registrado sob uma mesma conta pode sustentar sua resposta. As informações de consumo da Apple perguntam qual parte de um consumível, um não consumível ou uma assinatura não renovável foi consumida, e a análise de chargeback do Google Play aceita até 1.000 eventos de uso que podem levar o ID de conta ofuscado.

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.