Skip to main content
Screenshot of iPago project

What iPago Was

This was 2018, and I was working on a fintech platform in Venezuela. iPago let people make digital payments using QR codes, manage invoices, and keep track of their transactions. For a lot of users, this was one of the more reliable ways to handle payments given how complicated the economic situation was at the time.

The Web App

I built the frontend for the web application. The whole thing was a tab-based dashboard: transactions, recharge, withdrawal, and profile, all accessible from one screen. The recharge flow alone had two completely different paths: credit card with six form fields, or bank transfer where you’d pick your bank, get account details, and confirm the transfer number after. Two separate user journeys living in one tab.

The transaction history showed income and expenses color-coded (green for incoming, red for outgoing), with date and transaction type filters. I built custom UI elements throughout: animated checkboxes with CSS3 transforms, custom select dropdowns with repositioned arrows, and minimalist bottom-border inputs. The landing page had a vanilla JS carousel I wrote from scratch, no library, three slides rotating every five seconds. We also had platform-specific behavior: if you opened the site on Android, you’d automatically get a modal inviting you to join the beta testing program.

The QR Code System

We started with an external service to generate the QR codes, which worked fine at first. But depending on someone else’s API for the core payment flow of a fintech app didn’t sit right with me, so I moved the whole thing to client-side generation. That way it was faster, worked offline, and we didn’t have to worry about a third party going down during a transaction.

The sharing part was my favorite. The landing page doubled as a QR display: if you opened a link with someone’s payment info in the URL, the page would detect it, swap the normal content out, and show their personal QR code ready to scan. One page doing two jobs.

Responsive Financial Tables

Financial data on mobile is tricky. You’ve got transaction amounts, dates, sender names, balances, all needing to be readable on a small screen. I went through a few rounds on the transaction table before I landed on something that actually worked well across devices. The tab navigation had to adapt too, going from a horizontal layout on desktop to a stacked view on mobile. When someone’s checking their balance on a phone, you really can’t afford to have numbers getting cut off or columns overlapping.

Account Security

For a fintech app, security features aren’t optional. I built a two-step registration flow: first screen collects email and ID, second screen handles password, security question selection, and confirmation. The profile page loads with all fields disabled by default, read-only, with explicit “Edit” links to unlock sections. There’s a dedicated account blocking page for theft or loss situations, with its own security verification. The whole blocking section sits in this orange warning area that’s impossible to miss.

The Electron Desktop App

We also built a desktop app using Electron for users who preferred a dedicated application. It had offline viewing capability, system notifications, and invoice management. I set up an auto-update system that handled updates in the background and notified users when a new version was ready, plus session caching so the app launched quickly without making you log in every time.

What It Meant

iPago ended up serving over 5,000 users. Seeing how people reacted to sending money and watching it show up in real time on the other person’s account, how easy it was to pay someone just by scanning a QR code at a business. That felt magical. I saw it firsthand working at events, and I’m really grateful the team gave me the chance to experience that. It completely changed how I saw what we were building.

Working on something similar?

I'd love to hear what you're building. For me, the best projects start with a good conversation, so feel free to reach out.

Let's Talk