I'm facing an usability issue that needs your help.
I offer three plans to my customers for a service and of course, they can downgrade/upgrade whenever they want.
Since the plans are paid monthly, I store the current price plan in the account table (say 30$) and if the user decide to change to the 50$ plan, I update the "next_plan" column from
Every begining of each month, I look in the
next_plan that are not null and apply this price, then put the column to null and update the current plan to 50$.
This is the easy part.
Now, of course, when the user changes plans, he also add/remove features. That's the problem I'm facing.
If the user is upgrading to a better version today, he will have to wait the end of this month to be able to enjoy the new feature. This is absolutely NOT great! Frustrating, you name it.
But how can I do then ?
I'd like to avoid charging him the prorata remaining (like 25$-current_plan) if he switch the 15 of this month. I'd like the change to be as smooth as possible.
What are your insights about it? How would you do ?
Thank you for your help.