Todos os artigos
Deep dive9 min de leitura

Todo reembolso por upgrade de assinatura é uma decisão da loja, não sua, e sai direto dos seus rendimentos

Quando um cliente passa para um nível superior, a loja emite um reembolso por upgrade de assinatura pelos dias não usados do plano antigo, e reduz seus rendimentos de forma automática. Veja como funcionam os reembolsos por upgrade na App Store e no Google Play, e por que a Apple mantém o valor fora do seu servidor.

Uma alavanca de latão empurrada para uma posição mais alta enquanto moedas escorregam pela borda da mesa para a sombra, ilustrando um reembolso por upgrade de assinatura saindo dos seus rendimentos

Principais conclusões

  • Um reembolso por upgrade de assinatura é automático. Quando um cliente passa para um nível superior no meio do ciclo, a loja credita ou reembolsa os dias não usados do plano antigo sem perguntar a você, e o dinheiro sai dos rendimentos que você já havia registrado.
  • Na App Store, um upgrade entra em vigor imediatamente e a Apple reembolsa o valor proporcional da assinatura original. Um downgrade espera até a próxima data de renovação e não reembolsa nada.
  • A Apple não envia ao seu servidor o valor do reembolso por upgrade. A transação de upgrade é marcada com isUpgraded, mas o campo de preço continua mostrando o preço cheio do novo nível, então a receita que você calcula a partir das App Store Server Notifications fica inflada.
  • Os relatórios financeiros do App Store Connect são o único lugar onde um reembolso por upgrade proporcional é contabilizado. A equipe da Apple afirma que o valor não está disponível pela App Store Server API, pelas Notifications nem pelo StoreKit.
  • O Google Play não devolve dinheiro ao cartão em um upgrade. Ele credita o tempo não usado ou cobra a diferença de preço, e qual das duas acontece depende do modo de substituição que você definir. O padrão é WITH_TIME_PRORATION.
  • Um reembolso por upgrade não é um pedido de reembolso do cliente. Não há CONSUMPTION_REQUEST nem análise de chargeback, então não há janela de 12 horas ou 24 horas e nada a contestar. Você concilia, você não briga por isso.
  • O modo de substituição é uma decisão de receita. O WITH_TIME_PRORATION entrega ao cliente tempo pago extra que você entrega ao custo do nível superior, enquanto o CHARGE_PRORATED_PRICE cobra a diferença agora, então o padrão errado vaza margem um upgrade de cada vez.

Um cliente toca em fazer upgrade, passa do seu nível de cinco dólares para o de dez dólares, e você registra uma venda maior. A loja faz outra coisa nesse mesmo momento, e você nunca a vê. Ela entrega a esse cliente um reembolso por upgrade de assinatura pelos dias que ele já havia pago no plano antigo, e esse dinheiro sai dos seus rendimentos. Ninguém perguntou a você. Na App Store você nem sequer vai encontrar o valor nos eventos que o seu servidor recebe.

Este não é o reembolso que você pode contestar. Não é um CONSUMPTION_REQUEST da Apple e não é uma análise de chargeback do Google Play. É rateio, embutido na forma como as duas lojas deixam as pessoas trocarem de plano, e ele roda sozinho toda vez que um assinante sobe de nível. Veja o que um reembolso por upgrade realmente é em cada loja, por que a Apple mantém o valor fora do seu servidor e quanto a configuração errada do Google Play custa a você.

O que é de fato um reembolso por upgrade de assinatura

Um reembolso por upgrade é a loja acertando as contas pelo tempo que o cliente pagou mas não vai usar. Não tem nada a ver com uma reclamação, uma disputa ou a sua política de reembolsos. Ele dispara apenas pela mecânica da troca de plano.

É rateio, não uma reclamação do cliente

Quando um assinante passa para um nível superior no meio de um período de cobrança, ele já pagou até o fim daquele período pelo preço antigo. A loja o compensa pela parte não usada. A Apple emite um reembolso proporcional da assinatura original. O Google Play credita o valor não usado no novo plano. Nenhum dos dois passa por um fluxo ao qual você possa responder, e nenhum dos dois espera a sua aprovação.

Só um upgrade dispara isso

A direção da troca decide o dinheiro. Na App Store, um upgrade é uma passagem para um produto de posição mais alta no mesmo grupo de assinaturas, e só essa passagem é imediata e reembolsada. Um downgrade é uma passagem para uma posição mais baixa, e entra em vigor na próxima renovação sem reembolso. Um crossgrade é uma passagem entre produtos da mesma posição, e o seu momento depende das durações envolvidas. Ordene os produtos de forma errada no App Store Connect e uma troca que você acha que é um upgrade vai se comportar como outra coisa.

Troca na App StoreQuando entra em vigorO que acontece com o dinheiro
Upgrade para um nível superiorImediatamenteA Apple reembolsa o valor proporcional da assinatura original
Downgrade para um nível inferiorNa próxima data de renovaçãoSem reembolso, renova pelo preço mais baixo
Crossgrade, mesma duração paga adiantadaImediatamenteUma nova assinatura começa, o serviço pago continua
Crossgrade, durações diferentesNa próxima data de renovaçãoSem reembolso no meio do ciclo

Por que a App Store esconde o reembolso por upgrade do seu servidor

Aqui está a parte que quebra o relatório de receita. A Apple emite o reembolso por upgrade, mas nunca diz ao seu servidor quanto reembolsou.

isUpgraded é o único sinal, e o preço está errado

A nova transação chega com isUpgraded definido como true, o que informa que houve uma troca de plano. O campo de preço nessa transação continua mostrando o preço de exibição cheio do novo nível, não o valor que a Apple recuperou do antigo. Nenhuma App Store Server Notification carrega o número do reembolso. Nas próprias palavras da Apple nos fóruns de desenvolvedores, o valor do reembolso proporcional não está disponível pela App Store Server API, pelas Notifications nem pelo StoreKit, e o relatório do App Store Connect é a sua fonte para todos os fins de contabilidade financeira.

O relatório financeiro é o único registro honesto

Os relatórios financeiros e de vendas do App Store Connect contabilizam o reembolso por upgrade proporcional, porque esses relatórios definem o que a Apple de fato paga a você. Isso os torna a fonte de verdade para qualquer assinante que já tenha subido de nível. Monte a sua contabilidade a partir dos relatórios, e trate os eventos do servidor como sinais de direito de acesso, não como receita.

Dois cartões de níveis de assinatura sobre uma mesa com uma mão movendo um marcador para o cartão superior enquanto moedas são retiradas do cartão antigo, ilustrando um reembolso por upgrade de assinatura saindo dos seus rendimentos

Quanto isso custa a você, em dinheiro

O reembolso por upgrade não é um erro de arredondamento. São rendimentos reais, e no Google Play você ainda escolhe quanto do tempo não usado você dá de graça.

O reembolso são rendimentos que você já havia registrado

Pegue um assinante do seu nível de 9.99 por mês que faz upgrade para 19.99 no dia 20 de um ciclo de 30 dias. Cerca de um terço do mês fica sem uso, então a Apple reembolsa cerca de 3.33 dos 9.99 originais. Você não perde a venda toda. Você devolve a parte que o cliente pagou adiantado e não vai usar. O que importa é que a devolução é automática e recai sobre a venda antiga, então os rendimentos que você já havia contado encolhem depois. Multiplique isso por cada assinante que sobe de nível no meio do ciclo e é uma linha que você deveria conseguir enxergar, não uma lacuna que você descobre no repasse.

No Google Play, o modo de substituição é a verdadeira alavanca de custo

O Google Play não reembolsa dinheiro ao cartão em um upgrade. Ele acerta o tempo não usado de uma entre várias formas, e você escolhe qual passando um modo de substituição ao iniciar o fluxo de compra. A escolha decide se você entrega ao cliente tempo pago ou cobra a diferença dele. O Google recomenda CHARGE_PRORATED_PRICE para upgrades e DEFERRED para downgrades, mas o padrão da biblioteca é WITH_TIME_PRORATION, então um fluxo que você nunca configurou está creditando tempo em silêncio.

Modo de substituição do Google PlayQuando entra em vigorO que acontece com o tempo não usado
WITH_TIME_PRORATION (padrão)ImediatamenteCreditado como tempo extra no novo plano, a próxima data de cobrança é adiada
CHARGE_PRORATED_PRICE (só upgrade)ImediatamenteA diferença de preço do período restante é cobrada agora, a data de cobrança não muda
WITHOUT_PRORATIONImediatamenteNada é acertado agora, o novo preço começa na próxima renovação
CHARGE_FULL_PRICEImediatamenteO preço cheio do novo plano é cobrado agora, o valor restante é transferido ou rateado
DEFERREDNa próxima renovaçãoO plano atual segue até expirar, depois o novo plano começa

Como evitar que os reembolsos por upgrade surpreendam a sua contabilidade

Você não pode desligar o rateio, e nem iria querer, porque é o que torna uma troca de plano justa para o cliente. O que você pode fazer é enxergá-lo, precificá-lo e mantê-lo separado dos reembolsos que você de fato pode contestar.

Concilie os upgrades da Apple com o relatório financeiro

Como o valor do reembolso nunca chega ao seu servidor, os relatórios financeiros e de vendas do App Store Connect são o único lugar onde um reembolso por upgrade proporcional aparece. Concilie a receita por assinante com esses relatórios a cada período, e não calcule a receita a partir de um total acumulado de Server Notifications. A marca isUpgraded informa que houve uma troca. O relatório informa quanto ela custou.

Escolha o modo de substituição do Google Play de propósito

Passe um modo de substituição para cada troca de plano de forma deliberada. Use CHARGE_PRORATED_PRICE quando quiser cobrar a diferença de preço agora em um upgrade. Deixe WITH_TIME_PRORATION no lugar só quando a sua intenção for dar ao cliente o tempo restante. Use DEFERRED para downgrades para manter a receita atual até o prazo acabar. O padrão é uma decisão, e o padrão errado dá margem de graça um upgrade de cada vez.

Mantenha os reembolsos por upgrade separados dos reembolsos que você pode contestar

Um reembolso por upgrade é automático e definitivo por design. Não é um cliente pedindo o dinheiro de volta. Os reembolsos em que você de fato pode influir são os iniciados pelo cliente, em que a Apple envia um CONSUMPTION_REQUEST e dá 12 horas para você responder, e em que o Google Play abre uma análise de chargeback pelo orders.reviewrefund com uma janela de 24 horas. Marque os seus dados para que os dois nunca se misturem. Uma linha você concilia. A outra linha você responde, contra o relógio.

A versão curta

Quando um cliente faz upgrade de uma assinatura, a loja acerta o tempo não usado para ele de forma automática. A Apple reembolsa o valor proporcional do plano antigo imediatamente e nunca envia o número ao seu servidor, então os relatórios financeiros do App Store Connect são o único registro exato. O Google Play credita o tempo ou cobra a diferença dependendo do modo de substituição que você definir, e o padrão entrega ao cliente tempo pago que você entrega a custo. Nada disso passa por um CONSUMPTION_REQUEST ou por uma análise de chargeback, então não há nada a contestar. Concilie o reembolso por upgrade, defina o seu modo do Google Play de propósito e mantenha-o separado dos reembolsos pelos quais você ainda pode brigar.

Perguntas frequentes

Um reembolso por upgrade de assinatura pede a minha aprovação?
Não. Um reembolso por upgrade de assinatura é automático. Quando um cliente passa para um nível superior no meio do ciclo, a loja acerta o tempo não usado do plano antigo por conta própria, sem nenhum pedido a você e sem janela para responder. A Apple reembolsa o valor proporcional da assinatura original, e o Google Play credita o tempo não usado ou cobra a diferença de preço dependendo do modo de substituição que você definir.
Por que a minha receita da App Store não bate com o meu repasse depois dos upgrades?
Porque a Apple não envia ao seu servidor o valor do reembolso por upgrade. A transação de upgrade carrega isUpgraded definido como true, mas o campo de preço continua mostrando o preço cheio do novo nível, e nenhuma App Store Server Notification inclui o reembolso. A receita calculada a partir dos eventos do servidor conta a nova venda e deixa de fora o reembolso do plano antigo, então ela fica inflada até você conciliar com os relatórios financeiros do App Store Connect.
O Google Play devolve dinheiro ao cartão quando um cliente faz upgrade?
Não. O Google Play trata o tempo não usado como um crédito, não como um reembolso em dinheiro. Dependendo do modo de substituição, ele credita o tempo restante no novo plano e adia a próxima data de cobrança, ou cobra a diferença de preço do período restante. O modo padrão é WITH_TIME_PRORATION, que credita o tempo.
Posso contestar um reembolso por upgrade de assinatura?
Não. Um reembolso por upgrade não é um pedido de reembolso do cliente. Não há CONSUMPTION_REQUEST da Apple e não há análise de chargeback do Google Play, então não há janela de 12 horas ou 24 horas e nada a enviar. Um reembolso por upgrade você concilia. Você só contesta reembolsos e chargebacks iniciados pelo cliente.
Um downgrade dá um reembolso ao cliente?
Não. Na App Store, um downgrade entra em vigor na próxima data de renovação e não reembolsa nada, já que o cliente mantém o nível superior até o período pago terminar. No Google Play, a forma recomendada de lidar com um downgrade é o modo de substituição DEFERRED, que mantém o plano atual até ele expirar e então inicia o inferior.
Qual modo de substituição do Google Play devo usar para um upgrade?
O Google recomenda CHARGE_PRORATED_PRICE para upgrades, que cobra a diferença de preço do período restante imediatamente e deixa a data de cobrança sem alteração. O padrão WITH_TIME_PRORATION, em vez disso, credita o tempo não usado como serviço extra no nível superior, então use-o só quando a sua intenção for dar esse tempo de graça.

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.