Uma notificação de compra anulada permite que seu servidor do Google Play revogue o acesso no instante em que um reembolso é concluído
O Google Play pode enviar ao seu servidor uma notificação de compra anulada no instante em que uma compra é reembolsada, sofre estorno ou é anulada. Ela carrega um purchaseToken, um orderId, um productType e um refundType, e significa uma coisa, revogar o acesso. Veja como lê-la e conectá-la.

Principais conclusões
- Uma notificação de compra anulada é uma Real-time Developer Notification que o Google Play envia ao seu tópico do Cloud Pub/Sub no instante em que uma compra é reembolsada, sofre estorno ou é anulada de outra forma. É um sinal de push, não algo que você precise consultar por polling.
- A notificação carrega exatamente quatro campos: `purchaseToken`, `orderId`, `productType` e `refundType`. Isso basta para localizar a compra exata no seu banco de dados e revogar o direito de acesso associado a ela.
- `productType` é `1` para uma assinatura anulada e `2` para uma compra única anulada. `refundType` é `1` para um reembolso total e `2` para um reembolso parcial baseado em quantidade, que se aplica apenas a compras únicas de múltiplas quantidades.
- Uma notificação de compra anulada significa que o cliente já recebeu o dinheiro de volta. A própria orientação do Google é revogar o acesso ao conteúdo associado, porque o comprador não deve mais deter o direito de acesso.
- As notificações de compra anulada ficam desativadas até você ativá-las. No Play Console, em Monetization setup, você escolhe assinaturas mais todas as compras anuladas, ou isso mais os eventos de produtos únicos. Ambas as opções incluem compras anuladas.
- Uma notificação de compra anulada não é um dos dois fluxos de reembolso que pedem provas a você. É um aviso posterior ao fato. Os únicos fluxos que aceitam sua contribuição são o CONSUMPTION_REQUEST da Apple, com uma janela de 12 horas, e a revisão de estorno do Google Play por meio de orders.reviewrefund, com uma janela de 24 horas.
- A partir de August 3, 2026, o Google repassa ao desenvolvedor o preço da compra mais a taxa bancária de um estorno. Uma notificação de compra anulada costuma ser como seu servidor descobre pela primeira vez que um estorno foi concluído, então configurá-la é o que permite parar de atender um cliente por quem você não é mais pago.
Um reembolso no Google Play não precisa ser algo que você descobre depois em um relatório. O Google Play pode enviar ao seu servidor uma notificação de compra anulada no instante em que uma compra é anulada, seja porque o comprador fez um reembolso de autoatendimento, um agente de suporte concedeu um, um banco forçou um estorno ou você mesmo reembolsou o pedido com o sinalizador de revogação ativado. A mensagem é minúscula, ela nomeia a compra exata e carrega uma instrução, devolver o direito de acesso, porque o dinheiro já se foi.
O que é, de fato, uma notificação de compra anulada
Uma notificação de compra anulada é um tipo de Real-time Developer Notifications do Google Play, ou RTDN. A RTDN é um canal de push. O Google publica uma mensagem em um tópico do Cloud Pub/Sub de sua propriedade, e seu backend a recebe momentos após o evento, em vez de descobrir na próxima consulta agendada. Esse é todo o objetivo da notificação de compra anulada em relação ao antigo caminho de pull: você fica sabendo do reembolso conforme ele acontece, não horas depois.
O caminho de pull ainda existe e ainda importa. A Voided Purchases API permite que seu servidor solicite, no seu próprio cronograma, a lista de compras que foram anuladas em um intervalo de tempo. Os dois são complementares. A notificação avisa no instante em que uma compra muda de estado; a API permite reconciliar em massa e recuperar qualquer coisa que uma mensagem perdida teria deixado para trás.
Ela viaja dentro de uma Real-time Developer Notification
A notificação de compra anulada nunca chega sozinha. Ela fica dentro de um invólucro DeveloperNotification, e esse invólucro é entregue como uma única string codificada em base64 no campo data da mensagem do Pub/Sub. Seu handler decodifica essa string para JSON antes de conseguir ler qualquer coisa. O invólucro sempre nomeia o app e o horário do evento, e contém exatamente um objeto de notificação entre os cinco que o Google define. Eles são mutuamente exclusivos, então uma mensagem que carrega um voidedPurchaseNotification não carregará também um evento de assinatura ou de compra única.
| Campo do invólucro | O que ele contém |
|---|---|
version | A versão do schema da notificação, por exemplo 1.0 |
packageName | O app ao qual o evento pertence, por exemplo com.acme.app |
eventTimeMillis | Quando o evento ocorreu, em milissegundos desde a epoch |
| Um de cinco objetos de notificação | oneTimeProductNotification, subscriptionNotification, voidedPurchaseNotification, pendingRefundReviewNotification ou testNotification. Apenas um está presente por mensagem |
Os quatro campos que ela carrega
Remova o invólucro e a própria notificação de compra anulada são quatro campos. Isso é deliberadamente enxuto. A posição do Google é que, se tudo o que você precisa é encontrar a compra certa e ajustar o direito de acesso, esses quatro bastam, e você não precisa retornar a nenhuma API para agir.
| Campo | O que é | Como você usa |
|---|---|---|
purchaseToken | O token entregue ao dispositivo quando o item foi comprado | Sua chave primária. Faça a correspondência com o registro de compra que você armazenou no momento da concessão |
orderId | O id do pedido mostrado ao comprador, por exemplo GS.0000-0000-0000 | Uma segunda chave legível para humanos, para suporte e reconciliação |
productType | Se o item anulado era uma assinatura ou uma compra única | Direcione para o caminho de revogação correto |
refundType | Se a anulação foi um reembolso total ou um reembolso parcial baseado em quantidade | Decida se deve revogar tudo ou apenas a quantidade reembolsada |
productType informa o que foi anulado
productType é um inteiro pequeno, e ele decide qual dos seus caminhos de revogação tomar. A anulação de uma assinatura precisa desfazer o acesso contínuo; a anulação de uma compra única apenas remove um único direito de acesso.
| Valor de `productType` | Constante | Significado |
|---|---|---|
1 | PRODUCT_TYPE_SUBSCRIPTION | Uma compra de assinatura foi anulada |
2 | PRODUCT_TYPE_ONE_TIME | Uma compra única foi anulada |
refundType informa quanto foi devolvido
refundType separa uma reversão total e limpa de uma parcial. O caso parcial é restrito. Ele só aparece quando uma compra única de múltiplas quantidades teve parte, mas não toda, da sua quantidade reembolsada.
| Valor de `refundType` | Constante | Significado |
|---|---|---|
1 | REFUND_TYPE_FULL_REFUND | A compra foi totalmente anulada |
2 | REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND | Parte de uma compra de múltiplas quantidades foi anulada |
Ative-a primeiro, ou ela nunca chega
As notificações de compra anulada não fluem por padrão. Você ativa a RTDN uma vez, no Play Console, e a aponta para um tópico do Pub/Sub que você controla. A opção fica em Monetize, depois Monetization setup, na seção Real-time developer notifications no topo da página. Marque Enable real-time notifications, depois cole o nome completo do seu tópico no formato projects/{project_id}/topics/{topic_name} e use Send Test Message para confirmar que o canal funciona antes de confiar nele.
O seletor de conteúdo é onde as pessoas deixam escapar as compras anuladas. As duas opções as incluem, então você não pode desativar acidentalmente os reembolsos enquanto mantém as assinaturas.
- Get notifications for subscriptions and all voided purchases. Você recebe os eventos de assinatura e todas as compras anuladas, mas não os eventos de compra de produtos únicos.
- Get all notifications for subscriptions and one-time products. Você recebe o acima mais os eventos de produtos únicos, como
ONE_TIME_PRODUCT_PURCHASEDeONE_TIME_PRODUCT_CANCELED.

Quanto isso custa a você, em dinheiro
Uma anulação é uma perda que já está contabilizada quando a notificação chega até você. O preço da venda se foi, e também tudo o que você gastou atendendo esse cliente. Se ele gerou imagens, fez chamadas aos seus modelos, consumiu armazenamento ou acionou um pagamento a terceiros, esses custos foram pagos em dinheiro real e não voltam com o reembolso. A notificação não pode recuperar nada disso. O que ela pode fazer é estancar o sangramento daqui para frente, que é toda a razão para agir rápido sobre ela.
O sangramento é pior nas assinaturas e pior nos estornos. Uma assinatura que você não revoga continua custando para ser servida, mês após mês, para um cliente que não paga mais. E um estorno é o tipo mais caro de anulação. A partir de August 3, 2026, a documentação do Google afirma que um estorno repassa ao desenvolvedor o preço da compra mais a taxa do banco. A notificação de compra anulada é frequentemente o primeiro lugar em que seus próprios sistemas ficam sabendo que um estorno foi concluído, então um handler que revoga na hora é o que impede que uma venda perdida se transforme em uma venda perdida mais semanas de serviço gratuito.
Como lidar com uma notificação de compra anulada, passo a passo
Verifique e desduplique a mensagem
- Confirme que a mensagem do Pub/Sub veio do Google e visa o tópico que você configurou, depois decodifique o campo
dataem base64 para obter o JSON deDeveloperNotification. - Use o
messageIddo Pub/Sub para descartar duplicatas. O Google avisa que a mesma notificação pode ser entregue mais de uma vez, então trate a reentrega como normal e torne seu handler idempotente. - Confirme (acknowledge) a mensagem somente depois de tê-la registrado com segurança, para que uma falha no meio do handler não perca o evento.
Localize a compra
- Faça a correspondência do
purchaseTokencom a compra que você armazenou quando concedeu o direito de acesso pela primeira vez. Recorra aoorderIdpara buscas de suporte e reconciliação manual. - Leia
productTypepara escolher o caminho de revogação de assinatura ou de compra única, e leiarefundTypepara decidir entre uma revogação total e uma parcial.
Revogue e registre
- Remova o direito de acesso. Para um reembolso total, corte o acesso ao item. Para um reembolso parcial baseado em quantidade, reduza a quantidade concedida pelo valor reembolsado e deixe o restante intacto.
- Registre o que você fez e quando, indexado por
purchaseTokeneorderId. Esse registro é o que permite responder a um ticket de suporte depois, e o que permite que a Voided Purchases API reconcilie de forma limpa com o seu próprio estado.
Onde ela se encaixa entre os outros sinais de reembolso
Uma notificação de compra anulada é um aviso, não uma negociação. Ela informa um desfecho que já está decidido. Vale a pena vê-la ao lado dos sinais com os quais é fácil confundi-la, porque apenas alguns deles chegam a pedir a sua versão da história.
| Sinal | Direção | Aceita a sua contribuição |
|---|---|---|
| Notificação de compra anulada (RTDN) | O Google envia ao seu servidor | Não. Ela relata uma anulação que já aconteceu |
| Voided Purchases API | Seu servidor consulta o Google | Não. É uma lista somente leitura de anulações passadas |
pendingRefundReviewNotification (RTDN) | O Google envia ao seu servidor | Sim, de forma indireta. Ela sinaliza um estorno que você então contesta por meio de orders.reviewrefund dentro de 24 horas |
| CONSUMPTION_REQUEST da Apple | A Apple consulta o seu servidor | Sim. Você responde com Send Consumption Information dentro de 12 horas |
A ideia a reter é simples. Entre as duas lojas existem exatamente dois fluxos de reembolso em que o desenvolvedor tem voz, o CONSUMPTION_REQUEST da Apple e a revisão de estorno do Google Play. Uma notificação de compra anulada não é nenhum dos dois. Quando ela chega até você, a decisão já ficou para trás e a única coisa que resta em suas mãos é a rapidez com que você revoga.
Perguntas frequentes
- O que significa uma notificação de compra anulada no Google Play?
- Significa que uma compra foi reembolsada, sofreu estorno ou foi anulada de outra forma, e o cliente recebeu o dinheiro de volta. A orientação do Google é revogar o acesso ao conteúdo associado, porque o comprador não deve mais deter o direito de acesso. A notificação nomeia a compra exata por meio de seu `purchaseToken` e `orderId`.
- Quais campos uma notificação de compra anulada do Google Play contém?
- Quatro: `purchaseToken`, `orderId`, `productType` e `refundType`. `productType` é `1` para uma assinatura e `2` para uma compra única. `refundType` é `1` para um reembolso total e `2` para um reembolso parcial baseado em quantidade em uma compra de múltiplas quantidades.
- Como faço para ativar as notificações de compra anulada?
- No Play Console, abra Monetize e depois Monetization setup, e na seção Real-time developer notifications marque Enable real-time notifications, depois insira o nome do seu tópico do Cloud Pub/Sub. As duas opções de conteúdo, assinaturas mais todas as compras anuladas, e isso mais os eventos de produtos únicos, incluem as compras anuladas.
- Qual é a diferença entre a notificação de compra anulada e a Voided Purchases API?
- A notificação é um sinal de push entregue em tempo real por meio do Cloud Pub/Sub no instante em que uma compra é anulada. A Voided Purchases API é um caminho de pull que seu servidor consulta no seu próprio cronograma para listar anulações em um intervalo de tempo. Use a notificação para reagir instantaneamente e a API para reconciliar e recuperar dados.
- Uma notificação de compra anulada permite que eu conteste o reembolso?
- Não. É um aviso posterior ao fato sobre uma decisão que já foi tomada. O único fluxo do Google Play que aceita a sua contribuição é a revisão de estorno por meio de `orders.reviewrefund`, que você tem 24 horas para responder, e na Apple é o CONSUMPTION_REQUEST com uma janela de 12 horas.
Fontes e leituras adicionais
- Android Developers: Real-time developer notifications reference guide
- Google Play Developer API: Voided Purchases API
- Google Play Developer API: REST Resource purchases.voidedpurchases
- Android Developers: Purchase lifecycle and RTDNs
- Google Play Console Help: refund protection and chargeback cost responsibility
- Google Play Developer API: Method orders.reviewrefund
RefundHalt
O piloto automático de reembolsos para App Store e Google Play
Continue lendo
Você pode reembolsar um pedido do Google Play por conta própria, e fazer isso antes de um chargeback economiza a tarifa bancária
Você pode reembolsar qualquer pedido do Google Play com menos de três anos com uma única chamada de API, com ou sem revogar o acesso. Fazer isso você mesmo antes de uma disputa virar chargeback economiza a tarifa bancária que recai sobre os desenvolvedores a partir de 3 de agosto de 2026. Veja como orders.refund funciona.
O Send Consumption Information da Apple agora pede cinco campos, não doze, e aqui está cada um
Quando um cliente pede um reembolso à Apple, a carga do Send Consumption Information é a sua resposta. A Apple a reduziu de doze campos para cinco, três obrigatórios e dois opcionais. Aqui está cada campo, os valores que cada um aceita e a janela de 12 horas em que você a envia.