The refunds you cannot contest: what Apple and Google decide without asking you
Only two refund flows ever ask for your evidence: Apple's consumption request and Google Play's chargeback review. Everything else, the 48-hour Play refund, support refunds, voided purchases, unacknowledged trials, is decided without you. Here is the full map, what you can prevent, and what you can only record.
Key takeaways
- Across both stores there are exactly two refund flows where the developer gets a say: Apple's CONSUMPTION_REQUEST, with a 12-hour window, and Google Play's chargeback review, with a 24-hour window.
- Google Play's 48-hour self-service refund is handled by Google under its own policy. There is no developer input, no evidence channel, and no appeal.
- Refunds granted by Google or Apple support agents are final. Neither store has an appeal channel for a refund that has already been decided.
- Google automatically refunds and revokes any purchase your app fails to acknowledge within three days. That is an integration failure, not a customer decision, and it is fully preventable server-side.
- Card chargebacks on the App Store are resolved between the bank and Apple. On Google Play, orders placed after August 3, 2026 shift the purchase price and bank fees of chargebacks onto the developer.
- A store refund in your ledger is not a lost fight. It is a case that never had a review window. Judge your refund protection by contestable cases only.
When a refund lands against your app, the first question that matters is not why. It is whether anyone ever asked for your side. Across the App Store and Google Play there are exactly two moments where the store pauses, turns to the developer, and requests evidence before deciding. Every other refund is decided without you, no matter how good your integration is. Knowing which is which changes how you read your numbers, because a refund you were never asked about is not a fight you lost.
The only two flows that ask for your side
Apple's channel is the CONSUMPTION_REQUEST. When a customer asks Apple for a refund on a consumable in-app purchase or an auto-renewable subscription, Apple sends your server a notification and waits up to 12 hours for consumption data: was it delivered, how much was used, and whether you would prefer the refund granted or declined. Apple still decides, but your evidence is a documented input to that decision.
Google's channel is newer and narrower. A pendingRefundReviewNotification arrives when a user disputes a purchase, and you get 24 hours to respond through the Review Refund API with delivery state, consumption status, and usage evidence. Google positions this API explicitly as a way to help it identify and contest illegitimate chargebacks on your behalf.
| Flow | Store | Your window | What you send |
|---|---|---|---|
| Consumption request | Apple | 12 hours | Delivery status, usage percentage, refund preference |
| Chargeback review | Google Play | 24 hours | Delivery state, consumption status, usage events |
Google refunds that never ask you
The one most developers misread is the 48-hour self-service refund. A customer who bought something less than 48 hours ago can request a refund straight from Google Play, and Google handles it under its own policy, usually deciding within days. The developer is not consulted and is not notified until the refund shows up as a voided purchase. This is store policy working as designed, not a gap in your defenses.
After 48 hours, Google's own help pages direct customers to the developer. Refunds you grant from Play Console at that point are customer service, your call entirely. Refunds Google support grants anyway are final, with no appeal channel.
Then there is the voidedPurchaseNotification, the record-keeping stream. Family manager refunds, Google-initiated revocations for abuse, quantity-based partial refunds, and your own Play Console refunds all arrive there. It is a ledger feed, not a question. Nothing in it can be answered.
The three-day trap: refunds you caused
One class of Google refund deserves its own section because it is not a customer decision at all. If your app does not acknowledge a purchase within three days, Google automatically refunds the user and revokes the purchase. The Play Billing documentation states this plainly, and in production the revocation lands almost exactly at the 72-hour mark.
These show up in the voided stream with the reason unacknowledged_purchase, often on free trials where the user never reopened the app, so the acknowledgement call never fired. The money involved is usually the first billing you never got to collect. You cannot contest these, but you can eliminate them completely: acknowledge purchases server-side the moment the purchase notification arrives, instead of relying on the app being opened. RefundHalt does this automatically when Auto-acknowledge is on.
Apple's silent refunds
Apple decides every App Store refund itself. The consumption request is an input, never a vote, and once Apple issues its verdict the case is closed. A REFUND notification means the money is gone; REFUND_DECLINED means it stayed. There is no appeal endpoint, no escalation path, and no second window.
Two Apple cases never ask for evidence at all. Refunds on purchase types outside the consumption-request flow are decided from the customer's claim and account history alone. And card chargebacks against App Store purchases are resolved entirely between the cardholder's bank and Apple; the developer never sees a case and has no channel into it.
August 3, 2026 raises the stakes on Google
Google announced that for orders placed after August 3, 2026, chargeback costs will be shared: the developer carries the purchase price, minus Play's service fee, plus the bank's chargeback fees, while Google covers only its own service fee. The same announcement points developers at the Review Refund API as the way to fight back, by giving Google the evidence it needs to contest illegitimate disputes.
That makes the one contestable Google flow financially load-bearing. Before this change a lost chargeback was mostly Google's problem. After it, every chargeback you fail to answer with evidence is your revenue and your fees.
Read your dashboard accordingly
The practical takeaway is a bookkeeping rule: split your refunds into contestable and store-issued, and judge your protection only by the first group.
- Save rate belongs to contestable cases only: consumption requests and chargeback reviews, answered against a deadline.
- Store refunds belong in a separate ledger. They carry information, which products, which countries, which reasons, but no verdict on your defenses.
- The only store-side number that demands action is unacknowledged purchases, because those are preventable with server-side acknowledgement.
- Watch the chargeback column as August 2026 approaches. Evidence quality on that flow is about to have a price tag.
This is exactly how RefundHalt's dashboard is organized: refund requests and chargebacks front and center with their outcomes, and store refunds in their own tab, recorded so your ledger stays complete.
Frequently asked questions
- Can I appeal a refund that Google or Apple already granted?
- No. Neither store has an appeal channel for a decided refund. Apple's decision after a consumption request is final, and Google support decisions and self-service refunds are final. The only influence you ever have is evidence submitted inside the two review windows, before the decision.
- Is Google's 48-hour refund the same as a chargeback?
- No. The 48-hour refund is a Play Store policy Google administers itself, with no developer involvement. A chargeback is a dispute the customer raises with their bank. Only the chargeback flow has a developer evidence channel, the 24-hour Review Refund API window.
- Why did Google refund a purchase that nobody asked to refund?
- Almost always because the purchase was never acknowledged. Google Play automatically refunds and revokes any purchase that is not acknowledged within three days. It is an integration failure, not a customer request, and server-side acknowledgement eliminates it entirely.
- Do store refunds in my dashboard mean my refund protection is failing?
- No. Store refunds are issued directly by Apple or Google with no review window, so there was never anything to contest. Refund protection applies to consumption requests and chargeback reviews, the two flows with an evidence window and a deadline.
- What changes on August 3, 2026?
- For Google Play orders placed after that date, chargeback costs are shared: the developer carries the purchase price minus Play's service fee, plus the bank's chargeback fees. Google covers its service fee. Evidence submitted through the Review Refund API becomes the main lever against illegitimate disputes.
Sources and further reading
- Apple: Request a refund for apps or content bought from Apple
- Apple: App Store Server Notifications V2
- Apple: Send Consumption Information (App Store Server API)
- Google Play Help: Request a refund on Google Play
- Google Play Billing: Real-time developer notifications reference
- Google Play Billing: One-time purchase lifecycle (three-day acknowledgement)
- Google Play Console Help: Updates to refund protection and chargeback cost responsibility
- Google Play Billing: Provide refund and chargeback suggestions (Review Refund API)
- Google Play Developer API: Voided Purchases
RefundHalt
The refund autopilot for the App Store and Google Play
Keep reading
Apple's CONSUMPTION_REQUEST, explained: the 12 hours that decide your refund
When a customer asks Apple for a refund, Apple asks you first. Here's exactly what the CONSUMPTION_REQUEST notification contains, what Apple expects back, how to answer one end to end, and why most developers silently forfeit.
Google Play's 2026 chargeback shift: you now pay for lost disputes
For orders placed after August 3, 2026, Google Play splits chargeback costs with developers. Here's exactly how the new pendingRefundReviewNotification and orders.reviewrefund flow works, step by step — and how to automate it.