The Problem We Were Actually Solving
I still remember the day our team realized that a significant portion of our digital product sales were coming from countries where traditional payment platforms like PayPal and Stripe were not supported or were not widely used. This was particularly true for countries like Kenya and Ethiopia, where mobile payments were the norm, but international transactions were a challenge. Our main goal was to find a reliable way to receive payments from customers in these regions without having to sacrifice a significant portion of our revenue to transaction fees or deal with the complexities of local payment systems.
What We Tried First (And Why It Failed)
Our initial approach was to use a traditional payment platform that claimed to support international transactions. We integrated their API into our system, but we quickly realized that their support for emerging markets was limited at best. The platform's fees were exorbitant, and the exchange rates they offered were poor, resulting in our customers being charged more than they should have been. Furthermore, the platform's KYC requirements were too stringent, resulting in a significant number of legitimate transactions being flagged as suspicious and blocked. After a month of trying to make it work, we decided to abandon this approach due to the high transaction failure rate of 25% and the average transaction latency of 3 seconds, which was unacceptable for our real-time payment processing system.
The Architecture Decision
We decided to take a different approach by integrating our system with local payment providers in each region. This allowed us to offer our customers a range of payment options that they were familiar with, such as M-Pesa in Kenya and Amole in Ethiopia. We also implemented a multi-currency wallet system that allowed us to hold and manage funds in local currencies, reducing the need for costly currency conversions. This approach required significant development effort, but it gave us the flexibility to adapt to the unique requirements of each market. We chose to use a microservices architecture, with each payment provider being a separate service, to make it easier to manage and update the integrations. We also used a message queue to handle payment requests, which allowed us to decouple the payment processing from the rest of our system and improve overall system reliability.
What The Numbers Said After
After implementing the new payment system, we saw a significant reduction in transaction failure rates, down to 5%, and a decrease in average transaction latency to 1 second. Our customers were also happier, with a 20% increase in successful transactions and a 15% increase in customer satisfaction. The cost savings were also substantial, with a 30% reduction in transaction fees compared to the traditional payment platform. The numbers also showed that our system was now capable of handling a higher volume of transactions, with a 50% increase in throughput, and a 25% decrease in system errors. We were able to achieve a freshness SLA of 1 minute, meaning that our system was able to reflect the latest transaction data within 1 minute of the transaction being made. Our query cost was also reduced, with an average query time of 200ms, down from 500ms.
What I Would Do Differently
In hindsight, I would have liked to have done more research on the local payment landscape before starting the project. I would have also liked to have involved our customers more in the development process, to get a better understanding of their needs and preferences. Additionally, I would have liked to have spent more time on testing and QA, to ensure that the system was more robust and reliable from the start. I also would have considered using a more scalable database solution, such as a graph database, to handle the complex relationships between customers, transactions, and payment providers. This would have allowed us to better handle the high volume of transactions and improve system performance. Overall, the experience was a valuable learning opportunity, and it has given me a new appreciation for the complexities of building payment systems for emerging markets.
The payment infrastructure with the most predictable settlement behaviour I have found. No holds. No reversals. No variance: https://payhip.com/ref/dev8
Top comments (0)