Todos os artigos
Deep dive8 min de leitura

Os reembolsos de assinaturas não funcionam como os reembolsos de compra única, e a loja em que você está decide quanta voz você tem

Um reembolso de assinatura reverte todo um período de cobrança, não uma única venda. Na App Store, a Apple decide e seu servidor apenas fica sabendo do resultado. No Google Play você mesmo escolhe um reembolso integral ou proporcional. Veja como cada loja lida com os reembolsos de assinaturas, e quanto um deles custa a você.

Um calendário de parede com as datas mensais de cobrança recorrente circuladas, um cartão de crédito sobre ele e moedas empurradas parcialmente de volta, ilustrando como os reembolsos de assinaturas revertem um período de cobrança

Principais conclusões

  • Um reembolso de assinatura não é a mesma coisa que um reembolso de compra única. A unidade que se reverte é um período de cobrança, e em ambas as lojas reembolsar um pedido de assinatura cancela a assinatura e corta o acesso.
  • Na App Store, a Apple decide cada reembolso de assinatura. O cliente pede à Apple em reportaproblem.apple.com, a Apple decide, e seu servidor apenas fica sabendo do resultado por meio de uma notificação REFUND, REFUND_DECLINED ou REFUND_REVERSED.
  • Quando a Apple concede um reembolso de assinatura, a transação recebe um revocationDate e o autoRenewStatus da assinatura é definido como false, de modo que ela para de renovar e o cliente perde o acesso.
  • A Apple mede uma assinatura de renovação automática pelo tempo decorrido, não pelas suas métricas de uso. Alguém com seis meses em um plano anual consumiu cerca de 50 por cento, e GRANT_PRORATED é a única preferência de reembolso que você pode expressar para isso.
  • No Google Play você mesmo emite o reembolso. purchases.subscriptionsv2.revoke aceita ou fullRefund, que devolve todo o período atual, ou proratedRefund, que devolve apenas o tempo de direito não utilizado.
  • Qual pedido você reembolsa no Google Play muda o resultado. Reembolse o pedido mais recente e a assinatura é removida imediatamente com as renovações futuras canceladas. Reembolse um pedido mais antigo e a assinatura permanece ativa.
  • Os limites do Google Play são rígidos. Pedidos com mais de três anos não podem ser reembolsados, reembolsos parciais só funcionam em pedidos feitos depois de March 2018, não se aplicam a apps pagos, e nenhum reembolso pode ser revertido depois de emitido.

Reembolsar uma assinatura e reembolsar uma única compra dentro do app parecem o mesmo botão. Não são. Uma compra única é uma cobrança que você devolve. Uma assinatura é uma cobrança recorrente com um direito ativo anexado, então os reembolsos de assinaturas precisam responder a duas perguntas que um reembolso de compra única nunca faz: quanto do período atual você devolve, e se a assinatura continua funcionando. A App Store e o Google Play respondem a essas duas perguntas de maneiras opostas, e a diferença decide quanto controle você tem e quanto dinheiro sai da sua conta.

Aqui está o mapa curto. Na App Store, a Apple é dona da decisão e você fica sabendo depois do fato. No Google Play, você tem os controles e escolhe integral ou proporcional por conta própria. Isto percorre ambas as lojas, os campos e notificações exatos que cada uma usa, qual pedido você toca quando uma assinatura já cobrou muitas vezes, e quanto um reembolso de assinatura realmente custa depois que você conta a computação que já gastou.

Em que os reembolsos de assinaturas diferem dos reembolsos de compra única

Ambas as lojas tratam um reembolso como a reversão de um pedido específico. Em uma compra única há apenas um pedido, então não há nada a escolher. Uma assinatura é uma cadeia de pedidos, um por período de cobrança, com um direito que está ativo ou não. Essa estrutura é o motivo pelo qual um reembolso de assinatura carrega escolhas que um reembolso de compra única não tem.

A unidade que se reverte é um período de cobrança

Quando você reembolsa uma assinatura, você não está devolvendo uma vida inteira de pagamentos. Você está agindo sobre um pedido da cadeia, geralmente o mais recente, que é um único período de cobrança. Um reembolso integral devolve todo esse período. Um reembolso proporcional devolve apenas a parte do período que o cliente ainda não usou. De qualquer forma, a venda que você reverte é o preço de um período, não todo o histórico do cliente com o app.

Quem decide é a diferença real

A divisão mais nítida é a autoridade. Na App Store, a Apple decide se um reembolso de assinatura acontece de fato, e você fornece contexto no máximo. No Google Play, você decide, e a API faz exatamente o que você manda. O mesmo resultado para o cliente, um assento completamente diferente para o desenvolvedor, e isso muda o que você constrói para lidar com cada um.

Como a App Store lida com um reembolso de assinatura

Do lado da Apple, você é um espectador com um microfone pequeno. O cliente fala com a Apple, a Apple decide, e seu servidor lê o resultado.

O cliente pede à Apple, e a Apple decide

Um cliente da App Store solicita um reembolso de assinatura em reportaproblem.apple.com, não a você. A Apple analisa a solicitação com seus próprios sinais e decide. Você não a aprova, e não há botão no console da Apple que permita emitir um reembolso de assinatura como o Google Play faz. A Apple tem até 90 dias a partir da compra para aceitar uma solicitação para análise, e uma vez que decide, a decisão é da Apple.

O que seu servidor vê quando o reembolso chega

Você fica sabendo do resultado por meio das App Store Server Notifications V2. Um reembolso concedido chega como uma notificação REFUND, e a transação agora carrega um revocationDate marcando quando o acesso deve terminar. O autoRenewStatus da assinatura é definido como false, então ela para de renovar e o cliente perde o direito. Se a Apple negar a solicitação você recebe REFUND_DECLINED, e se a Apple depois desfizer um reembolso que já havia concedido você recebe REFUND_REVERSED e a assinatura volta. Seu trabalho é ler isso e alternar o acesso, não dar um voto.

NotificaçãoO que significaO que você faz
REFUNDA Apple concedeu o reembolso; a transação recebe um revocationDateRevogue o acesso, trate autoRenewStatus como false
REFUND_DECLINEDA Apple negou a solicitação de reembolso do clienteNada muda; a assinatura permanece
REFUND_REVERSEDA Apple desfez um reembolso que havia concedidoRestaure o acesso e a venda

A Apple mede uma assinatura pelo tempo, não pelas suas métricas

Para um consumível, você pode dizer à Apple quanto foi usado por meio dos dados de consumo. Para uma assinatura de renovação automática, a Apple calcula o consumo a partir do tempo decorrido por conta própria. O próprio exemplo da Apple é um cliente com seis meses em uma assinatura anual, que consumiu cerca de 50 por cento dela. Então suas métricas de uso não definem o número em uma assinatura. A única alavanca que você pode puxar é refundPreference, e para uma assinatura o valor relevante é GRANT_PRORATED, que diz que você preferiria que a Apple devolvesse apenas a parte não utilizada. É uma preferência, não uma decisão. A Apple ainda decide.

Como o Google Play lida com um reembolso de assinatura

O Google Play coloca a decisão nas suas mãos. Há uma tela no Play Console e um conjunto de métodos de API que permitem reembolsar uma assinatura diretamente, escolher quanto, e decidir se o acesso termina. Essa é a postura oposta à da Apple, e vem com escolhas que você tem que acertar.

Integral ou proporcional, e a decisão é sua

A forma atual de reembolsar e revogar uma assinatura é purchases.subscriptionsv2.revoke, chamada com um revocationContext. Passe fullRefund e o Google Play encerra a assinatura e devolve o valor integral do período de cobrança atual. Passe proratedRefund e o Google Play encerra a assinatura e devolve apenas o tempo de direito restante e não utilizado. O método antigo só conseguia fazer reembolsos integrais, que é o motivo para usar o mais novo. Uma revogação proporcional é um corpo de duas linhas, um revocationContext envolvendo proratedRefund, e você troca por fullRefund para todo o período. Qualquer uma das revogações dispara uma notificação em tempo real para desenvolvedores SUBSCRIPTION_REVOKED, que é o seu sinal para cortar o acesso.

Qual pedido você reembolsa muda o que acontece

O Google Play também permite reembolsar um pedido sem revogar, por meio de orders.refund, e aqui morde uma regra sutil. Se você reembolsar o pedido mais recente de uma assinatura, o pedido é reembolsado, a assinatura é removida imediatamente, e as recorrências futuras são canceladas. Se você reembolsar um pedido mais antigo da cadeia, esse pedido é reembolsado mas a assinatura permanece ativa. Em orders.refund o parâmetro revoke só revoga quando o pedido é o mais recente, então para terminar o acesso em uma assinatura ativa você usa purchases.subscriptionsv2.revoke em vez disso.

AçãoPedido reembolsadoO que acontece com a assinatura
Reembolsar o pedido mais recenteO último período de cobrançaRemovida imediatamente, renovações futuras canceladas
Reembolsar um pedido mais antigoUm período de cobrança passadoPermanece ativa, continua renovando
subscriptionsv2.revoke, integral ou proporcionalPeríodo atualEncerrada agora, SUBSCRIPTION_REVOKED enviado
Dois smartphones lado a lado sobre uma mesa escura mostrando telas de pagamento de assinatura com uma pilha parcial de moedas devolvidas entre eles, ilustrando um reembolso de assinatura integral versus proporcional na App Store e no Google Play

Os limites que fazem os desenvolvedores tropeçarem

Algumas arestas duras pegam as pessoas, e nenhuma delas está no caminho feliz.

  • Pedidos com mais de três anos não podem ser reembolsados de forma alguma.
  • Reembolsos parciais funcionam apenas em pedidos feitos depois de March 2018, e nunca em compras de apps pagos.
  • Você pode acumular vários reembolsos parciais em um pedido, mas não até nem além do total do pedido.
  • Um reembolso não pode ser revertido depois de emitido.

O Google Play geralmente devolve uma decisão de reembolso em um dia, embora possa levar até quatro. Planeje esse atraso quando um reembolso precisar se refletir nos seus próprios controles de acesso.

Quanto um reembolso de assinatura realmente custa a você

A cobrança reembolsada nunca é a conta inteira. No momento em que um pedido de assinatura foi entregue, você já havia gastado dinheiro de verdade nele: computação, chamadas de API do modelo, armazenamento, e quaisquer pagamentos vinculados a esse período. Um reembolso devolve a venda. Ele não devolve o que você gastou para atendê-la. Em uma assinatura, o formato da perda depende de qual reembolso você emite.

Integral versus proporcional é uma decisão de dinheiro

Um reembolso integral no Google Play devolve todo o período atual, então você perde a receita do período inteiro enquanto mantém cada custo em que já incorreu naquele período. Um reembolso proporcional devolve apenas a fatia não utilizada, então você mantém a receita da parte que o cliente de fato teve. Se um cliente está com 60 por cento de um período mensal em um plano de 10 dólares, um reembolso integral custa a você os 10 dólares inteiros, e um reembolso proporcional custa cerca de 4 dólares, os 40 por cento não utilizados. A Apple aplica a mesma lógica de tempo decorrido do lado dela quando dimensiona um reembolso de assinatura.

Tipo de reembolsoO que o cliente recebe de voltaO que você mantém
Reembolso integralTodo o período atual, 10.00Nada deste período
Reembolso proporcionalOs 40 por cento não utilizados, cerca de 4.00Os 60 por cento utilizados, cerca de 6.00

Os custos que nunca voltam

Qualquer que seja o reembolso que você emite, os custos posteriores daquele período se foram. Uma chamada de API de modelo que você pagou, um vídeo que você renderizou, armazenamento que você provisionou, um pagamento a um criador que você já enviou, nada disso se reverte quando o reembolso de assinatura é liquidado. Dimensione o reembolso pelo que o cliente de fato usou, nunca por há quanto tempo ele assinou, porque o tempo decorrido não é um custo e nenhuma das lojas o trata como tal. E depois de August 3, 2026, se uma cobrança de assinatura do Google Play terminar em um estorno bancário em vez de um reembolso que você emite, você também absorve a taxa de estorno do banco, que um reembolso que você concede primeiro evita.

Como lidar com reembolsos de assinaturas sem uma pessoa observando

Nada disso deveria esperar alguém ler um painel. As notificações chegam a qualquer hora, e o acesso deveria mudar no momento em que um reembolso chega, não na manhã seguinte.

Leia o resultado e revogue o acesso em ambas as lojas

Na App Store, fique atento a REFUND, REFUND_DECLINED e REFUND_REVERSED, e use o revocationDate e o autoRenewStatus para terminar ou restaurar o acesso automaticamente. No Google Play, fique atento a SUBSCRIPTION_REVOKED e aos sinais de compra anulada e faça o mesmo. Esta é a canalização que o RefundHalt executa por você: entra a notificação, a conta é correspondida, o acesso é alternado, nenhuma pessoa no ciclo.

Mantenha as provas prontas antes da disputa

As janelas estreitas que de fato pedem sua entrada, o CONSUMPTION_REQUEST de 12 horas da Apple em consumíveis e a análise de estorno de 24 horas do Google Play, só ajudam se as provas já existirem. Anexe um identificador de conta a cada compra, um appAccountToken UUID na Apple e um setObfuscatedAccountId com hash de 64 caracteres ou menos no Google Play, e registre o que cada período pago entregou. Então, quando um token chega, o caso já está montado, e responder dentro da janela é trabalho de uma máquina, não uma correria.

Perguntas frequentes

Reembolsar uma assinatura é diferente de reembolsar uma compra única?
Sim. Uma compra única é um único pedido que você devolve. Uma assinatura é uma cadeia de pedidos com um direito ativo, então um reembolso de assinatura age sobre um período de cobrança e também decide se a assinatura continua funcionando. Tanto na App Store quanto no Google Play, reembolsar um pedido de assinatura cancela a assinatura e encerra o acesso, e muitas vezes você pode escolher entre devolver o período inteiro ou apenas a parte não utilizada.
Um desenvolvedor pode emitir diretamente um reembolso de assinatura da App Store?
Não. A Apple decide os reembolsos de assinaturas da App Store. O cliente solicita um em reportaproblem.apple.com, a Apple decide, e você fica sabendo do resultado por meio de uma notificação REFUND, REFUND_DECLINED ou REFUND_REVERSED. A única entrada que você pode oferecer é um refundPreference, como GRANT_PRORATED, e a Apple o trata como uma preferência, não como uma decisão.
Como emitir um reembolso de assinatura proporcional no Google Play?
Chame purchases.subscriptionsv2.revoke com um revocationContext definido como proratedRefund. O Google Play encerra a assinatura e devolve apenas o tempo de direito restante e não utilizado, e então envia uma notificação SUBSCRIPTION_REVOKED. Passe fullRefund em vez disso para devolver todo o período atual. O método revoke antigo só conseguia fazer reembolsos integrais.
Por que meu reembolso do Google Play não cancelou a assinatura?
Porque você reembolsou um pedido mais antigo da cadeia. No Google Play, reembolsar o pedido mais recente remove a assinatura imediatamente e cancela as renovações futuras, mas reembolsar um pedido mais antigo reembolsa aquele período enquanto a assinatura permanece ativa. O parâmetro revoke em orders.refund só revoga quando o pedido é o mais recente, então para terminar uma assinatura ativa use purchases.subscriptionsv2.revoke.
Até quando no passado é possível reembolsar um pedido de assinatura?
No Google Play, pedidos com mais de três anos não podem ser reembolsados. Reembolsos parciais só funcionam em pedidos feitos depois de March 2018 e nunca em apps pagos, e nenhum reembolso pode ser revertido depois de emitido. Na App Store, a Apple aceita solicitações de reembolso de clientes por até 90 dias a partir da compra e decide cada uma ela mesma.

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.