← Back to case studies

Case study

Retail POS & E-Invoicing System

A point of sale app for retail branches in Saudi Arabia that lets cashiers sell, return, and print tax-authority-compliant invoices from a handheld or tablet terminal.

Industry
E-commerce & Retail Tech
Tech stack
FlutterDartFirebase Analytics & Cloud MessagingNearpay SDKSurePay SDKSunmi PrinteriMin Printer
Retail POS & E-Invoicing System screen 1

Overview

The client operates an e-invoicing platform for businesses in Saudi Arabia. Their customers run counters and branches where cashiers open shifts, sell products, take card and cash payments, and issue tax invoices. The web platform covered the back office, but staff at the counter still needed a dedicated app. The client asked us to build the point of sale side that runs on the terminal itself.

The Challenge

Cashiers were moving between separate tools to ring up a sale, take payment, and produce a compliant invoice. Card payments ran on a standalone terminal, so amounts were re-keyed by hand and mistakes were caught only at the end of the day. Shift handover was manual, with treasury balances and cash transfers tracked outside the system. Returns required someone to find the original invoice first. They needed one app that ran the whole counter workflow on the POS device and produced tax invoices that met Zakat, Tax and Customs Authority requirements.

The Solution

We built the app in Flutter for Android POS terminals, phones, and tablets. Cashiers log in, pick a point of sale, and start a default or planned shift with a confirmed opening treasury balance. They browse products by category, scan barcodes, apply per-item or order-level discounts within admin-set limits, and split a single invoice across cash, network, bank transfer, and deferred payment. Card payments run in-app through the Nearpay and SurePay SDKs, so the amount never gets re-typed. The app issues simplified and full tax invoices with the regulator-mandated QR code, prints them on Sunmi and iMin built-in printers or a paired Bluetooth thermal printer, and shares them as PDF. Full and partial returns are created against the original sales invoice. Shift close produces a report covering sales, returns, net cash, payment breakdown, and treasury transfers. The interface runs in Arabic and English with full right-to-left layout.

The Result

Cashiers complete a sale, take payment, and print a compliant invoice without leaving the app or touching a second terminal. Branch managers close shifts against a report that reconciles cash, card, and transfers in one place. The client now ships one POS build that adapts to handheld terminals and tablets instead of maintaining separate counter tooling.

Our approach

  • Discover: Walked the counter workflow with the client, from shift start and treasury confirmation through sale, payment, invoice, and return, and mapped it against tax authority invoice requirements and the existing platform API.
  • Design: Defined one product flow that scales from a handheld POS terminal to a tablet counter, with dedicated tablet screens for sales, payment, returns, and shift handling, and Arabic and English layouts treated as equals.
  • Build: Implemented the app in Flutter over a feature-based clean architecture with BLoC state management and a Retrofit client, then integrated card payment SDKs, built-in and Bluetooth printers, barcode scanning, and PDF invoice output.
  • Refine: Tested on real Sunmi and iMin hardware across receipt widths, tuned payment splitting, discount limits, and return handling against live invoice data, and wired Crashlytics and Remote Config for release monitoring and controlled rollouts.