I have seen a lot of misery from folks who used the recurring API of the gateways (such as auth.net, braintree, etc).
If you are going to do recurring payments either roll your own using tokenization (its not that hard if your billing logic is simple), or use Recurly/Spreedly/Chargify.
A big advantage that a lot of people don't immediately recognize is that using R/S/C gives you a really good CRUD for your users/subscriptions/payments/etc. Building out that interface properly isn't a good way to spend your time (spend it on customer facing stuff!).