More than once, I've underestimated the efforts required to create a billing system. I have yet to find a start-up that budgeted correctly for the time and effort to integrate subscription billing. From the outside, the task seems to be pretty straightforward:

  1. Signup for a recurring billing service

  2. Create a signup form that accepts the billing information

  3. Create a page for the user to update their billing information

  4. Allow the user to cancel their subscription

  5. Sell your product or service and money

The above will get you up and running with subscriptions. However, there's a lot missing from the above picture that you won't realize until you roll out your new billing system. If your startup is new to subscription billing, there are a few key problems you'll soon encounter. Knowing about these issues will help you budget your development resources appropriately and help you evaluate your recurring billing options.

Declined Recurring Payments

For starters, what happens when one of the recurring payments fails due to a declined or expired credit card? Will your system know to alert the user and/or cancel their subscription? Can you get a list of past due accounts? And, will the system continue billing the user or will it stop until their payment information is updated?

When a card is declined during the subscription renewal, you need to alert the customer and give them a way to update their billing information. If they update their billing information in a timely manner, then bill them the missed amount. Otherwise, the appropriate action is to cancel their subscription and transition their account back to a free account. Unfortunately, many recurring billing APIs make it non-trivial to determine if a recurring payment failed. And, if the user updates their billing information, verify that the service will collect the missing payment -- this should happen immediately as part of the billing info update process.

Upgrades and Downgrades

If your site offers multiple subscription types, billing intervals, or quantities, then your customers are guaranteed to ask for upgrades and downgrades of their subscription. If you start offering your subscriptions without a means for the subscriber to modify their own subscription, then you'll receive several support requests. Hopefully your support staff has the tools to modify the subscriptions or else you will miss the opportunity to make more money by allowing your users to upgrade. And, a few users will be more than unhappy.

Of course, not all recurring billing APIs will allow you to upgrade or downgrade like you would expect. Typically, an upgrade (additional quantity, add-ons, or service level) should happen immediately. To do that, the remainder of the current term needs to be prorated and billed immediately. Not all recurring billing services do this -- some will require you to wait until the renewal to charge a new amount.

Downgrades or billing cycle changes can be just as tricky. These events typically occur at the end of the current billing cycle, since the customer has already committed to paying for their current term. These changes are doable with almost all recurring APIs, but most services will require you to perform the calculations to get the changes just right. Buffer for some development time and lots of testing here.

Customer Service Tools

Does your billing system give your support staff the ability to lookup and modify accounts? Your subscribers will want you to make changes (either by contacting you with a phone call or email) on their behalf. If it takes an engineer to make subscription changes because you haven't built the tools for your support staff to handle the modification, then you're not using your resources efficiently. Other users will expect your support staff to be able to offer them credits or refunds if something should go amiss. Your support staff should be able to handle these requests immediately to minimize any chances of chargebacks or upset customers. I strongly encourage you to give your support staff the tools necessary to support billing requests without involving a developer with database access.

Reporting and Metrics

Are you tracking your subscriber metrics? Your payment gateway will tell you about the dollars and cents moving through your account but it doesn't know anything about subscribers. You'll want to know as much as you can about new signups, upgrades and downgrades, cancellations, missed payments, failed subscribe attempts, etc. Out of the box, most recurring billing services fail to provide these reports.