Skip to main content
Question

Understanding how early renewal opt-outs work

  • 9 August 2024
  • 5 replies
  • 23 views

This might be just a confirmation type of question, but I wanted to understand how this scenario works:

  • user subscribes to a one month, no-trial subscription
  • user gets entitlements and the webhook event comes as expected
  • user cancels / opts-out of renewal 30 minutes from first subscribe event above
  • the entitlement are still there as expected and will be there for ~30 days still
  • will the cost of this subscription still flow through as revenue or is this considered a refund?

Hi @cube20ever20,

Cancelling a subscription means that the customer has turned off auto-renewing on their subscription, but they still have it until the end of the subscription duration. In fact, they can later decide to turn on auto-renewing again so that the subscription renews at the end. So this will not be considered a refund.


Got it. So even if they cancel within 30 minutes of the initial purchase, the full month is paid and those proceeds will land in the app store and the user will be charged?


@cube20ever20 yes exactly correct. After making the purchase, the only way to get a refund would be to contact Apple (in Google’s case they can contact you to make the refund.)


Got it thank you.

For Appley I can see documentation states that refunds are “accounted for in all charts and integrations”. Will the refund event from Apple->RC come through the webhook to me as the developer as well?

For Google, how to know which Event to pick to initiate a refund? Also, if the user paid once and subscribed to 6 months, but now wants a refund after 1 month - is there a way to refund partially?


@cube20ever20 yes, refunds are accounted for in RevenueCat, in charts, customer lists, webhooks, scheduled data exports, and integrations that support refunds. The key thing to note is that in charts and scheduled data exports:

  1. Refunds are applied directly to the original transaction, which means they are included in the total spend calculation for that date. Instead of seeing both a positive and a negative amount (e.g., +$10 and -$10), the net effect will be reflected as $0 in total revenue. For instance, if a customer buys a subscription for $10 and later receives a refund, the transaction will show as $0 instead of showing a separate -$10 entry.
  2. Refunds are recorded on the date of the original purchase, not on the date the refund is issued. So, if a customer purchased on August 1 and received a refund on September 1, the transaction will appear as a refund on August 1.

I don’t understand the question about knowing which event to pick to initiate the refund - are you asking about this https://www.revenuecat.com/docs/dashboard-and-metrics/customer-history#refunding-purchases In each event, there is a transaction identifier. This transaction identifier is the same one that customers will have in their confirmation emails from Google, so you can ask for that identifier, then find the corresponding event and refund it.

You can issue a partial refund via Google Play Console: https://support.google.com/googleplay/android-developer/answer/2741495?sjid=11897335589376000666-NA#zippy=%2Crefund-in-app-purchases-and-paid-apps:~:text=already%20been%20refunded.-,Issue%20a%20partial%20refund%20using%20the%20Play%20Console%20website,-If%20you%20want

However, please note that the partial refund amount cannot be detected by RevenueCat because of limitations in Google’s APIs, so your metrics may be inaccurate for partially refunded purchases.