Payit’s mobile apps are revolutionizing how Mexican residents pay bills and request and send money among friends and family. Initially a web-only way to pay rent, the founding team quickly realized that their customers were paying each other using the platform and developed Mexico’s first peer-to-peer payment network (available on Android and iOS), removing the need for wire transfers, checks, or visits to the ATM.
Today, Miguel Cervantes, Payit CTO, tells us how Payit has grown from a one-man development team to a fast-moving organization with an automated, bi-weekly release cadence to continuously ship high quality, secure apps to their passionate expanding customer base.
Tell us a little bit about your company and role.
We started Payit a couple of years ago to solve a big problem for Mexico’s residents: cash. Because of its geography and lack of infrastructure, Mexico has the biggest “cost” of cash transactions in the world. Consumers spend 2.3 billion pesos and 48 million hours simply accessing cash (getting to an ATM, waiting in line, and paying associated fees), and Mexico’s welfare program spends a significant portion of its funds in dispersion and logistics costs. Less than 30% of Mexico’s adult population has a debit account, but the vast majority have a smartphone (see Fletcher School’s Institute for Business in the Global Context (IBGC) – Tufts University report to learn more about the cost of cash in Mexico).
We’re serving two distinct audiences or situations where people heavily rely on cash, even living in the biggest cities: young adults, typically between 18–34, who frequently need to pay or request funds from friends (roommates, trips, small loans) and small business owners and shopkeepers who need to collect payments for goods. This “informal market” of business owners represents over half of the Mexican economy, but they’re historically largely cash-based.
With Payit, our goal is to revolutionize the way we do things, making them easier, better, and faster. We allow anyone with a smartphone to send or receive money, and we free business owners to accept any form of digital payment, from a simple credit or debit cards today to crypto currencies in the future.
Tell us about your app; has it evolved over time?
Before Payit, we were a software development company. As many developers know, this is an extremely cyclical business; sometimes you have tons of work, sometimes you don’t.
In one of those “sometimes not” phases, we decided to start a service to satisfy one of our own needs: making rent payment easier. After we released, we quickly realized that many people were sending money to each other, not just their landlords, and saw an opportunity to tackle a much bigger market and help our whole country.
Our app is simple; it allows people to securely pay and collect funds through their mobile phones. Users create a login using their cellphone number or Facebook account, link their bank accounts and debit cards, and can immediately start sending and requesting money, view payment requests, and more. Before finalizing a transaction, users must enter a unique PIN to ensure all of their transfers are approved and safe.
Why did you choose Xamarin?
I analyzed many technologies, basing my decision on four main criteria:
- Security and Stability: As a bank-like app, we needed to ensure that the technology let us have world-class security and stability. With Xamarin (and C#), we have flawless access to the key chain/key store and all .NET encryption functionality. .NET allows us to use several kinds of encryption systems with ease, including RSA1024 and AES256 to secure our communications (in addition to the SSL certificate).
- Performance and Productivity: We wanted performance both on the device in the form of a native experience, as well as in our own development processes. Xamarin.Forms gives us that fully native look and feel and reduces our release cycles.
- Scalability: We looked for technology with an active, growing community and great documentation.
- TCO: We’re a start-up and keeping our burn rate as low as possible is top of mind. One language (C#) ruling both the backend and the front end reduces our need to staff and train a huge development team. Our developers move from the backend to the front end with ease, and share their knowledge and code between both worlds.
At the end of the day, we found our solution in Xamarin, particularly Xamarin.Forms.
How did you get up to speed with mobile development?
Our team used C# for desktop apps, so our ramp-up was easier. Plus, since everything is C#, we could share snippets and experiences across the team to get things done quickly.
What is the most compelling or exciting aspect of your app.
Beyond enabling mobile payments for the first time in Mexico, what makes us different is our commitment to mobile quality and security for our customers and fellow citizens.
We’ve taken care to create a fully native UX and invested in mobile DevOps processes. On the security side, we store all personal bank information, including credit cards and account numbers, on the device (with encrypted distributed key methods and additional security layers), not on our servers.
We know that it’s not a matter of if, but when, we’ll face hack attacks, and having this distribution ensures we don’t have a “gold mine” of users’ financial data on our servers. In our eyes, the best person to have your personal and sensitive information is you.
Describe your development process and team structure; how long did it take you to release, from design to deploy?
We have four developers, including myself: one dedicated to the app (to me, it’s amazing that we only need one!), one dedicated to the core backend, one to the bank backend, while I usually switch between the app and the backend. A junior developer who helps us gather statistics and business analytics for reporting and a UX designer round out the team.
On the development side, everything is C#. We use Visual Studio 2017 Tools for Xamarin, Windows Server 2012 R2, and SQL Server Management Studio. We virtualize our test environment with Hyper-V, and all of our user profile data is stored in Microsoft SQL Server (transactions, profiles, sessions, friends, and wall events). I’ve worked with many different databases (MySQL, Derby, and Oracle) and found Microsoft SQL Server most smoothly runs big queries with a lot of data.
From writing T-SQL queries to the integration with Visual Studio and availability of tools like SQL Server Management Studio (especially the Profiler) for debugging ORM generated queries, any data we want is immediately available.
For our mobile apps, we handle bank transactions, so it’s imperative that the app is bug free and makes users feel safe, or we’ll immediately lose their trust. We released our first version in 2016, but it would have taken eons without Xamarin. At the beginning of the project, we were a one-man army (me!), and having multiple languages and multiple IDEs would have taken me years to learn, code, debug, and deploy. Today, we share 98% of our code across Android and iOS (we have a few custom renderers that use C# native APIs).
As I mentioned, we’ve invested in mobile DevOps processes, including Visual Studio Mobile Center Preview for CI, and we release a new build daily, with a beta candidate for our internal testers every Thursday. Our release frequency depends on what we want to achieve; after a big new release, we typically ship updates every two weeks.
With each production release, HockeyApp crash reports and statistics help us understand what’s happening with the app; if it’s running correctly, how many users are crash-free, which issues are happening most frequently, and so forth. We use this information to learn and consistently improve.
What have your users said about your app?
We have 60K active users and everyone we talk to loves the app, but we’re happier that more than 70% of our users come from referrals.
Our users don’t just like our app, they’re so passionate about it they share it with their friends! For an app like ours, virality is critical.
What’s your team planning to build next? Why?
We have a lot planned. Our goals have always been extremely ambitious. We’ve achieved great milestones, but still have a lot of work to do.
We’re in the process of migrating our .NET Framework to .NET Core, and we’re researching the best Azure Machine Learning algorithms to replace our existing “State Machine AntiFraud System” (what we’ve named our in-house system, which limits us to simple rules). We want to combine our experience and expertise with Azure Machine Learning and Azure infrastructure to create a peer-to-peer specific antifraud system that learns from our users.
Going forward, we’d also like to incorporate chatbots and a more conversational UI.
What advice do you have for developers or organizations who are just starting mobile development?
“Cross-platformize” your projects! Don’t be afraid of cross-platform native solutions. For us, our path changes a lot day-to-day. Because we share so much code across platforms, we’re able to quickly address changes in our market and the needs of our users.
As a new developer, you’ll save a lot of time and money by not learning platform-specific languages and, instead, focusing on reaching as many platforms as possible as quickly as possible. The future of app development is the ability to run on every single device, and the less code you have to write, the better.
Lastly, platform-specific look and feel (UX) matters: users will recognize native quality, or non-native quality, and this has large impacts on your engagement/retention.
Visit xamarin.com/download to get started and explore xamarin.com/customers to get inspired.