As for the "not signed in for months" part, I recommend you not assume someone wants to cancel their account just because they haven't signed into the service in months and their payment information randomly goes bad. Let them tell you this. Depending on the service you provide, people may use it seasonally, but pay each month for you to keep their data on hand. (I've used Basecamp this way before, although now they let you pause your account for up to 6 months.) Sometimes people use services that are "set it and forget it" where the user doesn't actually need to sign into the service to receive value from it. The absolute worst would be for a customer of any type of service to have their account closed for non-payment with no notice whatsoever.
That's really just the tip of the iceberg for thoughts that we've got on this subject, so feel free to reply or email me at andrew@churnbuster.io if you've got any other questions.
Recommended reading:
https://training.kalzumeus.com/newsletters/archive/rainy_day...
http://images1.bingocardcreator.com/blog-images/hn/sample-du...
If the user logs in to a suspended account, they're welcomed back and asked to update their payment information to reactivate the account. All their data is still waiting for them. Lots of people that disappear come back and reactivate at some point in the following months.
Once they're locked out, if they ever try to login again they won't be able to do anything but pay us.
This tactic isn't advisable for all services though. If I was running a high-ticket PAAS service or something I'd probably have Account Managers reach the person on the phone before taking any action at all.