User subscriptions on the web

As I am reaching feature-completeness of my side project Critical Notes, I need to add paid subscriptions to it. Users can already subscribe in the iOS app, but of course not everyone uses iOS, so I need to build something for the web client too.

What I need and want from a payment platform is rather simple:

Basically, I just want my server to receive an isSubscribed boolean for a user, and everything else is handled off-site.

These are the payment platforms/providers I’ve looked into.

Stripe

My initial impression wasn’t very positive, as their docs are an absolute maze. They have about a million pages on their documentation portal, and they all assume a fair bit of knowledge of Stripe and payment providers in general. It’s all rather low-level. But, I dug in, got some help from their support staff (via email and Twitter), and built a working implementation.

Positives

Negatives

Of course I’m required to actually collect (and then pay to the tax office!) the value added taxes, so that last point is actually a major problem and a dealbreaker. Stripe is working on adding VAT support but the first version of it, coming in July 2020, will require you to input all countries / U.S. states and their tax levels by hand. That’s just not going to work. Plus they won’t do automatic user location detection, so the user has to pick their country to see the correct VAT percentage.

The second version of their VAT system, possibly coming in September, will instead handle VAT automatically without you needing to input this all by hand, or the user having to choose anything. I really don’t know who would use the first version.

Since I don’t want to wait until September (at the earliest), Stripe is not really an option, which is too bad as I have it all working.

Gumroad

Gumroad is mostly targeted towards “digital creators” selling ebooks, webinars, video courses and merchandise. However they also support selling memberships and are much more “developer friendly” than Stripe. It’s not as low-level, there are way fewer things you need to do. They only support hosted checkout pages for example, which can be shown as a modal overlay on your webpage, or embedded into your page.

Positives

Negatives

The lack of support for redirecting to a thank you page is actually a pretty big problem. Imagine this scenario: you have a “Subscribe now” button somewhere on your website, and when the user clicks on it, the Gumroad checkout page is shown as an overlay. The user completes their payment, and they are still left on the same page on your website with that overlay still open. So the user closes the overlay… and sees the same “Subscribe now” button. This happens because the webhook wasn’t called yet (that takes about 10 seconds), so our server doesn’t know yet that the user is now a subscriber. This is extremely confusing to the user - it takes a good 10 seconds or so for the UI to update, finally replacing the “Subscribe now” button with a “Thank you for subscribing” text.

Gumroad actually offers redirect_url support for selling digital goods, but not for memberships. They told me it’s on their roadmap but they don’t have an ETA yet.

Patreon

It didn’t occur to me for a long time, but Patreon can actually be used for handling user subscriptions pretty easily via a “Authenticate with Patreon” button on your website. That will allow you to link your own user model to the Patreon user, call the Patreon API and get server-to-server updates via a webhook.

Positives

Negatives

Patreon seemed like a really good option, but I am not going to jump on board of an abandoned train. I really don’t understand why they would let their API die. If it was a solid API that just keeps on working I might consider using them anyway (even if it’s not supported), but just read the forums for all the problems that people are having with the API being down or broken and having to beg for weeks for help. Nope nope nope.

Memberstack

Someone from Memberstack told me to check out their offerings. They offer “user accounts, members-only content and Stripe payments for any website” with hosted checkout pages and all that. But, it really is an all-or-nothing package deal where you have to use their user system. That’s not an option for me.

Conclusion

So, what am I going to do now? That’s hard to say. I think Gumroad right now has the most potential: it doesn’t add my phone number to the emails, and (much more importantly) they automatically handle VAT. Sure, it’s more expensive than Stripe, but still much less than what Apple charges for In App Purchases - the famous 30%. It’s the UX that really suffers though, those 10 seconds or so where the user is looking at my webpage and not seeing that subscription being active.

Stripe meanwhile has the lowest rates and because you’re actually the seller on record, your own business name will be shown on credit card statements (rather than Gumroad or Patreon). Not important, but pretty cool. Too bad that comes with the requirement of adding your phone number to all emails. Getting a Google Voice number could work, but that’s not free and I don’t really want to take on costs until I have some subscribers. But that’s besides the point really, the real issue is the total lack of VAT support on their hosted checkout page. They really do focus on the low level stuff where YOU build a checkout page and handle VAT. It’s what Gumroad, Patreon and Memberstack are all built on.

If you have suggestions for Saas as in “subscriptions as a service”, please let me know!

Written by

Kevin Renskers

Freelance software developer with over 25 years of experience. Writes articles about Swift, Python, and TypeScript. Builds Critical Notes, and maintains a bunch of open source projects. Connect on Mastodon or Bluesky.

Related articles

› See all articles