Case 1:
Customer joins with a monthly subscription to level2 and wants to switch to level3 (which is annual – no month-to-month offered). How should I configure the billing modification for this case?
Dashboard -› s2Member® -› Authorize.Net® Pro Forms -› Billing Modification Forms
Modification: Upgrade to Level 3
Then, I want to charge: $500 Yearly (recurring charge, for ongoing access)
Case 2:
Customer joins as level2 – annual and has paid $300. 3 months into their subscription they want to upgrade to level3. How should I configure the billing modification for this case?
The customer would expect prorated consideration. Is this possible dynamically or would I have to create specific modification for each proration case?
You would need to write some PHP code that reads the user’s current Level, current payment option, and length of time into their current subscription, and then dynamically calculates and creates a modification button/form that is configured for the difference in price (i.e., pro-rated). Please see this thread for more info on using dynamic shortcode attributes.
Case 3:
Customer joins as level3 and 6 months into their subscription they want to downgrade their account. My policy would be that they would not receive any reimbursement or credit, but when they reach EOT they would be downgraded to the level they selected. In the case of downgrading to level2, how would I set up this modification.
Demoting through the EOT system to a specific level is not currently a feature of s2Member (in Dashboard -› s2Member® -› Authorize.Net® Options -› Automatic EOT Behavior, your only options are Demote or Delete, and Demote always demotes to Level 0, aka Free Subscriber). If you want to override this, you’d need to write some custom PHP code that hooks into the Automatic EOT System and demotes them to a Level they selected. You would also need to create some code that records which level they want to be demoted to, aka downgraded to, when EOT occurs.
When someone cancels their subscription in s2Member, or when their payment fails, they automatically continue receiving access for the period they’ve already paid for. So if someone canceled an annual subscription 6 months into it, s2Member would set their EOT for the end of the year. However, the behavior you’re describing is more complex and while certainly possible, would require custom programming on your end.