Let me share my thoughts. So how often will this happen? Is it worth the hassle? Or you just used this as an example but in your case it will be more often?
So those are couple of questions that I will ask myself before doing anything, but here are some points that I will take.
-
So since the user is logged in and they go their dashboard, for the "Forever" plan you can already have it calculated, and if they decide to click on that button, you will have the "new" price calculated in the back-end.
-
If they proceed with the steps, and they agree with the price, you can create a coupon using the API: https://docs.stripe.com/billing/subscriptions/coupons?dashboard-or-api=api#coupons
-
Send that coupon code on their email, and on the dashboard you just show that they should receive an email with coupon that they can use for the upgrade.
-
The email should also have a link to the payment part on your page, and pre-fill the coupon as well for them.
- Make sure that you validate the coupon code that you issued with the Stripe customer ID of the customer, because a coupon is not associated with a customer as far as I can see in the API, so you can do that on your side.