Skip to main content
Solved

Determining if subscription change is upgrade or downgrade

  • November 20, 2023
  • 2 replies
  • 583 views

Forum|alt.badge.img+5

I am developing a Google Play application which has multiple subscription tiers and multiple subscription periods:

[Tier A - Annual] [Tier A - Monthly]

[Tier B - Annual] [Tier B - Monthly]

[Tier C - Annual] [Tier C - Monthly]

I would like to apply different proration methods depending on if the user upgrades/downgrades their subscription.

What is the most sensible method to determine if a subscription change is an upgrade or downgrade in this scenario?

In this guide an upgrade is described as a change where the ‘price per unit of time increases’. I’m confused about how to compare two subscriptions which use different time units (e.g. moving from [Tier A - Annual] to [Tier B - Monthly])

 

Many thanks

Best answer by sharif

Hello,

I hope I can shed some light on the topic in general.

Computing the price per unit of time is as simple as dividing the price by the time. Google has a decent example here where they compare an annual subscription and a monthly subscription. Basically they divide the annual subscription price per month to get the monthly price and compare with the monthly subscription.

You can always safely use IMMEDIATE_WITH_TIME_PRORATION for upgrades and downgrades as that’s what RevenueCat used to do before support for all proration modes was implemented.

If you want, you can take some guidance from how Apple handles upgrades and downgrades as detailed in this blog post: https://www.revenuecat.com/blog/engineering/ios-subscription-groups-explained/ Apple, unlike Google, enforces specific proration modes when upgrading, downgrading, and crossgrading, so you can choose the modes that match Apple if you want a framework for how to do this.

View original
Did this post help you find an answer to your question?

2 replies

sharif
RevenueCat Staff
Forum|alt.badge.img+9
  • RevenueCat Staff
  • 513 replies
  • Answer
  • November 22, 2023

Hello,

I hope I can shed some light on the topic in general.

Computing the price per unit of time is as simple as dividing the price by the time. Google has a decent example here where they compare an annual subscription and a monthly subscription. Basically they divide the annual subscription price per month to get the monthly price and compare with the monthly subscription.

You can always safely use IMMEDIATE_WITH_TIME_PRORATION for upgrades and downgrades as that’s what RevenueCat used to do before support for all proration modes was implemented.

If you want, you can take some guidance from how Apple handles upgrades and downgrades as detailed in this blog post: https://www.revenuecat.com/blog/engineering/ios-subscription-groups-explained/ Apple, unlike Google, enforces specific proration modes when upgrading, downgrading, and crossgrading, so you can choose the modes that match Apple if you want a framework for how to do this.


Forum|alt.badge.img+5
  • Author
  • Helper
  • 3 replies
  • November 22, 2023

Great, that clears things up thanks!


Reply


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