Choosing Payment System for a Marketplace: Stripe Integration for ESOOKO
Every startup begins with a great idea. But often, a great idea is not enough because many other factors play an essential role in a project's success. For any marketplace, choosing the correct payment system is crucial.
When Impressit started to work with ESOOKO, a new eco-conscious marketplace, I knew that it would be a great opportunity for us to get a new experience in payment system integration. So here I want to share the story of our journey with ESOOKO, show challenges we faced and solutions we came up with, and give the reasons why Stripe might be the best choice for your startup.
What is ESOOKO?
ESOOKO is a marketplace with a fantastic idea at its core. Sustainable living becomes more and more popular each day. Therefore, the founders of ESOOKO decided to create a new platform for people to sell and buy clothes while helping the environment.
ESOOKO users (both buyers and sellers) pay a small fee, and a part of that fee goes to environmental initiatives of the user's choosing. This way, people can improve their wardrobes while also helping to plant trees, restore corals, or spread awareness about sustainable fashion.
What is Stripe?
Stripe is a company that offers a wide range of financial services and SaaS solutions. With Stripe’s products and services, one can handle billing, invoicing, taxation, payouts and many other things. You can find out more about Stripe in our guide.
Choosing the Payment System
Before we actually started to work on integration, we had to choose the payment system. Some time ago, we had our own pet project, and we researched the available payment platforms. We looked through 27 marketplace payment platforms, including Stripe and PayPal, which are the most successful. However, some payment systems are only supported in certain countries (for instance, developed solely for the United States); some have very high costs and fees.
When it came to ESOOKO, the founders were choosing between PayPal and Stripe. ESOOKO’s competitors use both of them. However, our customers were more familiar with PayPal, so we evaluated this option first. At that moment, PayPal was updating its solution for marketplaces and was not taking new clients. Waiting was not the option. Therefore, we looked at what Stripe was offering us.
Remember the pet project I’ve mentioned earlier? We could not launch it because of laws and regulations regarding the payment systems in Ukraine. However, if we did, we would definitely choose Stripe. And we also chose Stripe for ESOOKO. Why? There are a few reasons:
- First of all, Stripe is incredibly flexible. This platform offers numerous services for various kinds of businesses. Sending and receiving payments, creating and sending invoices, managing finances — all of these services and more can be found in Stripe.
- Second — Stripe is easy to integrate. I can say that Stripe was created by developers for developers. They have detailed documentation for various programming languages that is kept up-to-date. We were developing an iOs app, and Stripe very conveniently has an SDK for iOs and Android. Stripe’s team reviews their documentation promptly, considering different versions of operating systems.
- The third reason is excellent support. We communicated with Stripe’s support a lot, and this experience was great. Our questions and inquiries were processed quickly and effectively.
- Four — testing possibilities. Stripe gives an option to switch between production mode and testing mode. Moreover, you can have access to the testing mode even from the countries that are not currently supported by Stripe. This made the lives of our QA specialists much easier.
- Finally, Stripe may provide certain discounts for startups. Stripe takes fees for each transaction as well as payments for each active user of the system. As far as I know, startups can negotiate and get discounts and special deals to launch the project successfully.
Challenges and Solutions
So we began to work with Stripe Connect, which is Stripe’s solution for marketplaces. We had to make another decision, as Connect actually has three models to choose from:
- Standard — everything is covered by Stripe. The user has to create the accounts both on the marketplace app and on Stripe to manage payments.
- Express — a mix between Standard and Custom models. Stripe handles some parts, and others can be tailored.
- Custom — the name speaks for itself. With sufficient resources and a development team, you can fully customize everything from the registration form to the dashboard. This is the most complicated model, but it appeared to be the best option for us.
Registration and Verification Processes
This was our first challenge because the information required for the registration and verification may vary depending on the country. For example, it would be different for users from EU and non-EU countries. It is also necessary to constantly monitor if there are no changes in laws or regulations because they directly influence the said information. Stripe’s team follows these changes and applies them to their system, so businesses do not have to do this and pay more attention to the development of their projects.
Although we chose Stripe Connect Custom Accounts, we still could use Stripes flow for registration and verification. When someone wants to join ESOOKO, they click the “Become a seller” button and get redirected to Stripe. This redirect is unnoticed by the user as Stripe gives the possibility to customize this page to match the overall style and looks of the app. Next, the user sends their personal information to Stripe (sometimes including the document scans) to verify their identity.
The verification status will be set to “Pending” until Stripe sends the user notification about the successful verification. However, Stripe can change the status back to “Pending” at any moment, for instance, if some new information about the user is needed.
The possibility of using Stripe’s flow here was very convenient because this way, we do not have to daily check if there are any changes in laws, and ESOOKO does not have to worry about their users’ security.
Adding and Using Debit Cards
Now it’s time to explain how the backend and the frontend of ESOOKO’s iOs application work.
The major part of all the data processing happens on the back end. The front end is used for displaying the data and for adding the debit cards. We can save certain debit card information in the application and give the user an opportunity to choose which card to use for the payment.
However, we can’t save all the debit card information because we’re not a financial organization, nor do we have all the necessary permissions and certificates for non-financial companies to do this. These certifications are pretty expensive and require a lot of time and effort, and it would be unnecessary for our company.
Therefore, we are using Stripe to save this kind of data — they have all the necessary accreditations and certificates. Also, Stripe handles all the questions with the bank (e.g. if additional verification (3-D secure) is necessary) before adding the card and allowing any actions with it. So when we need debit card information, the frontend makes the request to the backend about the card info. Stripe gets a request from the backend and gives us some limited info (the last four digits of the card number). We send it to the frontend through the backend, and then the user is able to pick a certain card and make a payment.
We get the information about the items the user wants to purchase at the checkout and then calculate the total (including all the fees) and create the bill at the back end. After the payment is requested by the app and approved by Stripe, the money is transferred to ESOOKO’s account and after that — to the seller’s account (of course, with all the fees deducted).
As I mentioned before, ESOOKO has small fees for both buyers and sellers. All the fees are accumulated on ESOOKO’s account and then donated to respective eco-initiatives. ESOOKO, obviously, keeps the tabs on how much money they got, what percentage of the total amount was donated, and how much each eco-initiative got.
The process of transferring money only seems effortless. If we just need to get a certain amount from one account to the other — yes, indeed, it is pretty easy. However, if we have a middleman that receives a commission, the situation gets more complicated. This is the case of any marketplace, and this is also the reason why in certain countries, it is difficult to organize the work of marketplaces.
Fortunately, Europe has laws and regulations that provide the legal basis for the business activity of online shops and marketplaces. This is why we could not launch our pet project; however, ESOOKO, as a British company, had no problems and complications in this case.
Stripe gets commissions for each transaction, but it is important to consider that commissions are different for EU and non-EU countries. Also, the type of card the user has should be taken into account.
There is a monthly fee for each active user (around 2€/month) as well. The user is considered active if at least one transaction a month was made. If there are no transactions, the user is deemed to be inactive, and the fee for this user is not paid that month.
However, I know that Stripe may be very flexible, and startups can negotiate and get some discounts, which may be very beneficial for projects with a limited budget.
Although ESOOKO is not available worldwide yet, we already had to provide the possibility to use different currencies. Sellers from various countries can set the prices in foreign currencies on the platform. So in a situation when the buyer adds a few items into the cart, the prices of which are in different currencies, we divide the cart into several different orders. Therefore, there will be a respective amount of different transactions, and the currency exchange rate depends on the buyer’s bank’s rate.
The seller may have different bank accounts in different currencies or have a single account. Stripe actually does not care about the currencies in such situations — their system works perfectly for the marketplace buyers from any country in the world.
In order to transfer the money from the system to the bank account, the user has to add information about the account. It was another challenge for us as account details vary from country to country. For instance, most European countries use IBAN, while Britain has two different codes, and account information for Chinese banks consists of 4 or 5 codes.
This part was relatively easy so far as ESOOKO currently is available in Europe and a few other countries. We developed a solution on the front end, so users from different countries are able to put in the necessary information in a respective number of data input fields.
We send the bank account details to Stripe, and when Stripe verifies the user, it already knows that there is a bank account connected to this user. If verification went well, the user gets automated payouts. There is a possibility to customize this as well as get instant payouts.
At Impressit, we see every new challenge as an opportunity to learn and develop. And our work with ESOOKO provided us with a few challenges that gave us priceless experiences that we can use in the future.
We believe that ESOOKO’s ideas of sustainability are the future of online fashion retail, and we are sincerely happy that we had an opportunity to contribute to their success. You can find more details about our work with ESOOKO in the case study.
As for Stripe, I reckon that it is an excellent choice for finance and payment management. This platform has a lot of potential and, in the coming years, will offer its customers even more services.