Recurring Profiles for Subscriptions Feature – Should You Use Them?

paymentpayment-gatewayrecurring

I'm building a subscription payments feature right now and I'm trying to determine whether using Magento's Recurring Profiles feature makes sense.

Of course, I would love to use the core feature, I like to be able to leverage core functionality wherever possible, but there are a number of reasons that I don't think it makes sense.

Requirements:

  • We want products to be able to be purchased regularly or on a subscription basis, very similarly to how Amazon subscriptions work.
  • We want to allow all subscription purchases to happen either every month, every 2 months, … , 6 months. In other words, we don't need granular billing periods define per product or category or anything.

Issues with Magento's Recurring Profiles

  • For starters, they were not released as a stable feature, but rather as a beta.
  • You can't checkout with regular products and subscription products in the same cart. I don't really see any great reasons for this limitation. I actually noticed a nice Magento site recently that does subscriptions without this restriction, and it's pretty neat: http://www.harrys.com/ (UPDATE: I think harrys launched on Magento in March of 2013, but is no longer on Magento).
  • A given product has to either be a subscriptions product (nominal product) or a regular one. So you can't easily have a product page with both a Buy Now and a Subscribe button on it.
  • I don't really understand why they have recurring profiles defined on a per-product level. That's not what I need in my case and I'd imagine it's not a common use case.
  • Shipping methods seem to have some hiccups with nominal products – haven't really dug into it too deep but it just adds to the madness.
  • It didn't seem to be built with the idea that subscription payment services (like Recurly, Chargify, Braintree) would be available to handle the meat of the subscription configuration / processing. Maybe I'm completely wrong on that point b/c it was built against PayPal's recurring feature.

So, the approach that I want to take:

  • Have a custom option that's available for every product for them to determine whether they want to subscribe on a monthly, bi-monthly, etc. basis.
  • In the sales_order_place_after observer, check for any items in the cart with the subscription custom option set, and create subscriptions for them
  • Store the subscription ID in the sales_flat_order_item table.
  • Listen on Braintree webhooks for subscription charges, lookup the order item by subscription ID, generate an order an invoice for the product in question, with the same shipping method and tax amounts.

I'm hoping that there's not something massive that I'm missing here.

Best Answer

Working with recurring profiles in Magento is very rewarding if you spend the time to get the system setup correctly. It's important to understand that recurring profiles are labeled "Beta" for a reason. Certain aspects of administrating them on in the admin is limited. The Sales -> Recurring Profiles grid almost always has to be extended to your local tree to make modifications to show more columns, such as coupon, and stuff you will need for shipping, such as an export button.

The best solution I have found is an extension by Paradox Labs that supports Recurring Profiles with Authorize.NET CIM. It allows the customers to manage their cards, and do all the aspects or canceling, suspend, etc that recurring profiles allow for. It is configurable to run everyday for billing jobs, or like I have it setup to run once a month.

Note you can effectively build a full fledged billing system that includes dunning management, shipping systems, and the works in Magento based on recurring profiles. I have done it. Its a large undertaking and sometimes the easy road is to use another company to manage that aspect.

I've detailed a bit on my learning experience moving from Recurly to Magento recurring profiles here.

Related Topic