{"id":32839,"date":"2017-08-09T13:04:18","date_gmt":"2017-08-09T20:04:18","guid":{"rendered":"https:\/\/blog.xamarin.com\/?p=32839"},"modified":"2017-08-09T13:04:18","modified_gmt":"2017-08-09T20:04:18","slug":"payit-brings-peer-peer-payments-mexico-mobile-devops-cloud","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/xamarin\/payit-brings-peer-peer-payments-mexico-mobile-devops-cloud\/","title":{"rendered":"Payit Brings Peer-to-Peer Payments to Mexico with Mobile DevOps and the Cloud"},"content":{"rendered":"<p>\t\t\t\t<em>Visual Studio Mobile Center is now Visual Studio App Center. <a href=\"https:\/\/devblogs.microsoft.com\/appcenter\/introducing-visual-studio-app-center\/\" rel=\"noopener\" target=\"_blank\"><em>Learn more here<\/em><\/a>.<\/em>\n&nbsp;\n<a href=\"https:\/\/www.payit.mx\/\">Payit<\/a>\u2019s mobile apps are\u00a0revolutionizing\u00a0how Mexican residents pay bills and request and send money among\u00a0friends 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&#8217;s first peer-to-peer payment network\u00a0(available on\u00a0<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.PayIt.Droid\">Android<\/a>\u00a0and\u00a0<a href=\"https:\/\/itunes.apple.com\/mx\/app\/payit\/id1081256472?l=en&amp;mt=8\">iOS<\/a>), removing the need for wire transfers, checks, or visits to the ATM.<\/p>\n<p>Today, Miguel\u00a0Cervantes,\u00a0Payit\u00a0CTO, tells us how\u00a0Payit\u00a0has\u00a0grown\u00a0from\u00a0a one-man development\u00a0team\u00a0to\u00a0a fast-moving organization with an\u00a0automated,\u00a0bi-weekly release\u00a0cadence to continuously ship high quality, secure apps to their\u00a0passionate expanding customer base.<\/p>\n<h3>Tell us a little bit about your company and role.<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/Picture1.png\" alt=\"Payit app on iPhone\" width=\"200\" class=\"alignright size-full wp-image-32845\" \/>We started\u00a0Payit\u00a0a\u00a0couple of years ago\u00a0to solve a big problem for Mexico\u2019s\u00a0residents: cash.\u00a0Because\u00a0of its geography and lack of infrastructure, Mexico has the biggest \u201ccost\u201d of cash\u00a0transactions\u00a0in the world.\u00a0Consumers\u00a0spend 2.3 billion pesos and 48 million hours simply accessing cash (getting to an ATM, waiting in line, and paying associated fees),\u00a0and\u00a0Mexico\u2019s welfare program\u00a0spends a\u00a0significant portion of\u00a0its funds in dispersion and logistics costs.\u00a0Less than\u00a030%\u00a0of\u00a0Mexico\u2019s\u00a0adult\u00a0population has a debit account,\u00a0but\u00a0the vast majority have a smartphone\u00a0(see\u00a0<a href=\"http:\/\/fletcher.tufts.edu\/~\/media\/Fletcher\/Microsites\/Cost%20of%20Cash\/CCMEX-final-web.pdf\">Fletcher School\u2019s Institute for Business in the Global Context (IBGC) &#8211; Tufts University\u00a0report<\/a>\u00a0to learn more about the cost of cash in Mexico).<\/p>\n<p>We\u2019re\u00a0serving two\u00a0distinct\u00a0audiences or situations where\u00a0people\u00a0heavily\u00a0rely on cash, even living in the biggest cities:\u00a0young adults,\u00a0typically\u00a0between 18&ndash;34, who frequently need to\u00a0pay\u00a0or request funds from\u00a0friends (roommates, trips, small loans) and\u00a0small business owners and shopkeepers who need to collect payments for goods.\u00a0This \u201cinformal market\u201d\u00a0of business owners\u00a0represents over half of the Mexican economy, but they\u2019re historically\u00a0largely cash-based.<\/p>\n<p>With\u00a0Payit,\u00a0our goal is to revolutionize\u00a0the way we do things,\u00a0making them easier, better, and faster. We allow\u00a0anyone with a smartphone to send or receive money,\u00a0and\u00a0we\u00a0free\u00a0business owners\u00a0to\u00a0accept any form of digital payment,\u00a0from a simple credit or debit cards\u00a0today to\u00a0crypto currencies in the future.<\/p>\n<p>I\u2019m\u00a0Payit\u2019s\u00a0CTO,\u00a0and\u00a0I have experience with numerous languages and frameworks: a little\u00a0Obj-C and Java, as well as\u00a0web languages such as JavaScript \/ VB Script,\u00a0but most of my experience\u00a0is in\u00a0writing enterprise-level C# applications for desktop\u00a0(none targeting mobile platforms). Since our development team is small, I\u2019m actively coding with our developers on a daily basis.<\/p>\n<h3>Tell us about your app; has it evolved over time?<\/h3>\n<p>Before\u00a0Payit,\u00a0we were a software\u00a0development company.\u00a0As many\u00a0developers know,\u00a0this is\u00a0an extremely cyclical business; sometimes you have tons of work,\u00a0sometimes you don&#8217;t.<\/p>\n<p>In one of those\u00a0\u201csometimes not\u201d\u00a0phases,\u00a0we decided to start a service to satisfy one of our\u00a0own\u00a0needs: making\u00a0rent payment easier.\u00a0After we released,\u00a0we quickly\u00a0realized that\u00a0many\u00a0people\u00a0were sending\u00a0money to\u00a0<i>each other<\/i>, not just their landlords, and saw an\u00a0opportunity to tackle a\u00a0much\u00a0bigger market\u00a0and\u00a0help our whole country.<\/p>\n<p>Our app is simple; it allows people to\u00a0securely pay and collect funds\u00a0through their mobile phones. Users create a login\u00a0using their\u00a0cellphone number\u00a0or\u00a0Facebook\u00a0account, link their bank accounts and debit cards, and can immediately start sending and requesting money, view payment requests, and more. Before\u00a0finalizing a transaction,\u00a0users\u00a0must enter a\u00a0unique\u00a0PIN to ensure all\u00a0of their\u00a0transfers are approved and safe.<\/p>\n<h3>Why did\u00a0you choose Xamarin?<\/h3>\n<p>I analyzed\u00a0many technologies,\u00a0basing my decision on four main criteria:<\/p>\n<ul>\n<li><b>Security and Stability<\/b>: As a bank-like\u00a0app,\u00a0we needed to ensure that the technology let us have world-class security\u00a0and stability.\u00a0With\u00a0Xamarin\u00a0(and C#),\u00a0we have flawless access to the key chain\/key store\u00a0and all\u00a0.NET encryption functionality.\u00a0.NET allows us to use\u202fseveral kinds of encryption systems with ease, including RSA1024 and AES256\u00a0to secure our communications (in addition to the SSL certificate).<\/li>\n<li><b>Performance and Productivity<\/b>:\u00a0We wanted performance\u00a0both\u00a0on the device in the form of a native experience,\u00a0as well as in\u00a0our own development processes.\u00a0Xamarin.Forms\u00a0gives us that fully\u00a0native look and feel\u00a0<i>and<\/i>\u00a0reduces our\u00a0release\u00a0cycles.<\/li>\n<li><b>Scalability<\/b>:\u00a0We looked\u00a0for technology with an\u00a0active, growing\u00a0community and great documentation.<\/li>\n<li><b>TCO<\/b>:\u00a0We\u2019re a start-up and keeping our\u00a0burn rate\u00a0as low as possible\u00a0is top of mind. One language (C#) ruling\u00a0both the\u00a0backend and the front end reduces our need to staff and train a huge development team. Our developers move from the backend\u00a0to the front end with ease, and share their knowledge\u00a0and\u00a0code between both worlds.<\/li>\n<\/ul>\n<p>At the end of the day, we found our solution in Xamarin, particularly\u00a0Xamarin.Forms.<\/p>\n<h3>How did you get up to speed with mobile development?<\/h3>\n<p>Our team used C#\u00a0for\u00a0desktop apps, so our ramp-up was easier. Plus, since\u00a0<i>everything<\/i>\u00a0is C#, we could\u00a0share snippets\u00a0and\u00a0experiences\u00a0across the\u00a0team\u00a0to\u00a0get things done\u00a0quickly.<\/p>\n<h3>What is the most compelling or exciting aspect of your app.<\/h3>\n<p>Beyond enabling mobile payments for the first time in Mexico, what makes us different is\u00a0our commitment to\u00a0mobile\u00a0quality and security for our customers and fellow citizens.\u00a0<\/p>\n<p>We\u2019ve taken care to create a fully native UX and invested in mobile DevOps processes. On the security side, we store\u00a0all\u00a0personal\u00a0bank information, including credit cards and account numbers,\u00a0on the device\u00a0(with encrypted distributed key methods\u00a0and additional security layers),\u00a0not on our servers.<\/p>\n<p>We know that it\u2019s not a matter of if, but when,\u00a0we\u2019ll\u00a0face hack attacks,\u00a0and having this distribution\u00a0ensures we\u00a0don\u2019t have a\u00a0\u201cgold mine\u201d of users\u2019 financial data\u00a0on our servers.\u00a0In our eyes, the best person to have your personal and sensitive information is\u00a0you.<\/p>\n<h3>Describe your development process\u00a0and team structure; how long did it take you to release, from design to deploy?<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/Picture2.png\" alt=\"Payit app on Android\" width=\"195\" class=\"alignright size-full wp-image-32846\" \/><\/p>\n<p>We have\u00a0four developers, including myself: one dedicated to the app (to me, it\u2019s amazing that we only need one!), one\u00a0dedicated to the core backend, one to the bank backend, while\u00a0I\u00a0usually switch\u00a0between the\u00a0app and the\u00a0backend. A\u00a0junior developer\u00a0who helps\u00a0us\u00a0gather\u00a0statistics and\u00a0business analytics for reporting\u00a0and a UX designer round out the team.<\/p>\n<p>On the development side, everything is C#. We use Visual Studio 2017 Tools for Xamarin,\u00a0Windows Server 2012 R2, and SQL\u00a0Server\u00a0Management Studio. We\u00a0virtualize our test\u00a0environment with Hyper-V, and all of our\u00a0user profile\u00a0data is stored in\u00a0Microsoft SQL Server\u00a0(transactions, profiles, sessions, friends, and wall events).\u00a0I\u2019ve worked with many\u00a0different databases (MySQL, Derby,\u00a0and Oracle) and\u00a0found\u00a0Microsoft SQL Server\u00a0most\u00a0smoothly runs big queries with a lot of data.\u00a0<\/p>\n<p>From writing\u00a0T-SQL\u00a0queries\u00a0to the\u00a0integration with Visual Studio\u00a0and\u00a0availability of tools like SQL\u00a0Server\u00a0Management Studio (especially the\u00a0Profiler) for debugging\u00a0ORM generated queries,\u00a0any data we want is immediately available.<\/p>\n<p>For\u00a0our mobile apps,\u00a0we handle bank transactions, so it\u2019s imperative that the app is bug free\u00a0and makes users feel safe, or we\u2019ll 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,\u00a0we were a\u00a0one-man army (me!),\u00a0and\u00a0having multiple languages and multiple IDEs would have taken me years to learn, code, debug, and deploy.\u00a0Today, we share 98% of our code across Android and iOS (we have a few\u00a0custom\u00a0renderers\u00a0that use C# native APIs).<\/p>\n<p>As I mentioned, we\u2019ve invested in mobile DevOps processes, including Visual Studio Mobile Center Preview for CI, and we release a new build daily, with a beta candidate\u00a0for our internal testers\u00a0every Thursday.\u00a0Our release frequency depends on what we want to achieve; after a big new release, we typically ship updates every two weeks.<\/p>\n<p>With each production release,\u00a0HockeyApp\u00a0crash reports and statistics\u00a0help us understand what\u2019s happening with the app; if it\u2019s\u00a0running correctly,\u00a0how many\u00a0users\u00a0are crash-free, which\u00a0issues\u00a0are happening most frequently, and so forth. We use this information to learn and consistently improve.<\/p>\n<h3>What have your users said about your app?\u00a0<\/h3>\n<p>We have 60K\u00a0active\u00a0users and everyone we talk to loves\u00a0the\u00a0app,\u00a0but we\u2019re\u00a0happier\u00a0that\u00a0more\u00a0than 70% of our users come from referrals.<\/p>\n<p>Our users don\u2019t just like our app,\u00a0they\u2019re so passionate about it\u00a0they share it with their friends!\u00a0For an app like ours, virality is critical.<\/p>\n<h3>What\u2019s your team planning to build next? Why?<\/h3>\n<p>We have a lot planned. Our goals have always been extremely ambitious.\u00a0We\u2019ve achieved great milestones, but still\u00a0have\u00a0a lot of\u00a0work to do.<\/p>\n<p>We\u2019re in the process of\u00a0migrating our .NET\u00a0Framework to .NET\u00a0Core,\u00a0and we\u2019re researching the best Azure Machine Learning\u00a0algorithms\u00a0to replace our existing\u00a0\u201cState\u00a0Machine\u00a0AntiFraud\u00a0System\u201d\u00a0(what we\u2019ve 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.<\/p>\n<p>Going forward, we\u2019d also like to incorporate chatbots and a more\u00a0conversational UI.<\/p>\n<h3>What advice do you have for developers\u00a0or organizations\u00a0who are just starting mobile\u00a0development?<\/h3>\n<p>\u201cCross-platformize\u201d\u00a0your projects!\u00a0Don\u2019t be afraid of cross-platform\u00a0native solutions. For\u00a0us, our path changes a lot day-to-day. Because we share so much code across platforms, we\u2019re able to quickly address changes in our market and the needs of our users.\u00a0<\/p>\n<p>As a new developer, you\u2019ll save a lot of time and money\u00a0by not\u00a0learning platform-specific languages\u00a0and, instead,\u00a0focusing on reaching as many platforms as possible\u00a0as quickly as possible.\u00a0The future of\u00a0app development\u00a0is the ability to\u00a0run on\u00a0every\u00a0single\u00a0device, and the less code you have to write, the better.<\/p>\n<p>Lastly,\u00a0platform-specific look and feel (UX) matters:\u00a0users will\u00a0recognize native quality, or non-native quality,\u00a0and this has large\u00a0impacts on your\u00a0engagement\/retention.\n&nbsp;\n&nbsp;\n<i>Visit\u202f<a href=\"http:\/\/xamarin.com\/download\"><i>xamarin.com\/download<\/i><\/a>\u202fto get started and explore\u202f<a href=\"http:\/\/xamarin.com\/customers\"><i>xamarin.com\/customers<\/i><\/a>\u202fto get inspired.<\/i>\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visual Studio Mobile Center is now Visual Studio App Center. Learn more here. &nbsp; Payit\u2019s mobile apps are\u00a0revolutionizing\u00a0how Mexican residents pay bills and request and send money among\u00a0friends 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&#8217;s [&hellip;]<\/p>\n","protected":false},"author":564,"featured_media":32842,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[9,4],"class_list":["post-32839","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developers","tag-case-studies","tag-xamarin-platform"],"acf":[],"blog_post_summary":"<p>Visual Studio Mobile Center is now Visual Studio App Center. Learn more here. &nbsp; Payit\u2019s mobile apps are\u00a0revolutionizing\u00a0how Mexican residents pay bills and request and send money among\u00a0friends 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&#8217;s [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/32839","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/users\/564"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/comments?post=32839"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/32839\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/media?parent=32839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/categories?post=32839"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/tags?post=32839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}