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:
-
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.
-
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:
- How can I implement the conditional discounts for both monthly and long-term subscriptions using RevenueCat, on both Android et Apple ?
- Can RevenueCat support tracking such conditions, or do I need to rely solely on my backend for this logic?
- Is there a way to programmatically apply discounts for renewals based on the data stored in my backend?
- Are there platform-specific considerations I should keep in mind for Apple App Store and Google Play (e.g., subscription offers, promotional discounts)?
- 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!