There is no scheduling system in Ethereum itself. Everything starts with someone signing a transaction and sending it with the gas (paid for) to run the transaction.
This leads to some new patterns, data and process flows that take some adjustment.
The obvious idea is the Ethereum Alarm Clock approach. In this pattern, you would have your users supply enough Ether to pay processes fees in advance for the convenience of having the service send a transaction in the future. Since we always try to align payment of fees with the interests of the person paying the fees, it might make sense for a user to pay, say, 6 months worth of fees to cover the next 6 monthly transfers. Then, they would need to "top up" for continued convenience.
A less obvious way is to reverse the flow and have the users claim their funds. This is actually preferable in my opinion as it is more closely aligned with best practices. In the withdrawal-style, users simply inquire about their account status/history, and the contract computes payments owed since their last withdrawal. Easy.
Then, the user submits a transaction (push the button) to request funds owed and the contract is solely concerned with validating the request is acceptable, and doing the accounting. Also easy. The user pays for the gas necessary to process the transaction. That's proper.
Neither pattern uses looping over any lists or batch processing on specific days as might be the case in a server-centric approach. It's important not to do that.
Hope it helps.