Refunds, Chargebacks, and Entitlement Revocation: What Happens When the Money Comes Back
Every subscription app eventually processes a refund, and most teams only think through the entitlement-revocation logic the first time it happens in production, live, with a confused user on the other end. It’s simple to get right if you design for it upfront and genuinely awkward to retrofit — the same pattern we see with most of the edge cases in this cluster.
1. Refund vs. Chargeback: Different Events, Different Handling
Both end the same way — RevenueCat receives the event from the store, fires a webhook, and your entitlement should revoke promptly — but they’re worth distinguishing in your own records. A chargeback pattern from the same device or payment method is a meaningfully different signal than an isolated refund, and worth flagging even though the immediate entitlement action is identical.
2. What to Actually Build
You can’t override a store-processed refund or chargeback from your own systems — the store, not your app, is the merchant of record. Your job is reacting correctly and promptly to the event, not contesting it through your own backend. Disputing a chargeback goes through the store’s own process, not yours.
This connects directly to the trial-abuse question we raised in our subscription-agency vetting questions — “what’s your approach to trial abuse” is really asking whether refund and chargeback patterns get tracked at all. It’s also the natural companion to our win-back campaign piece: one is about money leaving that you can’t get back, the other is about a relationship you still might.
No clear process for refunds and chargebacks today?
Tell us how you’re currently handling them (even if the honest answer is “manually, badly”) and we’ll scope what to automate first.
