Continuing the discussion from Discourse Subscriptions:
Let’s say I have a recurring annual subscription of £100, which runs from 21 Jan 2022 to 20 Jan 2023, but want to change this to £110 when it renews. I know from Subscriptions: Change User's Plan - #2 by pfaffman that the answer is to cancel the current subscription and have use user resubscribe to the same product on a new plan. I can see the “x cancel” button on the
I haven’t thought it through completely, but have some questions about this scenario:
What happens when I cancel the current subscription? I think that ends the subscription straight away and there is the option to refund the last payment in its entirety. That’s not what is needed.
Is there any way to keep the subscription going until its renewal date, and just cancel the auto-renewal?
Is the answer to diarise the renewal date for every subscriber and cancel the subscription the day before.
I guess in any case I would need personally to remind the subscriber about the cancellation and ask that renewal on the new plan be considered.
Let’s say that Stripe won’t let you.
You can do this on the stripe side of things and click something that says something like “cancel when it expires”.
You can do that and then hope that your subscribers will
- notice that their subscription has expired
- figure out how to renew it
- not care that you’ve raised the price.
I think that if what you want to do is to make more money, then letting those subscriptions keep auto-renewing at the old price is going to yield lots more money than convincing them all to renew at a higher price. Knowing nothing about your community or product, I’d bet more people will auto-renew at $100 than would enter their credit card again to renew at $50.
Just create a new subscription at the new rate and hide the old one.
I found that option, thanks. It lets you set any expiry date, and give a prorata refund (which isn’t currently possible via Discourse). This is a side issue, but do you know how closely Discourse keeps tabs on this sort of thing? With my test user, Discourse knew the subscription had been cancelled, and hasn’t yet removed the user from the relevant group – but does Discourse know the new end date, and so when to remove the user from the group?
I completely agree with this…
Do you mean untick “Active”? Presumably this doesn’t affect old people but new people would subscribe on the new plan.
I do, but I couldn’t remember the language
I don’t know. I am not sure if it gets handled only by the webhook or if there’s also a job that checks on those. Maybe someone else does.
I’ve created a feature request about this: Discourse Subscriptions - allow "Cancel at end of cycle" It doesn’t address the original point of changing the subscription, but would be useful nonetheless.
Let’s say Stripe would let me Upgrade and downgrade subscriptions | Stripe Documentation Or at least, I’m not entirely sure but it looks like it would. I can see how this would be open to abuse, but I suppose that is what laws are for!
Subscriptions can be changed by switching the price that a customer is charged or by changing the quantity. Normally the result qualifies as either upgrading or downgrading the subscription, depending upon the price difference between the two subscriptions.
Assuming a customer is currently subscribed to a basic-monthly subscription at 10 USD per month, the following code switches the customer to a pro-monthly subscription at 30 USD per month.
OOh! I stand corrected. Thanks!
So if it will let you change it without their permission, then I think that the easiest solution would be to do it on the Stripe side; I’m not sure how you’d get Discourse to find out about it, but it might just reload that information the next time it needs it (I think it probably does).
It seems that the way to do it via the Stripe website is to go to an individual’s subscription, choose “Update subscription”, remove the current plan and add the new plan, and save. It’ll make a calculation for the next invoice on a pro rata basis (I didn’t check it for accuracy). When you go back to Discourse, as the user, it’ll show the new price per period, as if it had always been that way.