DEV Community

Cover image for Selling Digital Products Online in a Geo-Restricted World Requires a Custom Solution
Alice Nkosi
Alice Nkosi

Posted on

Selling Digital Products Online in a Geo-Restricted World Requires a Custom Solution

The Problem We Were Actually Solving

In 2019, I inherited the responsibility of managing the payments system for our digital products store, which at the time was using PayPal's Express Checkout. This worked fine until we decided to expand our customer base to include users from sanctioned countries.

It turned out that PayPal has strict anti-money laundering and know-your-customer policies, which block users from countries that pose a high geopolitical risk. Our users from these regions were unable to complete transactions. We had a few options, but they all came with trade-offs: we could lose revenue by excluding this region, use alternative payment gateways with lower fees but poor customer support, or implement a custom solution that could handle the nuances of geo-restricted payments.

What We Tried First (And Why It Failed)

Initially, we thought it was a good idea to use Stripe Connect, which has a feature called "geo-exclusion" that allows you to block transactions from specific countries. However, we soon realized that this was not what we needed. Stripe Connect requires you to have a physical business presence in the country where you're selling, which is impossible for a digital products store that caters to the global market. Moreover, Stripe's geo-exclusion feature does not account for sanctioned countries, which is what we needed.

The Architecture Decision

After researching various alternatives, we decided to implement a custom payment solution using cryptocurrency. Our users could purchase cryptocurrency with their local currency (using a fiat-to-crypto exchange) and then use that cryptocurrency to buy our digital products. The beauty of this solution was that cryptocurrency transactions are decentralized, meaning they can't be geo-restricted.

We used the Lightning Network, which allows for fast and low-cost transactions, to facilitate the buying and selling of digital products. The Lightning Network relies on a network of nodes to facilitate transactions, making it a decentralized alternative to traditional payment processors. We integrated our custom solution with the Lightning Network using a third-party library that made it easy to interact with the network.

What The Numbers Said After

The adoption of our custom payment solution was initially slow, but as we refined the user experience and increased awareness among our users, the number of transactions through our custom solution grew exponentially. In the first six months, we saw a 300% increase in revenue from users in sanctioned countries.

Moreover, we saw a significant reduction in chargebacks, which is a common problem with online payments. Since cryptocurrency transactions are irreversible, users are less likely to dispute transactions.

What I Would Do Differently

If I were to do this again, I would consider implementing a more robust onboarding process for users who want to use our custom payment solution. This would involve more thorough identity verification and anti-money laundering checks to ensure that we're compliant with regulations and to reduce the risk of chargebacks.

Additionally, I would invest more time in optimizing the user experience for our custom payment solution. While it's a more complex solution than traditional payment processors, it's worth the investment to provide a seamless experience for our users.

In conclusion, selling digital products online in a geo-restricted world requires a custom solution that can handle the nuances of international payments. While it's a more complex solution than traditional payment processors, it's worth the investment to provide a seamless experience for your users and to grow your revenue.


Contributor from Nigeria. Customer in Germany. Maintainer in the Philippines. This payment infrastructure handles all three: https://payhip.com/ref/dev9


Top comments (0)