S2 instantly demoting a user upon receiving PayPal IPN *READ IF YOU HAVE HAD THIS

Hi guys,

Something very odd just happened, and I’ve no idea why.

Usually, when I cancel a recurring PayPal profile for a customer, it sends an IPN to s2Member, which generates an EOT.

This profile I just cancelled was a monthly profile, set up on the 30th August.

Thus, upon cancelling it, the EOT should have been 30 days after that payment.

That didn’t happen, PayPal sent an expiration IPN to tell S2 to demote the user INSTANTLY.

This has never happened before.

It’s all a bit bizarre @jaswrks? Any idea if they are changing things up - or could it be anything to do with the way that original payment was made just a few days ago?

It is showing as a successful payment.

This has NEVER happened before, and I have changed no settings in years!

Ross :slight_smile:

It’s okay @jaswrks - I’ve figured out why I had this anomaly - and the answer may be useful to other s2 users.

Would be great if you can confirm the following logic is indeed correct.

  1. Initially, this user had signed up for an s2 level 1 MONTHLY membership from my site WITHOUT logging into their EXISTING account on the site.

  2. They emailed me to say they had effectively bought a NEW monthly account, rather than upgrading their s2 level 0 account to a level 1.

  3. I then MANUALLY upgraded their existing account and linked in their PayPal profile ID.

I’m guessing because s2 DIDN’T RECEIVE that original payment IPN from PayPal, that it couldn’t populate the EOT time correctly, thus instantly demoted the user back down to a level 0 account, once it received the profile cancelled IPN.

Had the user paid for month 2 (instead of cancelling in month 1) s2 would have received month 2’s payment IPN, and all would have been well moving forward.

If I’m right, I’m guessing s2 stores the date of the last payment received in the WP DB to calculate the EOT when it receives that cancellation IPN?

Is that correct? If so, is there any way we can manually achieve that, when manually upgrading and linking accounts in the future? It’s rare, but I do have to do it now and again.

So the gist is this:

If you manually upgrade a member and add in their payment info, s2 WILL NOT be able to set an EOT time upon cancellation - UNTIL ANOTHER PAYMENT ON THAT ACCOUNT IS MADE. :slight_smile:

I’ve seen this happen as well, except we offer yearly subscriptions instead of monthly…
Users upgrade their level0 account to level1 and then cancel right away… i think maybe Paypal receives cancel command before payment command (because of verification or so) and thus gets canceled right away…

I’m not sure… but this is what I experienced as well and based on the cancellations with the account in question, I think this could be the reason.