Linkcart: Migrating to Stripe Checkout

A brief history

When we first launched Linkcart we had a bespoke checkout design. This was mainly because at the time, we didn't have a payments provider set in stone. Initially, we were looking at using Zai payments to power our entire payments & payouts system. Nowadays, Zai has an awesome startup friendly offering that does not require PCI compliance, back in late 2021 however, it was a very different story. We started developing the platform in the hopes that we might be able to tackle the legal challenges, as well as technical challenges (ignorant of how little time we would have to implement payments) that come with building a PCI compliant payment solution.

Old Linkcart Checkout

The Linkcart alpha was shipped on the 31st of August - a hard deadline I set for the team. So two weeks before, we went back to review multiple payment providers to determine who would be best to partner with in our marketplace style payments solution.

The payments flow was a key contributor to who we partnered for payments. We knew that ideally Linkcart would be the one charging customers, then paying out to sellers - very similar to an Uber or a Lyft. Part of the idea around this was with Zai, and technically with Stripe if you can build the required systems around it, sellers could start selling products on Linkcart without verification. Sounds weird, but our goal has always been to be the most simple commerce offering on the web. Sign up for us was and still is a major value proposition to our users as there's no need to find a theme, install a few apps and spend ages styling your store - you can just do it.

Quickly after reviewing & meeting with many payment providers we ended up with Stripe. This was purely because of their new product offering which was Stripe Connect, Custom. Custom allows companies to use Stripe basically as a payments provider, and to handle document verification and Seller accounts all via an API - and does not require users to interact directly with Stripe at all - this was a massive selling point to Linkcart as we wanted to own the experience of our users, and did not want them to have to go to another system to manage their commerce website with us.

So within two weeks, we set out to build a checkout that handled payments between the United States, Australia, United Kingdom and New Zealand. You might be thinking, “hang on - Stripe works in more countries than that”, and yes they do. But when you're doing a custom checkout using only web components, the concept of international tax treaties and the different scenarios for handling tax obligations falls on the provider… which is Linkcart. So every time we wanted to add another country to support Linkcart Sellers in that country, we had to seek legal advice. We wanted to do everything by the book, and only touch code once - so we took tax super seriously. This problem of course is compounded by the number of existing countries in that pool of accepted countries. This wasn't scalable / financially feasible for a bootstrapped startup.

On top of this, having a checkout where you have to maintain all edge cases, payment methods addresses was incredibly time consuming. We typically would go maybe a week without receiving word that one of our Sellers customers was not able to checkout due to some sort of unrecognisable bug. At the time of writing this, Linkcart does not charge a subscription fee to use its software, so if our Sellers dont make money - we don't. This was a massive pain point for us as it contributed to a loss of revenue for the company.

The Solution: Stripe Checkout

Painfully, it wasn't until we wanted to start adding payment methods like apple pay or google pay that we decided to hit the f*** it button and move to Stripe checkout. Boy do I regret not doing it earlier.

New Linkcart Checkout

By moving to Stripe checkout, our payment methods are automatically added without prior configuration or manually pulling them through into our checkout, plus the payment methods are ordered based on where the user is visiting our checkout from. Example being Afterpay shows next after card payment for Australian Buyers, but in the United Kingdom Afterpay would show as Clearypay and not in position 2. Additionally, Linkcart checkouts also have the peace of mind that once we populate the Stripe Checkout instance with the correct sums, line items and information it's out of our hands and in the hands of a billion dollar company - which helps me personally sleep better at night.

There are many other benefits from moving to Stripe checkout including automatic tax / VAT calculation based on the Sellers registered address and the Buyers billing address, but one of my favourite features that has had the biggest impact for our Sellers is automatic address completion - which is free of charge to Linkcart as were using it in the Stripe Checkout.

It wasn't all positive. The migration required us to completely reengineer our post payments flow, requiring us to spin up even more serverless functions to interact with the Stripe checkout webhooks. In addition we had to start fitting our carts to how Stripe checkout expects them. This ultimately broke our affiliate revenue sharing model which has had to be added back to our development pipeline (due before the end of 2022). Ultimately, it was a small punch to the gut to take considering how big of a piece of all Linkcart stores we were changing.

Summary

To summarise, I believe there is a reason why the vast majority of startups these days use Stripe as their payments provider. It just makes sense. Of course, all these features do come at a cost, but it is a cost worth paying when you're taking money from one account and sending it to another - especially with the amazing reporting that is available to Stripe Connect powered applications that you just can't get at other providers. We might make the move to another provider in the future, but whilst Linkcart is in its infancy, I think we've solved a massive pain point, removed a potential liability and also reduced the amount of code we need to maintain … not to mention the saved dollars on legal advice.

Our new checkout was deployed to all stores earlier this week, and within the next week all store checkouts will be updated to reflect their brand. Display pictures, colours and fonts will be brought over to Linkcart checkouts once again - keeping the entire customer experience familiar to the buyers.

You can create a commerce page with Linkcarts' new checkout today at  https://linkcart.co.