Why use a bill splitting app?
Picture it! You’re hanging out in a restaurant with your friends. Your meal is served and you are able to share this moment with your friends, enjoying their company and relaxing over some drinks. Inevitably you finish your food and the waiter comes over with the bill. To speed up the process, you decide to pay for everyone and now the real trouble starts? You really want to avoid the awkward moment of calculating your friends’ debt and then collecting the cash. There is always (literally ALWAYS) an embarrassing moment when someone says that something is wrong with the bill, the price on the bill is different than on the menu or the question is asked “Can I transfer you the money?”. Not only do you not know when you will get it, but there is a potential outcome of you never getting it back at all.
If you can’t imagine that, you should probably take a look at “Friends” episode 5, season 2.
OCR technology brings the solution
These are only examples of the problems for which our application can have a solution. The FMCify app was originally created by Freeport Metrics team as a project for PSD2 Challenge contest. The challenge was organized by Citibank and the app has been integrated with Citi APIs. Our performance during the contest allowed us the opportunity to present our bill splitting app to a wider general audience and we can not be more proud of our team and the work that they have done so far.
What sets us apart from other bill splitting apps is our optical character recognition feature. By using the Mobile Vision framework provided by Google we are able to extract text from a picture taken by your phone’s camera. In real time, the app is able to synthesize the information and apply it to our apps user friendly interface. Unlike other apps that force you to manually type in every entry and are prone for user error, we offer you the same service with just a simple click from your camera. It’s that easy, just point your camera at the bill and click! Our algorithm will do the rest. You will know exactly when our app is working because it highlights the block of text being recognized and marks it with a color frame all in real-time. This is possible thanks to the Google framework and the algorithms we designed for detecting items and their prices on the bill. Sounds easy, right? If you want to try for yourself or are interested with OCR, start with this tutorial provided by Google Codelabs.
FMCify offers an easy, efficient way to take care of frequent bill splits among friends, keep track of any debts and make in-app payback transactions.
We might live in a sharing economy, but some things are better left unshared. Avoid those awkward moments with FMCify bill splitting app and share what really matters the time you are able to enjoy with others. Main features of FMCify bill splitting app would include group expense tracking, paying off debts, controlling any unclaimed funds as well as sending personal reminders to friends regarding any money they still owe.
“Budget tracking is nowadays essential if we want to keep finances healthy. Almost everyone knows it, but the hardest part is actually doing it right. To make it more comfortable, we believe image processing will help automatically identify products and their prices when scanning the bill to speed up the process. We used Google Vision API to make it happen and it was the hardest part of the project, I must say”
Magda Baracz, Developer at Freeport Metrics
Splitting bills made easy
Register with just a few clicks
The app users are registered with the Firebase Authentication Service. To complete the registration process you only need your email, name, last name, and password. Easy peasy, right?
Authentication with Citibank
After the registration process, users are redirected to the native web browser to log in to the Citibank account and authorize FMcify. When returning to the app, a user needs to select a proper Citibank account which is linked to FMcify.
Where is the info stored?
The access_token and refresh_token are stored in an encrypted format that is located on the device in Shared Preferences. AccountId is stored as a part of the user profile, in an encrypted format in Firebase.
That's all fine, but how can we add friends?
Users can add friends in two ways:
- by entering their email address
- or scanning a QR code from their friends’ devices
They just need to confirm the invitation either in the app or by opening the link in their email. Firebase configuration will only enable User 1 (let’s say it’s Ann) to obtain the account ID (needed for payback transactions) of User 2 (let’s call him John) only if both Ann and John are connected.
It’s all about paying back
Payback transactions can be made in-app and outside of the app. An in-app transaction can be made with a valid access_token or at least refresh_token. For security reasons, a fingerprint authentication can be added to confirm the transfer. Transactions outside the app can be made using a given generated token which needs to be provided as a title of the transaction.
Identifying PayBack transactions
If Ann pays back by an in-app transaction, an instant push notification is sent to John. If Ann makes a transaction outside the app (manually/using a bank native app) with the correct title, John will be notified about payback transfer upon opening the app (a transaction list will be downloaded and filtered to find any payback transactions).
See our app demo video!
You may ask, how do I create a banking app?
Sorry, but we’re not going to give you a ready answer and provide you with another piece of content from the series “5 steps to make an amazing mobile banking app”. That wouldn’t be fair as we know that each application needs to be developed differently and most importantly, considering specific regulations of the industry it’s developed for.
We would be happy though to discuss your project and share our knowledge and experience with you. Just drop us a line!
Special thanks to the authors of the idea: Andrew Gauvin, Jakub Piasecki, Magdalena Baracz, Kacper Ruducha, Jacek Perżyło, Michał Lewandowski, Yulia Buyanova and the whole FM Team!