Published: November 7, 2024
26 min read
In this article, you'll learn:
1
❓ What is an Android Payment Terminal?
2
⚙️ Understanding the Requirements for an Android Kiosk App Development
3
⚒️ Kiosk Application Development Process
4
🧩 Integration of Key Features into the Kiosk Application
5
🎨 Kiosk Application Design Considerations
6
📝 Agile Development for Kiosk Application
7
🔗 Ensuring Scalability and Maintenance of the Kiosk App
8
🗂️ How Stormotion Helped Milence?
9
💡 Takeaways
Ever noticed how unattended payment terminals have transformed modern interactions? From cafes and retail stores to EV charging stations, these devices are now essential tools across countless industries. But creating a smooth, reliable user experience — one that also integrates seamlessly with business workflows — requires more than just hardware.
Today’s payment terminals need user-friendly, adaptable kiosk app development services that manage everything from processing transactions to delivering real-time data insights and customer support.
Android-based payment terminals have emerged as a versatile solution for such needs. By leveraging Android’s flexibility, businesses can create tailored apps that meet the unique demands of their environment, whether that means easy-to-navigate interfaces, fast transactions, or compatibility with other enterprise systems.
In this article, we’ll explore what goes into Android kiosk application development, covering hardware capabilities, design considerations, and development strategies that ensure these devices enhance the user experience — all while keeping security and usability at the forefront.
Looking to dive straight into our case-based insights?
Or, if you’re interested in learning more about Android payment terminals, start with the section below!
Android payment terminals are versatile devices designed to handle transactions, data capture, and other business applications across various professional environments. Built on the familiar Android platform, they provide flexibility, security, and seamless integration with enterprise systems, making them ideal for various industries.
Android payment terminals provide a flexible, secure platform that can adapt to diverse business environments. By leveraging Android, we’re able to build a custom software that integrates seamlessly with enterprise systems.
Artem Manakov, Mobile Developer @ Stormotion
McDonald's uses self-service kiosks to reduce wait times and offer a more personalized experience for customers (video frame by Cuberto)
Android payment terminals come in different types, each suited to various business needs and ideal for a range of kiosks software development solutions.
According to Tilster study, 79% of customers prefer ordering through kiosks over interacting directly with staff, underscoring the increasing acceptance and demand for technology in customer service.
Let’s discuss the features that make Android terminals valuable tools for businesses!
Feature | Explanation |
---|---|
Rugged Hardware | Many Android terminals are built to withstand rough handling, environmental challenges, and frequent usage. Their durability often includes impact resistance, water-proofing, and dust-proofing certifications (e.g., IP65). |
Versatile Data Management and Security Compliance | With support for bill payment software and P2P app payment solutions, these terminals can handle diverse payment types while maintaining PCI PTS (Payment Card Industry PIN Transaction Security) compliance and using P2PE (Point-to-Point Encryption) to secure transactions. This capability is essential for effective custom POS software development. |
Compatibility with Enterprise Systems | Android platform makes it easy to build kiosk app that integrate with various third-party applications and back-end systems, enabling seamless interaction between front-end devices and ERP (Enterprise Resource Planning) systems or POS solutions. Additionally, custom POS software allows for unique business functionalities tailored to specific operational needs, while Android POS integration with existing infrastructure can streamline operations. |
NFC and Contactless Payment Support | These terminals facilitate NFC contactless payments and are compatible with digital wallets, making transactions faster and more convenient for customers. The POS reader functionality enhances versatility, catering to various payment methods. Terminal POS applications can be developed to leverage these capabilities fully. |
Smart POS Functionality | Android SmartPOS terminals include advanced features such as customer engagement tools and inventory management integration. Adaptability and ease of use of Android SmartPOS terminals enable businesses to build a robust custom POS system through custom POS development that meets their unique requirements. The POS software development capabilities facilitate seamless integration with various POS terminal applications, ensuring that businesses can efficiently manage their operations. |
📌 As you see, payment terminal application development is a powerful tool that allows companies to limit devices to specific applications or functions, providing enhanced security and control.
Based on our extensive expertise in Android app development services, we can affirm that one of the most popular types of Android payment terminal apps is the kiosk mode app. Let’s explore the main benefits of using Android kiosk mode for business operations.
📌 These benefits make Android kiosk mode an invaluable tool for businesses aiming to implement secure, scalable, and efficient digital solutions for self-service and POS apps.
Interested in leveraging the benefits of Android kiosk mode for your business? Contact us to learn how we can develop a secure, efficient kiosk solution tailored to your needs.
Next, we’ll look at two widespread Android-based payment terminals: Worldline Valina EP2 and Sunmi FT2, optimized for secure payment and enterprise use.
The Worldline Valina EP2 is a compact, Android-based payment terminal designed for unattended environments such as parking lots and EV charging stations.
Worldline Valina terminals enable businesses to integrate custom software, enhancing their service offerings (image by Wordline)
Some key specifications of Worldline Valina EP2 include:
Worldline’s Android-based system ensures compatibility with business strategies, allowing each company to build a kiosk application that extends its functionality beyond payment processing.
The Sunmi K2 Mini is a versatile, Android-based self-service kiosk terminal designed for industries such as retail, hospitality, and transportation. Its standout features make it an ideal choice for businesses seeking a powerful yet compact solution for self-service interactions.
Sunmi K2 Mini terminals allow companies to integrate custom kiosk software for their business needs (image by Sunmi)
Some key specifications of Sunmi K2 Mini include:
The Sunmi K2 Mini is a comprehensive solution for companies looking to create kiosk app. With Android kiosk mode and customizability, the Sunmi K2 Mini offers a reliable, self-service experience for businesses that need to streamline customer interactions in high-traffic settings.
Let’s compare both terminals to better understand their possible real-world applications.
Feature | Worldline Valina EP2 | Sunmi K2 Mini |
---|---|---|
OS Version | Android (KitKat) | Sunmi OS (Android-based, based on Android 7.1) |
Processor | ARM Cortex A9 (600 MHz) | Qualcomm Snapdragon Octa-core or Rockchip Quad-core |
Memory | 1GB RAM, 4GB Flash | 2GB RAM, 16GB ROM (expandable via MicroSD) |
Display | 3.5” LCD (320x480 pixels | 15.6" Full HD, multi-touch screen |
Card Readers | Chip, Magstripe, Contactless NFC | Barcode, QR code, and Face-ID |
Security Compliance | PCI PTS 4.x, P2PE, ARM TrustZone | App Store management, canary deployment, and kiosk mode via Sunmi OS |
Connectivity | Ethernet, USB, RS232 | Wi-Fi (2.4G/5GHz), Bluetooth (including BLE) |
Physical Durability | Impact- and scratch-resistant (IK09, IP65 certified) | Suitable for high-traffic indoor environments |
POS Software Integration | Optimized for payment request processing | Focused on custom kiosk app development for tailored customer experiences |
Target Use Case | Self-service kiosks, vending machines, EV charging networks, parking lots | Retail, hospitality, and self-service applications |
Unique Feature | Multimedia support with audio-video playback | High-speed thermal printer, face recognition, and large HD display |
📌 The comparison between the Worldline Valina EP2 and Sunmi K2 Mini highlights their unique strengths for various self-service applications, particularly in the context of kiosk development software.
Let’s recap this section:
Now, let’s discuss the main requirements for building Android kiosk mode app. Creating a seamless user experience for a kiosk app isn’t just about functionality but overcoming unique hardware challenges.
In our recent collaboration with Milence, we worked on kiosk software development for their EV charging payment terminals, addressing the constraints of compact screens and limited color reproduction. Our Android and iOS developer, Artem Manakov, shares insights on how thoughtful design and smart solutions turned these limitations into opportunities.
When developing kiosk mode applications in Android, especially for EV truck charging services, it's crucial to consider the limitations posed by the hardware of payment terminals.
Milence’s EV charging infrastructure utilizes Android-based payment terminal apps to enhance customer satisfaction (image by Stormotion)
Two key constraints affect both the visual design and user experience.
Tip: Always conduct user testing to gather feedback on the interface's usability and ensure that the design meets their needs effectively.
Tip: Test your color choices in different lighting environments to ensure they are effective and easy to read in all scenarios, such as bright sunlight or low-light conditions.
The core features of Milence’s Android payment terminal application development focus on simplifying the charging process for EV truck drivers.
Designing a core functionality for Android payment terminal application was all about ensuring secure, fast, and user-friendly services. We structured the flow to pass charging information to the app automatically, making it as seamless as possible for the drivers.
Artem Manakov, Mobile Developer @ Stormotion
Let’s discuss its core functionality!
Tip: Implement robust logging of payment processes to monitor and troubleshoot any payment issues that may arise, enhancing user confidence in the system. For instance, successful EV charging apps rely on seamless payment gateway integration in mobile application to ensure a smooth and secure transaction experience.
Tip: Include visual indicators (like progress bars) for charging status to provide drivers with an intuitive understanding of how much charging is left, improving their overall experience.
Tip: Consider adding a summary of the charging session, so drivers can quickly reference their activity and expenses, enhancing user engagement.
Tip: Implement a live support option to provide immediate assistance, making the user experience smoother and more responsive to driver needs.
Ensuring robust security is at the core of how to make a kiosk app for the Android payment terminal. Let’s discuss the essential security measures we implemented to ensure smooth and reliable EV charging services.
Tip: Regularly review and update third-party integrations to address potential security vulnerabilities and ensure compliance with evolving security standards.
Tip: Schedule NDT at various stages of development to identify and resolve potential issues early, saving time and resources before final deployment.
Our kiosk software developers maintained high standards with 81% test coverage and top SonarCloud ratings in Reliability, Security, and Maintainability, while also passing the terminal vendor's NDT and meeting Milence’s security guidelines.
Tip: Regularly conduct security audits and penetration testing to identify and mitigate potential vulnerabilities, ensuring that financial data remains secure against evolving threats.
In summary, to create your own kiosk app for Android payment terminals, it's essential to navigate specific hardware constraints while prioritizing customer experience and security.
Through our collaboration with Milence, we demonstrated that thoughtful design and strategic problem-solving can transform challenges into opportunities, ultimately paving the way for a reliable and user-friendly kiosk application.
Building specialized Android kiosk apps for payment terminals requires more than just technical know-how; it demands a deep understanding of the industry’s unique challenges.
For Milence, a leading European company in EV charging infrastructure, our goal was to build kiosk application that streamlined the charging experience for EV truck drivers — providing them with a reliable, user-friendly interface on compact Android terminals.
With the EV market growing at a staggering pace — projected to reach a value of $257 billion by 2032 (according to the Fortune Business Insights report) — reliable and accessible charging infrastructure is crucial to sustaining this momentum.
Partnering with Stormotion, an experienced EV charging app development company, was crucial for meeting Milence’s objectives and ensuring a reliable user experience.
When Milence approached us to develop a kiosk app for their Android payment terminals, we knew that building a seamless user experience would mean navigating specific constraints and collaborating closely with the client from day one. Milence had a clear objective: to create a secure, intuitive app allowing EV truck drivers to manage charging sessions, view essential statistics, and reach support when needed.
Our first step was a series of in-depth discussions with Milence to define the app’s requirements. Milence provided wireframes for each screen, giving our team a clear vision of the app’s flow and user interactions. Having these blueprints upfront was invaluable, as it helped us map out critical features and anticipate potential challenges in advance.
With security and ease of use as top priorities, our team knew the app’s quality and precision had to meet Milence’s high standards.
Uliana Veretko, PM @ Stormotion
As with all our IoT projects, our Project Manager, Uliana Veretko, requested the Android payment device and two test payment cards (Visa and MasterCard) to develop payment terminals app and conduct real-world testing. This allowed us to create, iterate, and refine the app directly on the device, ensuring it functioned reliably in a real-world environment.
Over the next 43 weeks, our five-person team — comprising a Project Manager, two Android Developers, a UX/UI Designer, and a QA Engineer — dedicated themselves to delivering an app that was both robust and highly user-focused.
Looking to develop a custom Android kiosk application for your business needs? Contact us to discuss how our development services can help you build a scalable, secure, and user-friendly app.
Challenge #1: Finding the right balance between performance and security was crucial for developing a responsive Android kiosk app tailored to EV charging services.
Choosing the right technology stack is pivotal for a payment terminal application developer to create a secure and responsive Android payment app, especially one tailored to EV charging services.
Our tech stack enabled real-time interactions with charging stations, secure payment processing, and seamless third-party integrations while maintaining a smooth user experience on Android hardware.
Tech Stack | Application |
---|---|
Kotlin | Kotlin was chosen for its concise syntax and safety features, enhancing performance and minimizing common programming errors. Kotlin’s expressiveness allowed us to build a more secure and efficient Android application compared to Java, making it an ideal fit for the Milence project. |
User Interface (XML) | XML layouts were employed to design the UI, ensuring compatibility with the smaller display of the payment terminal. This approach allowed us to create a structured, responsive design that adapted seamlessly to the terminal’s unique display requirements. |
Backend Communication (REST APIs) | The app’s communication with external services relied on REST APIs, secured with HTTPS and TLS encryption. This ensured that sensitive information was well-protected, while error-handling mechanisms provided stability even in cases of weak network connections. |
Payment APIs | For secure payment handling services, our kiosk app developer used the payment SDK along with Milence’s API. The SDK managed card transactions, while the terminal API coordinated charging sessions, activating them upon successful payment authorization.n |
Error Tracking (Sentry) | To maintain optimal performance, we integrated Sentry for error tracking. This tool automatically captured errors and provided detailed contextual insights, such as stack traces and user actions, which expedited debugging and improved reliability. |
Azure DevOps | CI/CD (Continuous Integration and Deployment) were streamlined through Azure DevOps. This setup allowed us to implement automated testing, version control, and rapid updates, ensuring a stable and continually improving Android application. |
📌 Starting with a well-defined project kickoff, our team was able to identify critical challenges and set a clear roadmap for how to create a kiosk application. The tech stack choice provided a strong foundation, enabling us to deliver a robust solution for both customers and providers in the rapidly growing EV sector.
Challenge #2: Designing features for a small display while ensuring quick responsiveness and secure interactions created a unique challenge requiring careful consideration of user experience and hardware limitations.
For businesses looking to integrate custom features and improve customer experience, mobile app development services offer tailored solutions. To provide drivers with a seamless charging experience, Milence’s app needed to integrate features that made navigation intuitive and efficient on compact payment terminals. Each feature had to balance usability and functionality, from connector selection and session monitoring to localization across multiple languages.
Here’s a closer look at how we approached Android kiosk software development to develop the app’s core features, overcoming these challenges and enhancing the overall user experience.
The "List of connectors" feature allows drivers to view all available charging options with clear visual indicators for each connector’s type and status (e.g., Available, Connected, Charging, Reserved, Unavailable).
Once the driver clicks “Continue” on the welcome screen, an API request retrieves the charging station details. If the API requests succeed, the driver can see all connectors and make an informed choice; if it fails, a failure screen appears. This feature minimizes errors and enhances usability by ensuring that drivers know which connectors are ready to use.
Here is the code where we get the list of connectors:
The "Clicking a Connector" feature, integral to our Android kiosk application development, lets drivers select the appropriate connector for charging by showing all available options. Different actions occur based on the selected connector’s status:
This feature ensures that drivers can easily initiate charging sessions by identifying the right connector.
When we choose the connector, we call this function:
The "Check the Session Information" feature provides drivers with real-time updates on their active charging sessions directly on the Android-based payment terminal. By selecting the icon for the connected charging session, users can easily monitor key metrics such as battery status, charging power, and remaining time.
As part of our efforts to build kiosk app functionality, session information displays on the screen and refreshes regularly to keep users informed at every stage.
Milence’s payment terminal app allows drivers to select a connector and monitor the charging status (image by Stormotion)
The "Payment Tap Screens" feature initiates a pre-authorization process to secure funds for the upcoming session. A reservation amount displays on the screen along with a card tap icon, allowing drivers to pre-authorize payment securely through the terminal. If successful, the user sees a confirmation screen; if unsuccessful, an error screen appears, keeping the driver informed of payment status every step of the way.
The “Localization” feature supports multiple languages, enabling drivers across different regions to navigate the interface with ease. This feature enhances accessibility by offering options in English, German, French, Dutch, Romanian, Polish, Spanish, Russian, and Italian.
A default language selection is set to English, but localization requires extra care to ensure translations fit within the UI constraints and are displayed correctly across languages. We’ll talk about the design constraints in the next section.
Milence’s app allows drivers to choose their preferred language and monitor the charging session via smartphone (image by Stormotion)
The integration of these key features showcases the user-first approach on which Milence’s app was built, highlighting how to create a kiosk application that prioritizes user experience and high-quality services.
By tailoring each feature to meet the practical needs of EV drivers, the app enhances the charging experience, making it more intuitive and accessible.
Each of these features plays a vital role in creating a streamlined process, allowing users to easily navigate, start sessions, and monitor their charging progress with confidence.
Challenge #3: Limited color options and small screen space required a straightforward UX/UI design with large, intuitive buttons and high-contrast colors for readability in various lighting conditions.
Creating an intuitive design on a compact, low-resolution terminal screen requires careful consideration of user experience and interface constraints. In Milence’s app, our design process focused on making the app both readable and accessible, ensuring a seamless user experience across diverse languages and display limitations.
Iryna Ponomarenko, UX/UI Designer @ Stormotion
Here’s how our UI/UX designer, Iryna Ponomarenko, tackled the unique design challenges.
The terminal’s small screen size presented one of the biggest design challenges when we set out to build kiosk application. Our company needed to adjust element sizes, font styles, and layouts to maintain readability, even at a viewing distance of about half a meter.
Additionally, the terminal’s low-contrast display matrix and limited color reproduction meant that some shades weren’t visible or sufficiently distinct. We approached this by testing various color schemes and contrast levels directly on the terminal, optimizing the final design to ensure each element remained clear and visible under different lighting conditions.
The Milence’s design was developed with approaching all Android-based payment terminal constraints (image by Stormotion)
Localizing the app for multiple languages — including those with longer phrases and non-Latin scripts — introduced further challenges. To avoid breaking the layout, we adapted font sizes and rephrased certain terms for compactness.
Additionally, customizing the Cyrillic font to fit the terminal’s display properly was essential to create kiosk app that blended seamlessly into the interface. This adaptability ensured that the Android app maintained its readability and functionality across all supported languages.
The outcome of our UI/UX efforts is a visually accessible, multilingual app specifically designed to meet the unique constraints of EV charging terminals.
In a project as dynamic as payment terminal application development, the flexibility and adaptability of both companies, Stomotion and Milence, are key. Leveraging Agile methodology allowed our team to move forward with unblocked items, ensuring that development continued efficiently despite these obstacles.
Here’s how Agile and rigorous testing practices enabled us to overcome evolving needs and build a robust, reliable app.
Challenge #4: Navigating dependencies on unavailable resources, such as critical protocols and backend support, threatened to stall the project’s progress.
The absence of a necessary communication protocol hindered our app's functionality, while delayed backend dependencies risked halting progress. By utilizing an Agile approach, our Android kiosk software developers focused on unblocked tasks and adapted the project scope, allowing us to maintain productivity until all resources were available.
This experience taught us three important lessons:
Challenge #5: QA testing posed significant hurdles, particularly for features requiring real-time data synchronization with Milence’s backend systems.
Our QA process involved comprehensive testing across multiple scenarios, including prolonged idle times and internet outages.
Ostap Shtypuk, QA Engineer @ Stormotion
While the client’s backend developer adjusted values, our QA Engineer, Ostap Shtypuk, conducted real-time testing to ensure consistent feature performance.
This process included:
Agile development allowed us to remain flexible and productive in the face of unexpected challenges, enabling us to effectively develop payment terminals app. By testing the app’s services and functionality in a variety of real-world scenarios, we ensured that the Milence app was not only adaptable but also highly reliable.
Challenge #6: Integrating with the terminal vendor’s native payment system required strict adherence to security protocols while ensuring scalability for future growth and updates.
Maintaining high standards for quality, security, and scalability is paramount when considering how to make an EV charging app that effectively supports essential EV charging services. From kiosks software development through deployment, every aspect of the app was built with long-term sustainability in mind, ensuring it can evolve alongside both technology and user needs.
Here’s how we ensured a robust foundation for Milence’s app, ready to support future growth and ongoing maintenance.
Integrating with the terminal vendor’s native payment system demanded strict adherence to security protocols. Ensuring compliance with Milence’s security guidelines was critical to protect users’ financial data while maintaining smooth functionality.
To maintain high standards, our Android kiosk app developer implemented continuous code quality monitoring using SonarCloud, a tool that provides real-time feedback on code integrity, security, and maintainability.
This allowed us to detect potential issues early, ensuring compliance with strict security guidelines and reducing the risk of vulnerabilities. SonarCloud’s automated insights helped us maintain a clean, reliable codebase, which is crucial for an app that handles sensitive transactions and user interactions.
Our team designed the app with scalability at its core, enabling it to accommodate future updates and growing user demands. We employed a modular development approach, which makes it easier to introduce new features, apply updates, or adapt to emerging standards without disrupting existing functionalities.
This flexibility in design ensures that the app will remain responsive and reliable as Milence expands its charging network, empowering them to meet evolving industry needs with minimal technical disruptions.
By focusing on quality from the outset, we utilized kiosk development software to build a scalable, maintainable app that aligns with Milence’s long-term objectives.
Our collaboration with Milence resulted in a robust, user-friendly Android app that streamlines the EV charging experience for drivers of heavy-duty trucks. Through focused design adaptability, agile development, and rigorous testing, we delivered a secure, scalable solution tailored to the constraints of payment terminals.
The kiosk app’s intuitive interface, real-time session tracking, and reliable pre-authorization process now support Milence’s mission to provide accessible, efficient charging infrastructure across Europe.
With scalability built into the app, Milence can easily adapt to future updates and features as they continue to expand. Our partnership in how to make a kiosk app enabled the company to bridge the gap between hardware limitations and user expectations, delivering an app that not only meets their needs today but is also prepared for the future.
The upcoming video feedback from Milence will highlight the project's impact and success, showcasing the value of this collaboration.
Android payment terminals are integral across numerous industries due to their robust transaction management, adaptability, and seamless integration capabilities.
Developing kiosk mode applications in Android demands balancing hardware constraints with services, functionality, security, and user experience. Here are the essential lessons from our case-based guide:
These strategies are key for secure, reliable, and user-friendly kiosk app development in any Android-based terminal environment.
Ready to take the next step in developing your kiosk application? Whether you need help with payment integration, security features, or custom app design, contact us today to discuss your project and how we can bring your vision to life.
Was it helpful?
Take a look at how we solve challenges to meet project requirements
Consider a rugged, impact-resistant build with IP65 certification for dust and water resistance for an Android device used as a kiosk. Ensure NFC compatibility, sufficient processing power for smooth performance, a responsive multi-touch touchscreen, and reliable connectivity options like Wi-Fi and Bluetooth. Having these Android applications ready for kiosk deployment on durable hardware ensures reliability in various environments.
For secure payment processing, integrate P2PE and PCI PTS compliance. Utilize tokenization for sensitive data, limit app access through Android kiosk software, and apply pre-authorization for transactions to secure funds before the service begins, preventing data breaches. Our payment terminal application developer always implements payment software designed to handle sensitive information.
Maintaining compliance by adhering to PCI standards, performing regular security audits, and updating third-party integrations for potential vulnerabilities. Software development practices focused on encryption and tokenization ensure that all data meets industry security requirements. This allows app developers to stay up-to-date with evolving standards, especially in sectors relying on high security.
Android apps for kiosks can support NFC payments, credit and debit cards, digital wallets, and QR code-based transactions. Flexible payment solutions enable the integration of smart payment options suited to customer preferences and device compatibility.
During kiosk application development for Android gadgets, you can simplify the interface by using a minimalistic layout with large, touch-friendly buttons and high-contrast text for readability. Dropdown menus and clear icons enhance navigation, ensuring an intuitive experience on small screens.
Stability testing includes running the kiosk app under various network conditions, conducting Non-Disturbance Testing, and assessing compatibility with external systems. Usability testing gathers feedback on the user experience, particularly for intuitive application development suited to diverse customer needs. These examples help demonstrate a strong commitment to usability and stability.
Android kiosk apps can handle updates via centralized remote management software, allowing a payment terminal application developer to deploy updates without manual intervention. Regular monitoring and scheduled maintenance keep the custom kiosk software up to date with the latest features and security patches.
Real-time monitoring options include an admin console for centralized control, where performance data and issues are accessible. Custom kiosk solutions may also integrate logging software for continuous performance tracking, allowing quick responses to technical issues. This approach supports digital transformation by ensuring a seamless and resilient user experience.
Multi-language support involves incorporating localization for key app components and using dropdown menus for language selection. This allows users to select their preferred language, enhancing accessibility for a wider audience in international environments, which is essential in today’s diverse market where app development must consider global reach.
Read also
Our clients say
When I was working with Stormotion, I forgot they were an external agency. They put such effort into my product it might as well have been their own. I’ve never worked with such a client-focused company before.
Alexander Wolff, CPO
Sjut