I'd also be curious about what people have done in this area. We don't have monthly subscription courses (thinking about this though), but we do have 'on-demand' courses where people pay, get immediate access and have say 8 weeks to complete it, after which they lose access.
To accomplish that we have an external application that controls the logic of the timing of when people should start/lose access and the external database enrollment plugin then handles giving access/suspending access in the Moodle courses.
We had to work through administrative/logistics scenarios of what happens when a person wants just a short extension or they want to pay for a full 8 weeks again, etc.
PS: Shameless plug for our presentation at Canada Moodle Moot 2018 where we will be presenting on this topic in the context of delivering healthcare professional development courses: http://moodlemoot.ca/mod/data/view.php?d=7&rid=79