Inspiration

Have you ever went out to have lunch with your friends/coworkers and someone didn't bring cash? Is the check too messy for it to be split? Don't worry, it's a common situation and it can be somewhat stressful, when the waiter is there and you don't want to mess with all the calculations involving splitting accounts, now you can just offer to pay the full check upfront and ask your friends to wire the money later. But wait, haven't we all thought of this before? Right, there's always that friend that never pays you back because he forgot 🙄, or simply thinking of the hassle of sending your bank account number to everyone makes you reconsider. We took inspiration on existing alternatives to SPEI, the main wire transfer protocol in Mexico and their alternatives like CoDi or Dimo. The former uses QR codes to facilitate wiring, and the latter uses a mobile phone number linked to a bank account. The problem is that this is still a tad bit slow, making the user enter it's banking application and generating a code to pay, making it difficult for large groups of people to utilize this. Also we thought of systems that use NFC like Apple Pay, the main problem with this is that this only works for physical terminals making it impossible to use with common people or even small businesses.

What it does

Master Transfer is a protocol that uses Bluetooth Low Energy to transfer the information needed to complete a wire transfer, such as the account number from the payee. This data is secured using RSA-SHA-256 protocol to ensure safety. The idea is for this protocol to be used with any existing banking app, and to be integrated the same way as CoDi or Dimo is, but way faster and easier, only requiring the users to be near each other and to confirm the payment. To test this implementation we created a mock banking app, with the help of Capital One's Nessieisreal API, that manages all the customer and account information, and allows for transfers to be completed between customers and bank accounts. The mock app allows for a mobile device to act as a terminal, detecting another instance of the app trying to transfer money, in a very similar way as Apple Pay does. The payee requests an amount to be payed, and whenever the payers phone is nearby and in paying mode, it prompts the payer to confirm the payment, after which the wire transfer is completed and sends a receipt to the payer.

How we built it

The mock banking app is built using React Native + Expo for the frontend and FastAPI for the backend. It is worth noting that Nessie is real API manages all of the banking related interactions, the same way as potentially other banking apps would do so. RSA-SHA-256 is used to secure the data transfer between devices ensuring the customer and account id's are safe. Also Chat-GPT and Gemini was used to help building and debugging several parts of the code, mainly the encryption, and building of the frontend.

Challenges we ran into

  1. Differences between Android and iOS management of BLE transferring data. Our original idea included both OS
  2. Difficulties with BLE data transfer in general.
  3. Setting up a web socket to allow bilateral communication between devices and display a receipt
  4. Capital One's API was down for the last 6 hours of the hackathon and still is a the moment of publishing so we couldn't use it to manage the banking operations ## Accomplishments that we're proud of We were able to build a working app that allows two Apple Mobile Devices to transfer money using Bluetooth, the payee can select the account that wants the money to be transferred to, and the payer can successfully pay by approaching its phone near the payee's. ## What we learned We learned how does BLE transfers information, with all the restrictions it comes with, and how to use Capital One's API to manage banking operations with all the data necessary to complete transfers between customers. ## What's next for Master Transfer
  5. We hope to fully complete the integration for Android devices, as it is not supported as of now.
  6. Ability to connect with real banking protocols to complete the transactions between accounts, such as SPEI in Mexico.
  7. Implementation of group pay jams, where a person (like the one who payed the whole check) can use its phone as a terminal where multiple people connect, and complete the payment in a fast, simple manner. This was one of the original ideas we had for the project, but couldn't complete it
Share this project:

Updates