Using Stripe Checkout & Billing Portal for Subscriptions

Stripe’s success is a secret to no one and well deserved. Their amazing suite of products makes life easy for an area that can be incredibly stressful to get right.

Over the last couple of months, I’ve rolled out a Stripe Billing integration for our first BigCommerce app with a plan. It provides us with:

  • Feature-rich and beautiful checkout 🛒
  • Customer invoice management area 📄
  • Subscriptions incl renewal management ♾
  • Automated failed payment retries and emails ⚠️

I could never match its feature set if I was doing this all myself. Stipe enables me to get back to focus on delivering value in the app and not worry about how payments are being taken. 🙌


My app on BigCommerce has now been live for about a couple of months or so, in a public beta and that’s given me enough time to implement billing. I decided to use Stripe for that. One of the main reasons is they’re an incredible payments provider – easy to understand documentation.

Although I haven’t used them for a few years, it was great to go back, see how much the product, it’s phenomenal, and how much it has grown. But I know that when I’m building these apps, the SaaS part of it, needs to work but I’m not differentiating the business on that side of things. I just need it to function.

And so I want it to be as easy as possible, and I want to, I’m very happy to pay a transaction fee, to offload it to somebody else to manage for me, particularly subscriptions and taking payment regularly. It’s not something I want to do and mess up myself. So very happy for someone else to do it.

And Stripe is the player in the market. And they have a particular focus on making it easy for developers as well. So I want to quickly take you through how I’ve approached it, mainly because if you need to do anything when it comes to billing and payments, particularly subscription payments I want you to see what they’ve got in store for you so that you don’t have to do it yourself. It’s amazing how much they’ve done.

So if I take you to Stripe billing first. Stripe billing is sort of a layer on top of their core payment gateway product, where you can set up products and prices, different plan levels. And then they have a suite of features around that such as the Stripe checkout, which is an entire checkout flow that they manage themselves. As always, as you would expect with Stripe, very nicely designed, and a customer portal, which I’m going to briefly show you as well.

So Stripe billing, they take an extra transaction fee but as I say very much, very much worth it. And myself, when I’m building on top of Laravel, Laravel has Cashier, which has a Stripe integration as well. So, even more, is, is done for me automatically.

Going into my app as well. I have a billing section where you see my free trial has expired. And so now it’s time to sign up to Stripe. Right now, I am choosing to collect a little bit of information that name and tax information upfront so I can send the right tax rates. But then once you hit subscribe and choose a plan, you get redirected to the billing center.

Where this is their Stripe checkout. It’s customizable. I’ve got actually most features enabled. So you can see if you’ve got any free trial time left. It shows that clearly as well as the payment amount, you can use coupon codes. Again. If I’d have to do this myself, it’s just another hassle to have to support and maintain that code and have that flow in my own app.

I want my apps to be as much around the feature that I’m providing and as little about billing as possible. Tax information, so as you update your billing address that will update based on the tax rules that you configure from the tax information you send and obviously your payment information.

So that has been amazing. Once you complete that, you’ll be redirected back to back to the app. And so that was all managed for you.

Once you then subscribed. I’ll take you to the customer billing portal. So this is sort of what I have in the app. It’s very minimal shows you the plan that you’ve now subscribed to.

And it has your past invoices, but this is very much a very lightweight layer on top of the official Stripe APIs. So the invoice data itself includes a URL to view the invoice. So you can see here, we’re going to a Stripe page now where it shows you kind of nicely designed with your, your logo attached to it.

The invoice information and downloading a receipt. So I know that people can get something self-serve, if there’s been a problem with the payment or if you choose to not take payment in advance, people can place and pay for invoices through this mechanism as well.

So that’s, that’s very handy and it was very quick to implement. Then from a manage subscription point of view, again, I don’t want to have to do this myself. And so it’s great to be able to generate a portal session. And then immediately be able to, for the customers be able to manage their plans.

They can cancel it, they can update it if they want to change between the plan levels, change their payment card, if it’s coming up to expiry or has expired and their billing information, including tax records. So this was great to know that I could kind of configure and a few nuances I did have to worry about which I’ll mention in a second.

But I knew for the most part I could just communicate with the Stripe API what I wanted to do, once I’d configured my products, they could checkout, manage the subscription. Once I add more products, it’s not going to add a huge amount of complexity. When I might add more apps, it’s not going to add a huge amount of complexity because the amount of code that I have in place to support this is now very minimal.

Most of the billing functionality is handled by Stripe or Laraval Cashier. So that’s been, that’s been brilliant. I’d say there have been a few things that I’ve had to figure out along the way.

So Stripe tax is coming. It’s their new tax feature and I appreciate they recently acquired TaxJar as well. Right now, tax is very manual. You have to send the tax rates you want to be applied pretty much. So there’s a little bit of jiggery-pokery there. And the other one I’ve sort of challenge I faced because of that tax and an invoice restrictions.

I am billing in dollars and I’ve chosen to bill everybody in dollars right now. But as I’m a UK business, we also need to put the VAT amount in GBP on the invoice, which has been a little bit tricky to do. But I’ve got that there and now billing is live on our first app. So very happy. Yeah, very pleased with using Stripe. As ever, their documentation is amazing.

It’s grown. There’s an awful lot more of it than there used to be. When I first implemented it seven or eight years ago. But it’s been a fantastic product, and looking forward to seeing it continue to develop. So if you have subscriptions or products that you’re looking to sell, certainly consider Stripe from managing this whole subscription management area of your business.

It’s a no brainer. Thanks.

Tom Robertshaw
Stay up to date with Hypa news and features