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.

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 pagou | Quem decide o reembolso | Como seu servidor fica sabendo | Quem pode interromper as renovações |
|---|---|---|---|
| App Store | Apple | Notificação REFUND no App Store Server Notifications V2 | O cliente, nos ajustes de assinatura da App Store ou em uma tela de gerenciamento que seu app abre |
| Google Play | Google nas primeiras 48 horas, depois você ou o Google | Voided Purchases API e notificações do desenvolvedor em tempo real | O cliente, ou você via purchases.subscriptionsv2.cancel |
| Seu site | Você | Os webhooks do seu processador de pagamentos | Você |
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 perdida | Quem paga |
|---|---|
| Processamento de servidor para cada sessão no Android ou na web | Você |
| Chamadas a APIs de terceiros feitas pelos seus recursos | Você |
| Armazenamento dos arquivos e do histórico do usuário | Você |
| Repasses por uso ou por visualização a criadores | Você |
| Tarifas de chargeback em um pedido do Google Play depois de 3 de agosto de 2026 | Você, além do preço da compra menos a taxa de serviço do Play |

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
- Apple: App Review Guidelines, 3.1.3(b) Multiplatform Services
- Apple Developer Documentation: Offering a subscription across multiple apps
- Apple Developer Documentation: Handling refund notifications
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: Set App Account Token
- Android Developers: BillingFlowParams.Builder, setObfuscatedAccountId
- Google Play Developer API: purchases.voidedpurchases
- 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
Pedidos de reembolso excessivos podem custar mais do que os próprios reembolsos, porque as duas lojas os tratam como um sinal de qualidade
A diretriz 5.6.4 da Apple aponta pedidos de reembolso excessivos como sinal de que um app não atende aos padrões de qualidade, e o contrato de distribuição do Google permite remover apps de desenvolvedores novos com base na taxa de reembolso. Veja o que cada loja diz, quanto custa uma remoção e como ficar longe dela.
Verifique as notificações do servidor da App Store antes de agir sobre um reembolso, porque qualquer pessoa pode enviar dados para a sua URL de webhook
Uma notificação de reembolso é apenas uma requisição HTTPS até você conferir a assinatura. Veja como verificar as notificações do servidor da App Store e as mensagens RTDN do Google Play, o que cada loja assina e quanto custa um reembolso forjado ou rejeitado por engano.