I do a similar process on my website and there are ways to avoid going through an API to process your customer's credit cards. We use Chargify to create the subscription system that manages "when" your customer will be charged and "how much."
Our payment gateway is connected to Chargify, which stores all of the credit card information so we do not have to be PCI compliant. (you can use PayPal as your payment gateway if you want). This way we do not have to go through an API to tell our payment gateway to charge our customer's credit cards.
If you went in the same direction and used a service like Chargify you will still have to create an API that tells Chargify how many services that your customer's used on your website so that Chargify knows how much to charge your customers. Or you can manually input the amount of services that your customers used that month but if you have a lot of customers then that would be time consuming.