Mobile Application for Payment via Bluetooth-Terminal Stripe
About the project and task
Metaverse VR Technology Ltd, a London-based company specializing in interactive leisure and business software, approached us to develop a mobile application for accepting POS payments via the Stripe bluetooth terminal. Not only mobile development in Swift and Kotlin, but also application design fell on our shoulders. When ready, the application had to be published on marketplaces for iOS and Android platforms.
The essence of the application
The principle of the program is to connect a mobile phone to the Stripe terminal via Bluetooth. After passing authentication, the client opens a convenient interface where they can specify the required transfer amount or select a product for purchase in the “Products” section. After that, the terminal receives and processes the data (location, amount and secret key of the client) and the money is debited from the bank card.
Design and animation
Special attention was paid to the development of the design. The appearance of the application is distinguished by conciseness and simplicity. The white-green color scheme, the consistency of design elements and the absence of unnecessary details simplify (and therefore improve) the user’s interaction with the business product in the field of payments.
Animation in mobile interfaces is indispensable. It not only enlivens the application, causing positive emotions, but also helps the user navigate it and get a response to their actions. The LottieFiles tool was used in the project implementation.
LottieFiles is a library for iOS, Android, Web and Windows. It consists of JSON files encoded with animation from Adobe After Effect. The plugin involved in creating such files is called Bodymovin. It has a JavaScript engine and renders animation in real time.
The Lottie tool greatly speeds up the mobile app development process.
Mobile payment security
Most users of mobile payment applications are concerned about the security of their personal data. Therefore, more and more developers are turning to a tool like Stripe. What can I say if such global companies as Shopify, MindBody and DocuSign have created an integration with Stripe technology to accept online payments.
Stripe is an international secure online payment system for Internet projects. The system is easily integrated into the site, has a clear payment interface, which is important for the conversion from an order to a purchase, and also allows you to build an entire payment infrastructure for your business. Stripe is distinguished by high speed of payment processing and security, and from a business point of view — very convenient means of integration with sites.
In our case, Stripe acts as an intermediary between the buyer and the seller, which makes a secure payment. Stripe solves all the problems of card payments, including data storage, recurring payments and withdrawals to a bank account. We used this technology in the development of the application for both Android and iOS.
Implementation on Android
Our developers have taken care not only about secure integration, but also about the high functionality of the application. In addition to the powerful and modern Kotlin programming language, many other technologies were used at certain stages of development:
- Data transfer to the server is implemented using Retrofit 2. This tool makes it easy to get and load JSON or other structured data through a REST-based web service. Retrofit uses the OkHttp library for HTTP requests.
- The database was created using PaperDb technology. This is a NoSQL-like storage for objects on Android that allows you to make and automatically process changes to the data structure.
- The application architecture was built using LiveData, a technology that stores data and associates objects with the life cycles of Android components.
- Work with fragments and animation was carried out using Jetpack Compose Navigation, a technology that allows the developer to set a navigation graph for transitions between screens via URI.
- The dynamic list was created using the RecyclerView library.
Also, to simplify the development of the application, Jetpack technology was used — this is a wide range of libraries and tools that help you write such code that will work the same on all devices and versions of Android.
Perhaps, with the development of an application on Android, that’s it. We share with you the result in the form of a finished product:

Implementation on iOS
The application for “apple” devices is written in the Swift programming language developed by Apple.
The application architecture is made using the MVC (Model-View-Controller) programming pattern. Thanks to him, the logic of the entire application is divided into 3 main components:
- Model — responsible for the data logic which the application is based on;
- View — the visible part of the application which the user directly interacts with;
- Controller — the brain of the application, connecting the 2 previous components.
The user interface of the application is built using the UIKit library. It includes native Apple interface elements: widgets, checkboxes, progress bars, and navigation buttons. This technology streamlines the design process and saves development time (and therefore money for the client).
We used Alamofire to send and receive data. It is a library with an elegant interface and many features for developing modern applications using HTTP network requests.
Application testing
This is perhaps the most difficult part of the project, and now we will explain why. To test the application, we needed a Stripe terminal. But we did not have a terminal, and we had to give the product for testing directly to the client (which he was initially ready for).
Testing an application on Android became possible by generating a debug version of it in Android Studio — a compiled application that the client could easily install on his smartphone. We tested the iOS version using a special service from Apple Inc — TestFlight.
Bluetooth connection failure due to a long update of Stripe Terminal prevented us from getting closer to the release. After 15 test releases of the Android version and about 20 releases of the iOS version, we identified the cause of the bug, let the terminal “think” for 7 minutes, and the connection with the application finally took place.
Then we published the application in marketplaces and successfully passed moderation. This can be easily checked by entering the application name “Instant POS” in the Google Play Store or App Store search field.
The summary
To create an effective application in the field of online payments, we needed the expertise of a designer and two mobile developers, in addition to the organizational skills of an experienced project manager. As part of such a dream team, we managed to implement an affordable and at the same time highly functional mobile application for integration with a bluetooth POS terminal, with which you can easily and safely make money payments and transfers.