Cancellation Catchup: What Went Right and Wrong

Published 03 April 2014 by C. G. Brown

We recently notified a number of customers about suspension for non-payment. This isn't a big deal to us; cards expire, customers forget to update, it happens.  However, the reason for the mails, and the outcome of the process, was a story that we thought might be useful to other startups, and also a story that would clarify for affected customers what happened, so we're sharing it.

About a year ago, we switched to Stripe from [insert ancient and difficult to use merchant provider here]. We immediately fell in love with the quick and easy customer management, the built-in PCI compliance, and the API and webhooks. We built a sink for their webhook notifications and automatically notified customers about failed charges and cancellations. As customers renewed, we automatically migrated them into Stripe, and as of now, we're nearly complete and ready to turn off our old billing system all together.

There was one problem: Stripe can either remove a subscription or mark it unpaid if multiple billing attempts fail. We had Stripe remove the subscription, but there was an error in the cancellation logic. The end result was that some customers were no longer being billed, but were still active accounts.

We decided to fix this problem last week. We refactored the cancellation logic, adjusted Stripe to mark subscriptions unpaid so that we had the correct information at all times, and adjusted the webhook sink to take the correct action on the account. We then ran a process that correctly cancelled and notified the billing contacts and admins on the account.

There was one mistake we made in the process. We used the same cancellation email for user-initiated cancellations to tell them about cancellation due to non-payment. This led to some confusion, as users thought that a rogue user had cancelled their account or that someone on their team made a mistake. We got a number of calls and emails from confused and sometimes slightly angry users requesting reinstatement.

In the end, it's worked out well for us, we've recovered users that should be paying, got them current, and have more reliable notifications for the future. However, we'll be ensuring that communication is more tailored and clear going forward.

Topics: Startups, Business, Credit Cards, Billing

Subscribe to ProjectLocker's Blog

Follow Us

Get Updates by Email

Follow @ProjectLockerHQ on Twitter

Follow Us

Free Checklist: How to Choose Source Control for your Project