The difference between a chargeback and a refund comes down to who decides, and only one of them is final
A refund on the App Store or Google Play is issued by the store, and the store decides it. A chargeback is the customer's bank pulling the money, and the bank decides it, with no appeal. For app developers the gap between them is now money, because from August 3, 2026 Google Play puts chargeback costs on you.

Key takeaways
- A refund on the App Store or Google Play is issued by the store, and the store decides it. A chargeback is the customer's bank reversing the charge, and the bank decides it, with no appeal for the developer.
- Apple and Google are the seller of record for your in-app purchases. The customer's card statement shows Apple or Google, so a disputed charge goes to the store's payment system, not to your company directly.
- Most refunds happen without the developer. Google Play grants self-service refunds within 48 hours of purchase, and Apple reviews customer refund requests on its own. Only two flows ask the developer for evidence.
- The two evidence windows are Apple's CONSUMPTION_REQUEST, answered within 12 hours through Send Consumption Information, and Google Play's chargeback review, answered within 24 hours through the orders.reviewrefund API.
- A chargeback is final because a bank, not the store, makes the call. Your only leverage is the consumption evidence you send inside Google Play's 24-hour review window, before the dispute is decided.
- From August 3, 2026, Google Play shifts chargeback costs onto developers. On a lost dispute you absorb the purchase price less Play's service fee, plus the bank's chargeback fee, on top of the compute and payouts you already spent.
- Refunding a questionable order yourself, before it turns into a chargeback, costs you the sale but not the bank fee. On Google Play you can refund any order under three years old with a single orders.refund call.
Two words get used as if they mean the same thing. The customer gets their money back either way, so who cares which one it was. For an app developer selling through the App Store or Google Play, the difference between a chargeback and a refund decides who controlled the outcome, whether you could have changed it, and starting this month, how much the reversal takes out of your account.
Here is the short version. A refund is the store handing money back, and the store decides it. A chargeback is the customer's bank pulling the money, and the bank decides it, with no appeal. You sit in very different places in each one. This is what each looks like on Apple and Google, the two moments where the store actually asks you for anything, and what the gap between them now costs.
The difference between a chargeback and a refund is who decides
Strip away the payment jargon and one question separates the two: who makes the final call. A refund is a decision made inside the store's own system. A chargeback is a decision made at the customer's bank, one layer further out than any store setting can reach. That single fact drives everything else, from whether you can contest it to what it costs.
Who starts it, and who decides
A refund can start two ways. The customer asks the store for their money back, or you issue the refund yourself. Either way the store, Apple or Google Play, approves it and returns the funds. A chargeback starts only one way. The customer skips the store entirely and disputes the charge with their bank or card network, and the bank claws the money back from the store's payment system. The store did not choose it, and neither did you.
The store is the seller, not you
This is the part that trips up developers coming from classic ecommerce. When you sell through the App Store or Google Play, you are not the merchant of record. Apple and Google are. The customer's card statement reads Apple or Google, not your company name. So when that customer disputes the charge, the chargeback lands on the store's payment system first. You are not on the phone with the bank. You find out through the store, if the store tells you at all.
The two side by side
| Dimension | Refund | Chargeback |
|---|---|---|
| Who starts it | The customer asks the store, or you issue it | The customer disputes the charge with their bank |
| Who decides | Apple or Google Play | The customer's bank or card network |
| Can you reverse it | Sometimes, with evidence | No, the bank's decision is final |
| Your involvement | Usually none, two flows ask for evidence | One narrow evidence window, on Google Play |
| Extra fee | None | A bank chargeback fee, on you from August 3, 2026 |
| Typical speed | Fast, minutes to days | Slow, weeks to months |
What a refund looks like on the App Store and Google Play
Most refunds are not a conversation you get to join. The store takes the request, checks it against its own rules, and returns the money. You are told after the fact, if you have wired up the notifications that carry the news.
Apple decides, then tells your server
An Apple customer requests a refund at reportaproblem.apple.com, and Apple has up to 90 days from purchase to accept the request for review. Apple reviews each case on its own and decides. When it grants the refund, your server gets a REFUND notification through App Store Server Notifications V2, and the transaction now carries a revocationDate. When it denies the request, you get REFUND_DECLINED. If Apple later undoes a refund it already granted, you get REFUND_REVERSED and the sale comes back. In none of these do you cast a vote. You react.
Google Play refunds most purchases without asking you
Google Play lets a customer self-serve a refund within 48 hours of purchase, straight from their account, with no developer involvement at all. Past 48 hours the customer is routed to you, and you can grant or decline through your own policy. Support can issue refunds, and an unacknowledged purchase is auto-refunded after about 72 hours. All of these run on Google's side. You see the result through a voided purchase notification or the Voided Purchases API, and your job is to revoke access, not to approve the refund.
The two flows where the store actually asks you
There are exactly two moments across both stores where the store stops and asks the developer for evidence before it decides. Apple sends a CONSUMPTION_REQUEST when a customer requests a refund, and gives you 12 hours to answer through Send Consumption Information with usage data. Google Play sends a chargeback review and gives you 24 hours to answer through the orders.reviewrefund API. Everything else is decided without you. These two windows are the only place your input changes the outcome, which is why they are worth automating and the rest is worth monitoring.
What a chargeback looks like, and why it is final
A chargeback is not a refund with extra steps. It is a different mechanism with a different decision maker, and that changes what you can do about it.
The bank pulls the money, not the customer
In a chargeback the customer tells their bank the charge was wrong, fraudulent, unrecognized, or never delivered. The bank sides with its cardholder by default and reverses the transaction, pulling the funds back through the card network. The store did not approve it. The money is already gone before anyone asks whether the product was delivered. This is why a chargeback is slow and heavy where a refund is quick and clean: it runs through the card network's dispute process, which takes weeks or months, not minutes.
The bank's decision is final
You cannot overturn a chargeback the way you might reverse a refund. Once the bank rules, that ruling stands. The one place you get to influence it is before it is decided. On Google Play a bank-initiated dispute can open a review, and Google Play sends your server a notification with a 24-hour clock. Answer through orders.reviewrefund with a refund preference and real consumption evidence, and Google Play folds your input into how it contests the chargeback on your behalf. Miss the window and the dispute is settled without the one party who knows how the product was used.

What each one actually costs you
For a long time the honest answer was that a chargeback and a refund cost an app developer about the same: the sale, and whatever you already spent to deliver it. That stopped being true for Google Play developers this month.
The refund is never the only number
Whether the reversal is a refund or a chargeback, the payment was never your only cost. A generated video, a batch of model API calls, a creator payout, storage you provisioned, all of that money left your account the moment you delivered the order, and none of it comes back when the charge is reversed. The sale is the visible number. The compute, the API calls, the storage, and the payouts are the ones that already cleared. Argue the reversal on value delivered, never on how long the customer waited, because elapsed time is not a cost and Apple and Google do not treat it as one.
From August 3, 2026 a chargeback adds a bank fee
Here is where the two stop costing the same. Until now Google Play absorbed the downstream cost of a chargeback. For orders placed after August 3, 2026, Google Play shifts that cost to the developer. On a lost dispute you pay back the purchase price less Play's service fee, and on top of that you pay the chargeback fee charged by the financial institution. Google Play keeps covering the service fee portion. A refund does not carry that bank fee. So a charge that ends in a chargeback now costs you strictly more than the same charge refunded, and the extra is the bank's fee.
| Cost | Before August 3, 2026 | After August 3, 2026 |
|---|---|---|
| Purchase price returned to customer | Google Play | You, less Play's service fee |
| Play service fee portion | Google Play | Google Play |
| Bank chargeback fee | Google Play | You |
| Compute, API calls, storage, payouts already spent | You | You |
The scale behind the change
Google Play says it blocked US$3.4B of fraud and abuse in 2025 and is still adding fraud detection through 2026. Moving chargeback cost onto developers is part of that push. It gives you a direct reason to feed evidence into the review flow, so the system contests more of the illegitimate disputes. Your evidence is what makes a contest possible, and an empty response is a vote to let a friendly-fraud chargeback stand on your money.
How to keep a refund from becoming a chargeback
The cheapest chargeback is the one that never happens, because the order got refunded first or got contested with evidence that was already sitting there. None of this needs a person awake at the right hour. It needs the plumbing in place before the dispute.
Refund a bad order yourself before the bank does
If an order is clearly going to be disputed, refunding it yourself is cheaper than losing the chargeback. A refund you issue does not carry the bank's chargeback fee. On Google Play you can refund any order under three years old with one orders.refund call, with or without revoking access. Get there before the customer reaches their bank and you turn a bank fee plus a lost sale into just a lost sale.
Answer the two evidence windows automatically
The 12-hour Apple window and the 24-hour Google Play window are comfortable for a machine and brutal for a human who has to be watching. The response should be automatic: notification in, account looked up, consumption assembled, one call out, no person in the loop. That is the part RefundHalt runs for you. We listen for the CONSUMPTION_REQUEST and the Google Play chargeback review, match the order to usage we already track, and answer inside the window with a refund preference and real consumption evidence.
Attach identity and log consumption up front
Evidence you need at dispute time has to exist before the dispute. Set an account identifier on every purchase so a notification maps straight to a user, an appAccountToken UUID on Apple and a hashed setObfuscatedAccountId of 64 characters or fewer on Google Play, never cleartext personal data. Log what each paid order delivered, when, and to whom, in a form you can turn into a consumption percentage on demand. Do that and the narrow window is enough, because the case is already built when the token arrives.
Frequently asked questions
- What is the difference between a chargeback and a refund for an app developer?
- A refund is issued by the store. When a customer requests one or you grant one, Apple or Google Play returns the money, and the store decides the outcome. A chargeback is different: the customer disputes the charge with their bank, the bank reverses it through the card network, and the bank's decision is final. Because Apple and Google are the seller of record, a chargeback hits the store's payment system, and you only get a say through Google Play's 24-hour review flow.
- Do app developers even see chargebacks if Apple and Google are the merchant of record?
- Yes, but indirectly. The customer's card statement shows Apple or Google, so the dispute goes to the store first. Google Play can then open a review and send your server a notification with a 24-hour window to respond through the orders.reviewrefund API, and it reports the outcome through voided purchase signals. Apple handles disputes on its side and notifies your server of the result. You do not negotiate with the bank directly in either case.
- Can you reverse or win a chargeback?
- You cannot overturn a chargeback after the bank decides, because the bank, not the store, makes the final call. Your only influence is before the decision. On Google Play, a dispute can open a chargeback review, and you have 24 hours to send a refund preference and consumption evidence through orders.reviewrefund so Google Play can contest the chargeback on your behalf. Miss the window and the dispute is settled without your evidence.
- Which costs more, a refund or a chargeback?
- As of August 3, 2026, a chargeback costs a Google Play developer more than a refund. On a lost chargeback you absorb the purchase price less Play's service fee, plus the bank's chargeback fee. A refund does not carry that bank fee. Both cost you the compute, API calls, storage, and payouts you already spent delivering the order, but the chargeback adds the bank fee on top, which is why refunding a doomed order yourself first is the cheaper path.
- How can I stop refunds from turning into chargebacks?
- Refund clearly bad orders yourself before the customer goes to their bank, since a refund you issue avoids the bank's chargeback fee. Answer the two evidence windows on time: Apple's 12-hour CONSUMPTION_REQUEST through Send Consumption Information, and Google Play's 24-hour chargeback review through orders.reviewrefund. Attach an account identifier at purchase and log consumption as it happens, so the evidence exists before any dispute arrives.
Sources and further reading
- Play Console Help: Chargeback cost responsibility for developers
- Google Play Help: Refund policies for apps, games, and in-app purchases
- Google Play Developer API: orders.reviewrefund
- Apple Developer: Handling refund notifications
- Apple Support: Request a refund for apps or content you bought from Apple
- Android Developers: Help Google dispute chargebacks
RefundHalt
The refund autopilot for the App Store and Google Play
Keep reading
Since August 3, Google Play chargeback costs have shifted onto developers, and here's what each dispute now takes from you
Google Play quietly stopped absorbing chargebacks. For orders placed on or after August 3, 2026, you pay back the purchase price less Play's service fee plus a bank fee on every disputed order. Here is what changed, what a single chargeback now costs, and the 24-hour window where you get to push back.
StoreKit 2 refund detection comes down to one property on the transaction, and it's revocationDate
When Apple refunds one of your customers, the refund is already sitting inside your app on the transaction's revocationDate, before your server job runs. Here is where StoreKit 2 refund detection surfaces on the device, what revocationDate and revocationReason tell you, and why the client is for speed and the server is for truth.