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 null
to 50$
. 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.
Answer
Do you need to depend on calendar months? If so, why do you want to avoid billing the used part of both plans for that month? This is at least fair to the customer and I don’t see why it makes things more complicated. You can combine both amounts in one bill. My phone company does it and it makes a lot of sense to me.
Or otherwise you can step away from calendar months and introduce a policy that spans for example 30 days, 1 week or 3 weeks etc. Then you can start the new plan immediately and start the period at the same time. You still need to charge the bit used on the old plan though.
For a downgrade, the solution is a bit simpler: Just wait for the month/period to end and then downgrade the plan.
No comments:
Post a Comment