Best practice for managing level upgrade with lowering duration

  • 12 October 2022
  • 1 reply

Badge +3

There is good explanation on how upgrades/downgrades work on the Revenuecat blog here. I however seem to be missing the case where the user upgrades in terms of a level and lowering the duration (at the section Upgrading Service Levels there is a description of moving to a higher level and a longer duration). As an example:



> A user has a current subscription with 10GB of storage and with a 1 year duration.

> The user now wants 25GB with 1 month duration.


My question here is twofold:

  1. How do we configure levels, as my naive assumption would be that 25GB would be in a higher level than 10GB, independent of duration?
  2. If my assumption is correct how do we get around the situation where the following happens:

Allowing the user to move to a higher level with shorter duration may results in a large refund and subsequently to earlier cancelation of any overall. I assume this is not something we want. 


What is the best approach to handling this case?

1 reply

Badge +3

My current approach would be to define the following levels:

  1. 50GB Year
  2. 50GB Month
  3. 25GB Year
  4. 25GB Month
  5. 10GB Year
  6. 10GB Month

For upgrades

Only allow the user to pick a higher level with at least the same duration. 


For downgrades

Allow any lower level


Drawback of such approach is that it requires code logic to make sure a user never upgrades to a shorter duration. 


If there are any better suggestions I’d be very happy to hear those.