It is possible in a lot of ways. For example with a lot of payment methods (Paypal, Stripe, Ontraport) you can use theyr’e webhook system. For this you create a API where the payment platform connects to your website and every time a payment is managed the webhook sends information to your platform through the API. The monthly payments are normally managed through the payment platform (you create a monthly subscription system, paypal has this).
Currently I am using Ontraport with webhooks and with Meteor I only store the last payment date and every time the webhook triggers I can see if the user cancelled, renewed or is a new payer and then change the user roles in the website (using alanning:roles).