Stripe level subscription downgrade

Another problem. User downgraded from level 3 to level 2 on stripe. New payment was made at level 2 after 30 days on level 3 ended (trial period, since that’s what I use to charge extra on the first month to minimize subscription churning). User was not demoted to level 2, but stayed at level 3.

2 customer.subscription.updated events sent by stripe on Nov 17
1 customer.subscription.trial_will_end event sent by stripe on Dec 14
1 invoice.created event on Dec 17 (level 2 amount, level 2 plan, webhook ignored on log)
1 customer.subscription.updated event sent by stripe on Dec 17 (webhook ignored on log)
1 invoice.paid event on Dec 17 (again, at level 2 amount) (webhook ignored on log)
1 invoice.payment_succeeded event on Dec 17 (again, at level 2, log shows s2member updated last payment date)

All with status OK (200) on Stripe. Only one event was taken into consideration by s2Member to update the payment date.

User stayed on Level 3 after all that. It’s been 3 days, so the system won’t likely do anything about it because it doesn’t seem to be a cron issue.

Not sure it happens on PayPal too, never had a down/upgrade on PayPal before.

This is the first one I caught, and the sad part is that Stripe doesn’t send email notifications for things like that (they won’t even let me know when a payment fails, I have to check it daily), because they assume our systems read their webhooks and act on them

Hi Sim.

Out of those events, invoice.payment_succeeded is the only webhook s2 would pay attention to, that’s why the others were ignored.

Could you please explain to me the level 2 and level 3 subscriptions? Can I see their shortcodes? And the exact steps to reproduce the problem.

If I understood correctly, a user subscribed to level 3 with a trial, and before the trial ended, he subscribed to level 2? If it was after the trial ended, did he get charged the first regular period at level 3 before subscribing to level 2?

When he subscribed to level 2, what happened to his level 3 subscription? Was it ended over at Stripe?

I look forward to your update.

1 Like

Hi! Merry Christmas / Boxing Day!

The user was a level 3 (your plugin has numbered membership levels, that’s what I am referring to) and they used the pro form to downgrade (I took care of it and removed the option for users to do that, now they have to contact me so I do things manually instead, but the bug felt like something worth mentioning):

[s2Member-Pro-Stripe-Form modify="1" custom="" accept_coupons="1" rr="1" captcha="0" rp="1"]
  [s2Member-Pro-Stripe-Form level="2" ccaps="-all,stripe" desc="Premium Access: 6 EUR per month (1st Month for € 7 then € 6 Monthly)" cc="EUR" ta="7" tp="1" ra="6"   rt="M" default_country_code="DE"/]
  [s2Member-Pro-Stripe-Form level="2" ccaps="-all,yearly,stripe" desc="Premium Access: 5 EUR per month (€ 60 Yearly)"                 cc="EUR" ta="0" tp="0" ra="60"  rt="Y" default_country_code="DE"/]
  [s2Member-Pro-Stripe-Form level="3" ccaps="-all,stripe" desc="Premium Access + Lab: 11 EUR per month (€ 11 Monthly)"                cc="EUR" ta="0" tp="0" ra="11"  rt="M" default_country_code="DE"/]

If the user is already level 3 and they saw this form, then changed to level 2 by using it, their stripe profile was changed with the smaller amount, but their profile on s2Member wasn’t downgrade to level 2, meaning the user was paying for less content, but receiving more, without paying the difference.

The form has more lines, but I omitted them, because they are for other choices in currency etc.