PAGAMENTOS FALHADOSGOOGLE PLAY

Como reduzir o churn no Google Play: período de tolerância e suspensão da conta

Como funcionam o período de tolerância e a suspensão da conta no Google Play, que notificações tratar, mensagens na app e como reconquistar utilizadores.

Publicado a 8 min de leitura

No Google Play, é a Google que cobra o cliente, faz novas tentativas dos pagamentos falhados e mostra o botão de cancelar. Não pode tentar de novo uma cobrança nem mexer no método de pagamento do cliente. O que controla: quanto tempo duram o período de tolerância (grace period) e a suspensão da conta (account hold), se o cliente mantém o acesso, o que a sua app lhe mostra e a rapidez com que reage quando uma subscrição recupera ou termina.

Este guia trata do período de tolerância, da suspensão da conta, das notificações de developer em tempo real (RTDN) e dos estados subscriptionsv2 por trás delas, das mensagens na app para pagamentos recusados, dos deep links para o centro de subscrições, do restauro e da nova subscrição, e das compras anuladas. Baseia-se apenas na documentação da Google: ciclo de vida das subscrições, sobre as subscrições, a referência das RTDN e ajudar a Google a contestar chargebacks (todos consultados em novembro de 2026).

O que a Google faz quando uma renovação falha

Quando um pagamento de renovação falha, a Google avisa o utilizador e continua a tentar renovar durante algum tempo antes de a subscrição terminar. A documentação da Google chama a isto o período de recuperação, composto por um período de tolerância seguido de uma suspensão da conta. Durante esse tempo, a Google envia ao utilizador emails e notificações a pedir que atualize o método de pagamento.

Fase Acesso do utilizador subscriptionState RTDN quando começa
Período de tolerância Mantém o acesso SUBSCRIPTION_STATE_IN_GRACE_PERIOD SUBSCRIPTION_IN_GRACE_PERIOD (6)
Suspensão da conta Perde o acesso SUBSCRIPTION_STATE_ON_HOLD SUBSCRIPTION_ON_HOLD (5)
Recuperada Acesso reposto SUBSCRIPTION_STATE_ACTIVE SUBSCRIPTION_RECOVERED (1)
Não recuperada Acesso terminado SUBSCRIPTION_STATE_CANCELED, depois EXPIRED SUBSCRIPTION_CANCELED (3), depois SUBSCRIPTION_EXPIRED (13)

Período de tolerância

O guia do ciclo de vida da Google diz:

  • O período de tolerância está ativado por defeito em todos os planos base com renovação automática. Pode alterar a duração ou desativá-lo na Play Console, e a Google avisa que uma duração mais curta pode reduzir o número de subscrições recuperadas.
  • Durante o período de tolerância, o utilizador deve manter o acesso. autoRenewEnabled continua true e a Google prolonga expiryTime até ao fim do período de tolerância.
  • Se o utilizador corrigir o método de pagamento, a subscrição renova com a sua data de renovação original.
  • Alterar a duração do período de tolerância só afeta as renovações que entram no período de tolerância depois da alteração.
  • Se definir 0 dias, a Google espera mesmo assim pelo menos 1 dia (um “período de tolerância silencioso”) para dar tempo às novas tentativas. A subscrição continua ativa durante essas 24 horas e não recebe uma RTDN de período de tolerância.

Se a sua app só usa queryPurchasesAsync() para verificar o direito de acesso, os períodos de tolerância são tratados por si, porque a Play Billing Library continua a devolver essas compras como ativas.

Suspensão da conta

A suspensão da conta vem a seguir ao período de tolerância:

  • Está ativada por defeito e a sua duração por defeito é 60 dias menos o período de tolerância. Pode alterá-la ou desativá-la na Play Console, com o mesmo aviso sobre durações mais curtas.
  • Antes de a subscrição entrar em suspensão, a Google faz tentativas adicionais de cobrança durante até 48 horas, enquanto o utilizador mantém o acesso.
  • Durante a suspensão da conta deve bloquear o acesso. expiryTime está no passado e queryPurchasesAsync() já não devolve a subscrição.
  • Se o utilizador corrigir o pagamento, recebe SUBSCRIPTION_RECOVERED, o purchase token mantém-se e tem de repor o acesso. Ao contrário da recuperação durante o período de tolerância, a data de faturação passa para a data da recuperação.
  • Se a suspensão terminar sem correção, recebe SUBSCRIPTION_CANCELED e depois SUBSCRIPTION_EXPIRED.
  • Uma subscrição em pausa que é retomada com um método de pagamento que falha entra diretamente em suspensão da conta.

A Google nota também que os utilizadores podem cancelar, restaurar ou voltar a comprar durante a suspensão, por isso o seu backend tem de continuar a tratar esses eventos.

Notificações de developer em tempo real

As RTDN são entregues através do Cloud Pub/Sub e só trazem o tipo de notificação e o purchase token. A orientação da Google é chamar purchases.subscriptionsv2.get a partir do seu backend em cada notificação para ler o estado completo. A referência das RTDN lista os tipos de subscrição; os que mais importam para o churn:

Código Tipo O que fazer
6 SUBSCRIPTION_IN_GRACE_PERIOD Manter o acesso; pedir ao utilizador que corrija o pagamento
5 SUBSCRIPTION_ON_HOLD Retirar o acesso; explicar ao utilizador porquê
1 SUBSCRIPTION_RECOVERED Repor o acesso (também enviado quando uma subscrição sai de pausa)
2 SUBSCRIPTION_RENEWED Renovação normal
3 SUBSCRIPTION_CANCELED Cancelamento voluntário ou involuntário; verificar canceledStateContext
7 SUBSCRIPTION_RESTARTED O utilizador restaurou uma subscrição cancelada ainda não expirada
12 SUBSCRIPTION_REVOKED Revogada antes da expiração, por exemplo após um chargeback; retirar o acesso
13 SUBSCRIPTION_EXPIRED Retirar o acesso
4 SUBSCRIPTION_PURCHASED Nova compra, incluindo uma nova subscrição

Num cancelamento, canceledStateContext diz-lhe se foi o utilizador, o sistema ou o comerciante a cancelar, e nos cancelamentos pelo utilizador userInitiatedCancellation pode incluir o motivo que ele indicou. Use-o: um cancelamento após a suspensão da conta é um problema de pagamento, não uma decisão de sair.

Mensagens na app para pagamentos recusados

A Google oferece uma mensagem pronta para problemas de pagamento. Se chamar BillingClient.showInAppMessages() com InAppMessageCategoryId.TRANSACTIONAL, o Google Play mostra uma snackbar temporária a dizer ao utilizador que o pagamento foi recusado, com um deep link para corrigir o método de pagamento no Google Play. Segundo o guia de subscrições da Google, a mensagem é mostrada uma vez por dia durante o período de tolerância e a suspensão da conta, e a Google recomenda chamar a API sempre que o utilizador abre a app.

Se o utilizador corrigir o pagamento, a chamada devolve SUBSCRIPTION_STATUS_UPDATED com um purchase token. Atualize a subscrição a partir do seu backend e reponha o acesso de imediato.

Para os utilizadores que acedem ao seu conteúdo fora da app (na web, por exemplo), a Google sugere uma notificação push ou um email quando o acesso para por causa da suspensão da conta.

A sua app deve ter um link para a gestão das subscrições no ecrã de definições. A Google documenta dois URL:

  1. Todas as subscrições: https://play.google.com/store/account/subscriptions
  2. Uma subscrição (recomendado): https://play.google.com/store/account/subscriptions?sku=your-sub-product-id&package=your-app-package

O segundo abre a página de gestão dessa subscrição, onde o utilizador pode gerir os métodos de pagamento, cancelar, voltar a subscrever ou pausar. Use-o também nos seus próprios emails de pagamento.

Restauro, nova subscrição e reconquista

A Google separa duas ações, ambas mostradas ao utilizador como um botão Resubscribe na Play Store:

  • Restauro: antes da expiração, uma subscrição cancelada é restaurada e continua a renovar como se nunca tivesse sido cancelada. Mantém o mesmo purchase token e recebe SUBSCRIPTION_RESTARTED. A Google diz que todas as apps têm de suportar o restauro.
  • Nova subscrição: depois da expiração, se o plano base o permitir, o utilizador volta a comprar na Play Store. É uma nova compra com um novo token e uma RTDN SUBSCRIPTION_PURCHASED. Tem de a confirmar (acknowledge); o campo outOfAppPurchaseContext ajuda-o a ligá-la à subscrição e ao utilizador anteriores.

Dentro da sua app, o guia da Google descreve a reconquista de utilizadores que cancelaram com um ecrã para voltar a subscrever (por exemplo com um botão Reativar), antes ou depois da expiração. As ofertas de subscrição podem visar utilizadores elegíveis com descontos; as regras de elegibilidade são definidas na Play Console.

Reembolsos, compras anuladas e chargebacks

Quando uma compra é reembolsada ou alvo de chargeback, fica anulada. Recebe uma RTDN voidedPurchaseNotification com o purchase token, o ID da encomenda, productType e refundType (reembolso total ou reembolso parcial por quantidade). O guia do ciclo de vida da Google acrescenta que uma subscrição alvo de chargeback, ou revogada pelo seu backend com purchases.subscriptionsv2.revoke, desencadeia SUBSCRIPTION_REVOKED, e deve retirar o acesso. A Voided Purchases API dá-lhe mais detalhes num intervalo de tempo.

Nos chargebacks, a Google deixa-o dar a sua opinião. Quando um chargeback precisa de revisão do developer, o Google Play envia uma RTDN PendingRefundReviewNotification, e tem 24 horas para responder com a ReviewRefund API, indicando uma preferência de reembolso e quaisquer provas de utilização da compra. A Google só regista a sua primeira chamada.

Uma lista de verificação

  • As RTDN são entregues ao seu backend, e cada uma desencadeia um subscriptionsv2.get.
  • O período de tolerância e a suspensão da conta estão ativos, com durações escolhidas com intenção.
  • O acesso mantém-se durante o período de tolerância e para durante a suspensão da conta.
  • showInAppMessages() é chamado quando a app arranca.
  • O seu ecrã de definições e os seus emails usam o deep link da subscrição específica.
  • As compras de restauro e de nova subscrição são tratadas e confirmadas.
  • Cada compra tem um ID de conta ofuscado, para a poder associar ao seu utilizador.
  • As compras anuladas e as notificações de revisão de chargebacks são tratadas.

Fazer isto com o NoChurn

A Google mantém os pagamentos, as novas tentativas, o período de tolerância, a suspensão da conta e o botão de cancelar; o NoChurn não muda isso. O NoChurn lê as suas notificações de developer em tempo real, associa cada subscrição ao seu utilizador através do ID de conta ofuscado e coloca os períodos de tolerância, as suspensões, os cancelamentos, as recuperações e as compras anuladas na cronologia do cliente e numa pontuação de churn de 0 a 100. Onde a Google o permite, age: mensagens na sua app ou por email com um link para a página da subscrição no Play, um fluxo de cancelamento que a sua app mostra através da API headless antes de levar ao Google Play, e emails de reconquista aos dias 30, 60 e 90 com base no motivo de cancelamento. Veja NoChurn + Google Play.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Pare de perder receita.

  • Grátis até $300 de MRR
  • Sem cartão
  • Pronto em 10 minutos
  • Nunca uma comissão sobre o que recuperamos