During the Covid19 lockdown, my wife couldn’t go to a gym anymore so she started going to online classes with a fitness coach who lives in a different country. And paying for her services was a big challenge. It’s slow, expensive, and hard for non-tech-savvy people.
That’s how the idea of a simple page when anyone who provides online services could easily set up using their existing social media account, get an XRP wallet created for them automatically, and start receiving payments by sharing a link to their page or PayID was born.
Since online education is a booming industry and paying for classes cross-border is going to be a problem for more and more people I believe this idea has huge potential.
What it does
In short, it makes getting paid for your online services easily. In more detail:
- Creates a personal payment page with a short URL that looks like https://upay.page/konstantin and a PayID with the same username konstantin$upay.page.
- Generates an XRP wallet for you automatically and connects it to your new page and PayID.
- Let’s customize your public page, connect more crypto or bank accounts, and add services you provide. Think ridiculously easy to set up LinkedIn plus Shopify for your online services.
- You can share your upay.page/konstantin link with anyone and they can pay you easily within the page or by using your PayID.
- When someone pays you it automatically converts dollar amount in XRP and redirects a payer to XUMM wallet app.
- It also shows all your connected accounts on your public page so a payer can just copy an address that works best for them in case they use a wallet that doesn’t support PayID.
How I built it
There are three main parts I’ve built.
- PayID server that serves upay.page/konstantin requests made by wallets resolving PayID addresses like konstantin$upay.page. I’ve studied PayID server implementation published on [payid.org] to implement this part.
- Web App that I’ve built with Next.js. It serves web requests to upay.page/konstantin URLs and the landing page. And I’m using MySQL database to store users’ data.
- Nodejs API server that delivers the data to the Web App and handles XUMM integration.
Challenges I ran into
The biggest challenge was figuring out how to make a product for people who aren’t tech-savvy and are scared of crypto because it looks unfamiliar and complicated. And also making sure they are guided every step of the way.
From setting up a page in one click using their existing Google account, to automatically generating an XRP wallet for them and letting them add the services they can charge for by easily sharing a link to their page or a short and human-friendly PayID.
On the technical side, serving different types of responses on the same URL was something new to me. For instance, when a wallet tries to resolve a PayID it makes a request to upay.page/konstantin and the server returns a JSON payload. But when a user opens the same URL in their desktop or mobile browser it returns a web page.
Accomplishments that I'm proud of
I’m proud of how easy to use and how human friendly the product turned out to be. It has a simple UI that makes setting up a personal storefront for your online services a breeze.
And it makes working with crypto from setting up an account to sharing it and receiving payments in your currency a pleasant and frictionless experience. Making it that easy was the hardest part.
I’m also proud to play a role in bringing decentralized finance to the masses.
What I learned
I’ve learned a lot about how PayID works and I think it has great potential. I realized that I want to help bring that day when money moves like email closer to reality.
I’ve also learned more about XUMM Wallet API for requesting payments. It really simplifies payments.
What's next for upay
I plan to launch a public beta version to see people including my wife’s fitness coach start using it to reduce payment friction. And to integrate upay with different wallet providers and add fiat on-ramp and off-ramps to reduce payment friction even more. I also can’t wait when upay customers could utilize ODL to instantly transfer value using their native currencies.