Skip to main content
Question

How to Implement Conditional Discounts and Rewards for Subscriptions

  • December 12, 2024
  • 3 replies
  • 140 views

Forum|alt.badge.img

Hello,

I’m currently developing a Flutter-based fitness app, and we’re integrating the payments feature using RevenueCat (not live in production yet). The app offers three types of subscriptions: 1 month, 6 months, and 12 months.

Here’s the functionality I would like to implement:

  1. Monthly Subscriptions:

    • If a user with a 1-month subscription burns a certain calorie threshold for the month (determined by my backend), they should receive a 50% discount on their next month’s subscription. And then if the user doesn’t burn enough calories on month 2, they get back to full price.
  2. Long-Term Subscriptions (6 or 12 months):

    • My backend tracks whether the user burns enough calories each month. For each successful month, a value (e.g., 50% of that month’s fee) is added to a virtual piggy bank.
    • At the end of their subscription, the total amount in the piggy bank will be used as a discount for their next subscription.
    • I also would like to get the possibility to keep that value somewhere instead, so i could give the user the choice in the future to use that money in another way (for example cashback)

Example Scenario:

  • A user purchases a 12-month subscription for €120 (€10/month).
  • The user successfully burns the required calories for 10 out of 12 months.
  • They accumulate €50 in their virtual piggy bank (10 months × €5).
  • When the subscription ends, this €50 is applied as a discount on their next subscription renewal.

I’d like guidance on the following:

  1. How can I implement the conditional discounts for both monthly and long-term subscriptions using RevenueCat, on both Android et Apple ?
  2. Can RevenueCat support tracking such conditions, or do I need to rely solely on my backend for this logic?
  3. Is there a way to programmatically apply discounts for renewals based on the data stored in my backend?
  4. Are there platform-specific considerations I should keep in mind for Apple App Store and Google Play (e.g., subscription offers, promotional discounts)?
  5. How would this functionality behave if a user chooses to upgrade or downgrade their subscription during the term? For example:
    • If they move from a 1-month plan to a 12-month plan, or vice versa, how can the discounts or virtual piggy bank balances be managed effectively? 

Thank you for your help!

This post has been closed for comments

3 replies

cody
RevenueCat Staff
Forum|alt.badge.img+8
  • RevenueCat Staff
  • 501 replies
  • December 16, 2024

Hey ​@Olivier!

It looks like you’ve got an interesting setup that you’re aiming for here. A few thoughts:

  1. I don’t think you’ll be able to automatically apply discounts to future renewals on either platform. Customers could manually opt-in to discounted promotional offers, though, if you present them the option when they are eligible (you’ll have to track this, and determine when to show it, though).
  2. RevenueCat generally doesn’t have the ability to track usage of arbitrary in-app actions
  3. RevenueCat doesn’t yet support virtual currencies

As of now, you’ll need to manage your virtual piggy bank balances manually. However, you can listen to webhooks to be notified of renewals and product changes to manage the balance on your end effectively, depending on app usage or upgrade/downgrade.

As for actually displaying the offer to customers, you’ll likely need to do so manually. You could show an in-app prompt if they are eligible for a discount (as determined by your server), and then display a promotional offer: https://www.revenuecat.com/docs/subscription-guidance/subscription-offers/ios-subscription-offers#promotional-offers 

Let me know if that helps!


Forum|alt.badge.img
  • Author
  • New Member
  • 1 reply
  • December 16, 2024

Hi ​@cody, and thank you for your detailed response!

You’re absolutely right that the piggy bank logic will need to be tracked on our backend, and I’ve already implemented webhooks to synchronize data between RevenueCat and our system. I also plan to use these webhooks for updating the piggy bank balances based on user activity and subscription events, as you suggested.

My main concern lies in distributing discounts via promotional offers, especially on Google Play. From what I understand, this might not be fully supported, and I haven’t had the chance to test the implementation on iOS yet to confirm how feasible it is there (the link you’ve shared at the end of your post)

Would you have any suggestions for handling discounts on Google Play in a way that minimizes the additional development effort required to manage both iOS and Android while keeping the RevenueCat dashboard accurate for tracking our revenue streams?

Thank you again for your guidance and support—it’s much appreciated!

 


Forum|alt.badge.img+8
  • RevenueCat Staff
  • 562 replies
  • December 17, 2024

Hi ​@Olivier, with Google in order for promo codes to work these will need to be added as offers to the base plan as shown in our docs here. If you are instead doing this via the 'Code and Promotional' section of the Google Play Console then these are not currently supported due to limitations with Google's Billing Library, see our community post here for more details.

I would like to note that for Apple if you plan to use offer codes they are supported but these apply to the next billing cycle so you'll want to refer to the upcoming webhook event to see this.


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings