I don’t think that’s the best solution.
Sadly it’s something I asked for (instant demotion when payment fails). Ideally we’d like our sites to demote users when their payments fail, right away or after a set interval with a notification to the user (24 hours is reasonable, but we should be able to set that).
The collection limit should be set to zero, so PayPal continues trying to collect every five days from everybody that owes you, instead of suspending the process.
Right now I have to do all that manually. Once I receive the “you didn’t get your payment” I demote the user manually.
When PayPal suspends the subscription I have to open their recurring profile and re-activate their account there, so PayPal continues trying to collect indefinitely. I recovered tons of users this way, otherwise you’re “soft cancelling” them if they have a problem with their card for a week, a month or a few, and that can be a considerable amount of lost revenue.
Additionally, it would be nice if s2Member reupgraded those users upon late payment. When I demote a user they are made aware they must contact me if a late payment happens so I can reupgrade them manually as well, but that’s not the best solution, of course.
I wish @clavaque has time to overhaul this part of the plugin sometime soon, since at least on my end it’s the area that is more concerning since I started using it two years ago and I am not technically qualified to build something to fix it, sadly (I should be able to learn, but my brain is fried and I could not concentrate enough to learn enough basic php to do it).