Google Play prepaid plan refunds follow different rules than subscriptions, and one missed top-up acknowledgement can revoke the whole plan
Prepaid plans never auto-renew, so customers can't cancel them, they top up instead. Here's how Google Play prepaid plan refunds are decided, what an unacknowledged top-up costs you, and which API call refunds what.

Key takeaways
- Google Play prepaid plans give access for a fixed billing period and never renew on their own. Customers extend them by buying a top-up, and Google says prepaid plans can't be canceled because they simply run to their expiration date.
- Every Google Play prepaid top-up is a new purchase with a new purchase token, and the previous token arrives in the linkedPurchaseToken field. Google sends a SUBSCRIPTION_PURCHASED notification for each top-up.
- Google Play requires developers to acknowledge each prepaid purchase and top-up. Plans of one week or longer get 3 days, and plans shorter than one week get half the plan duration, so a three-day plan gets 1.5 days.
- If a developer misses the acknowledgement deadline on a Google Play prepaid top-up, Google revokes the top-up, revokes and cancels the remaining subscription, and issues the user a refund.
- Google Play's help center tells customers that a prepaid plan that hasn't been used can be refunded, and refund requests made more than 48 hours after a purchase go to the developer.
- Google describes the fullRefund option of purchases.subscriptionsv2.revoke as refunding the latest charge on each item, so on a topped-up prepaid plan it targets the most recent charge, not every top-up the customer ever bought.
- For Google Play orders placed after August 3, 2026, a lost chargeback costs the developer the purchase price less Play's service fee, plus the bank's chargeback fees, and that applies to prepaid top-ups like any other order.
Miss the acknowledgement on a single Google Play top-up and Google doesn't just refund that top-up. It revokes the top-up, revokes and cancels the rest of the customer's prepaid plan, and issues a refund. That's the sharpest edge in Google Play prepaid plan refunds, and it's one you control completely. The rest of the refund picture for prepaid plans is close to ordinary subscriptions, with a few differences that change how you build and what you lose.
How Google Play prepaid plans differ from auto-renewing subscriptions
A prepaid plan is a base plan that sells access for a set billing period and then stops. Google's Play Console help says users buy it to get entitlement for that period, and then top up to extend the end date if they want to keep going. A top-up can be any prepaid base plan on the same subscription, including a different length. Google's own example extends a plan by one year with a $59.99 top-up.
Because nothing renews, nothing can be canceled. Google's billing docs say prepaid plans can't be canceled and a user who wants out just lets the plan reach its expiration date. The subscription state is only ever ACTIVE, PENDING or CANCELED for a prepaid plan, and expiryTime is always present.
Prepaid plans matter most where recurring billing is restricted. RevenueCat's guide points to India, where Google paused new customers from subscribing to auto-renewing plans because of Reserve Bank of India rules, and calls prepaid plans the obvious fit for markets like it.
| Auto-renewing base plan | Prepaid base plan | |
|---|---|---|
| Renews by itself | Yes | No, the user buys a top-up |
| Can the user cancel | Yes | No, it runs to expiryTime |
| Free trials and offers | Yes | No, offers are for auto-renewing base plans only |
| New purchase token | On upgrade, downgrade or resubscribe | On every top-up |
| Acknowledgement | Within 3 days of each new purchase | 3 days for plans of a week or longer, half the duration for shorter plans |
| Can pause | Yes | No |
Each top-up is a separate purchase
Google issues a new purchase token for every top-up and puts the previous token in linkedPurchaseToken on the new purchase. Google also sends a SUBSCRIPTION_PURCHASED real-time developer notification for each one. Top-ups stack. If the user tops up early, the new time is added to the old expiration date, not to today. A user can hold only one unconsumed top-up at a time, and prepaidPlan.allowExtendAfterTime tells you when the next one becomes available.
The acknowledgement deadline is where prepaid refunds start
You have to acknowledge every prepaid purchase, including every top-up, because the user goes through the purchase flow each time. Google gives plans of one week or longer 3 days. Plans shorter than a week get half their duration, so a three-day plan has to be acknowledged within 1.5 days and a one-day plan within 12 hours.
That's why short prepaid plans are riskier than they look. A weekly or monthly auto-renewing plan gives you the same 3 days every time. A one-day prepaid pass gives you 12 hours, and a backend outage longer than that turns paying customers into automatic refunds. RevenueCat's guide makes the same point, warning that the second order must be acknowledged quickly when the base plan lasts only 1 or 3 days.
Who decides a prepaid plan refund
Most Google Play prepaid plan refunds are decided without you. Google's refund policy says a user may get a refund within 48 hours of an in-app purchase, including a subscription, depending on the details. After 48 hours the user is told to contact the developer, who can process refunds under their own policies and applicable law. Google's subscription help page adds one line specific to prepaid plans: if the plan hasn't been used, the user can request a refund for it.
| Refund path | Who decides | Can you respond | Deadline |
|---|---|---|---|
| Request within 48 hours of the purchase or top-up | No | None | |
| Request after 48 hours | You, under your policy and local law | Not applicable | None set by Google |
| Unacknowledged purchase or top-up | Automatic | No | 3 days, or half the plan if under a week |
| Chargeback flagged for developer review | Google, then the bank | Yes, through orders.reviewrefund | 24 hours |
| Chargeback without developer review | The bank | No | None |
Prepaid plans don't change the chargeback rules. When Google asks for your side of a dispute, you have 24 hours to answer through orders.reviewrefund, and once the bank rules, the decision is final.
Which API call refunds what on a prepaid plan
When the request lands with you, you have two server-side tools, and they don't refund the same thing.
orders.refund works one order at a time
orders.refund refunds a subscription or in-app order by its order ID. Set revoke to true and access ends immediately. Google won't refund orders older than 3 years. Since each top-up is its own purchase, refunding the order behind one top-up is the precise way to refund just that top-up.
purchases.subscriptionsv2.revoke works on the subscription
purchases.subscriptionsv2.revoke ends the subscription and takes a revocationContext. Google describes fullRefund as refunding the full amount of the latest charge on each item, and proratedRefund as refunding a prorated amount based on the time left. On a plan topped up twice, the latest charge is the last top-up. Plan for that before you promise a customer their whole balance back.
Don't take access the customer is still owed
Google's billing docs warn that removing access to a subscription while the user is still entitled to it violates Google Play's subscriptions policy. On a prepaid plan, the paid time is the entitlement. If you refund only the latest top-up, keep the earlier paid time running unless you revoke and refund that too.

What a prepaid plan refund costs you
A prepaid customer has paid up front for a fixed stretch of time, and you started spending on them the moment they got access. A refund sends their money back and leaves that spending in place.
- Compute: every session, sync or server-side job the customer ran during the paid period is capacity you already paid for.
- API calls: speech, translation, maps, model inference or any third-party service billed per request stays billed.
- Storage: files and history the customer created keep sitting on your storage bill until you delete them.
- Payouts: revenue shares, creator payouts and referral commissions tied to the purchase have already left your account.
The missed-acknowledgement case is the expensive one. A late acknowledgement on a $59.99 one-year top-up doesn't just reverse $59.99. Google also revokes the remaining plan, so the customer loses access they'd already paid for and gets a refund, while every cost you incurred serving them stays spent.
A build checklist for prepaid plans
- Acknowledge every top-up from your server, not only the first purchase, and alert on any purchase still unacknowledged after a few hours.
- Give short plans their own alarm. A one-day plan has 12 hours and a three-day plan has 1.5 days.
- Store each order ID and purchase token, and follow linkedPurchaseToken so you can see the full chain of top-ups behind one customer.
- Act on purchase tokens early. Google says a token stays valid only until 60 days after expiration, then the Developer API won't accept it.
- Refund a single top-up with orders.refund on that top-up's order, and don't assume a fullRefund covers earlier top-ups.
- Log usage per purchase, so a chargeback review gets a real answer within its 24-hour window.
- Revoke access the moment you receive SUBSCRIPTION_REVOKED, since the plan's state becomes expired.
Frequently asked questions
- Can a customer cancel a Google Play prepaid plan?
- No. Google says prepaid plans can't be canceled because they don't auto-renew. The plan runs until its expiration date, and the customer keeps access until then. To stop paying, they simply don't buy another top-up.
- Can a customer get a refund on a Google Play prepaid plan?
- Yes. Google's help center says an unused prepaid plan can be refunded, and Google may refund any in-app purchase, subscriptions included, if the request comes within 48 hours. After 48 hours, Google sends the customer to the developer, who refunds under their own policy and local law.
- What happens if I don't acknowledge a prepaid top-up?
- Google revokes the top-up, revokes and cancels the remaining subscription, and refunds the user. Plans of one week or longer must be acknowledged within 3 days, and shorter plans within half their duration, so a three-day plan gets 1.5 days.
- Does a fullRefund on a prepaid plan refund every top-up?
- No, not according to Google's description. The fullRefund option of purchases.subscriptionsv2.revoke refunds the full amount of the latest charge on each item. Each top-up is a separate purchase with its own order, so use orders.refund on a specific order when you want to refund a specific top-up.
- Do prepaid plans support free trials?
- No. Google's Play Console help says offers, which include free trials and introductory prices, can only be created for auto-renewing base plans. A prepaid plan is paid in full at purchase and at every top-up.
Sources and further reading
- Google Play Billing: Subscription lifecycle (prepaid plans, top-ups, acknowledgement)
- Play Console Help: Understanding subscriptions
- Google Play Help: Cancel, pause, or change a subscription on Google Play
- Google Play Help: Apps, games, and in-app purchases refund policies
- Google Play Developer API: orders.refund
- Google Play Developer API: purchases.subscriptionsv2.revoke
- Google Play Developer API: orders.reviewrefund
- Play Console Help: Updates to refund protection and chargeback cost responsibility
- RevenueCat: Google prepaid plans
RefundHalt
The refund autopilot for the App Store and Google Play
Keep reading
Excessive refund requests can cost you more than the refunds, because both app stores treat them as a quality signal
Apple's Guideline 5.6.4 names excessive refund requests as a sign an app isn't meeting quality standards, and Google's Distribution Agreement lets it remove new developers' apps on refund rates. Here's what each store says, what removal costs, and how to stay clear.
Verify App Store server notifications before you act on a refund, because anyone can post to your webhook URL
A refund notification is just an HTTPS request until you check its signature. Here's how to verify App Store server notifications and Google Play RTDN messages, what each store signs, and what a forged or wrongly rejected refund costs you.