Open Source  ·  AGPLv3  ·  Python 3.13+  ·  Android

Open retail systems should be
offline-ready, auditable, and modular

Modern retailers need checkout, back-office control, and central sync without turning every store into a cloud dependency. SaleFlex is one implementation of that model: PyPOS, OFFICE, GATE, KITCHEN, and mPOS as separable layers.

Touch POS Android mPOS Inventory Control Campaign Engine Loyalty Programs Customer Management ERP Integration Offline-First
5
Ecosystem Components
100+
Database Models
7+
Supported Databases
AGPLv3
Open Source
β8
PyPOS v1.0.0b8

What is SaleFlex?

A POS ecosystem is more than a sale screen. It needs a local checkout runtime, a store management layer, and a central integration boundary. SaleFlex maps those responsibilities into independently deployable components.

Three Growth Stages

Start with a single terminal, add a store-level back office, then introduce a central hub for multi-store coordination. Three operating modes: standalone, office-connected, and GATE-connected.

Offline-First by Architecture

Sales, payments, and inventory never pause for a connectivity problem. Every transaction is persisted locally in SQLite and pushed to the back-office or cloud when the network returns.

Source-Available and Auditable

AGPLv3 license. Full source code on GitHub. No black-box firmware, no vendor dependency for security patches. The roadmap evolves publicly with community input.

Modular Adoption

Start with PyPOS alone. Add OFFICE when you need store management. Enable GATE when multi-store central APIs and ERP integration become a requirement. Each layer is independently deployable.

REST/JSON Throughout

PyPOS ↔ OFFICE ↔ GATE all communicate over the same REST/JSON protocol. ERP, loyalty platforms, and payment gateways plug into the same clean adapter interfaces.

Role-Aware Access

Cashier, manager, and admin roles are enforced at the form level. GATE adds per-company and per-store RBAC scoping for multi-tenant operations.

Ecosystem Components

Five focused components, each owning a distinct layer of the retail stack. PyPOS, OFFICE, GATE, and KITCHEN are AGPLv3; mPOS is commercial.

SaleFlex.PyPOS

Touch-Screen Point-of-Sale

v1.0.0b8 Beta · AGPLv3

Python + PySide6 touch POS for store-floor checkout. Three operating modes: standalone (local SQLite), office (LAN sync with OFFICE), gate (direct GATE REST). Multi-payment, campaigns, loyalty, inventory, offline outbox.

Python 3.13+PySide6 6.11SQLAlchemy 2.0Offline-First

SaleFlex.OFFICE

Back-Office Management

v0.1.0a2 Alpha · AGPLv3

PySide6 desktop back-office for managers. Serves PyPOS terminals over a local REST API (Flask). 10+ management modules: products, campaigns, customers, loyalty, warehouse, POS, forms, transactions, sync, system settings.

Python 3.13+PySide6Flask RESTStandalone / GATE

SaleFlex.GATE

Central API Hub & Gateway

v0.1.0a1 Alpha · AGPLv3

Django 6.0 + DRF central hub. Multi-tenant Company → Store → Terminal hierarchy, GateUser universal identity, JWT auth, merchant token auth, web portal, and REST APIs for PyPOS, KITCHEN, and mobile clients.

Django 6.0DRFPython 3.12+Multi-tenant

SaleFlex.KITCHEN

Kitchen Display System

Early Development · AGPLv3

Kitchen order display and preparation workflow for restaurant scenarios. Registered per store as a terminal profile in GATE. Designed to connect to the same REST API surface as PyPOS.

RestaurantKitchen DisplayGATE-Connected

SaleFlex.mPOS

Android Mobile POS

v1.0.0-alpha1 · Commercial

Android companion to PyPOS built with Kotlin + Jetpack Compose. Landscape-first tablet UI, Room local database, Retrofit-based OFFICE integration. Commercial product — source code is not publicly released. Contact saleflex.pro for licensing.

Kotlin 2.0Jetpack ComposeAndroid API 28+Commercial

How POS, back-office and cloud sync work together

A layered architecture — from the store floor to a central hub — with no single point of failure.

1

Store Floor

Cashiers run sales, payments, and inventory on PyPOS or mPOS. Fully operational offline on local SQLite / Room.

2

Store Manager

OFFICE distributes products, campaigns, and pricing to terminals via its built-in Flask REST API. Acts as local hub when internet is down.

3

Central Hub

GATE manages Company → Store → Terminal hierarchy with GateUser universal identity and versioned REST APIs for all clients.

4

Integrations

ERP, loyalty, and payment gateways connect through GATE's adapter framework — keeping PyPOS and mPOS thin and vendor-agnostic.

Core Capabilities

Everything required to run a modern retail operation — operational in PyPOS today.

Multi-Payment

Cash, card, mobile, loyalty bonus, on-account, bank transfer, cheque — split-tender supported.

Inventory Control

Real-time stock, goods receipt, adjustment, and movement history per warehouse location.

Loyalty Programs

Bronze / Silver / Gold / Platinum tiers. Earn and redeem points at checkout with full audit trail and policy caps.

Campaign Engine

5 campaign types: basket, product, time-based, Buy-X-Get-Y, payment-method. Coupon activation with usage limits and stacking rules.

Customer Management

Phone-normalized identity, activity history, point movements, segmentation, and walk-in placeholder.

End-of-Day Closure

ESC/P Z-reports with country-specific templates for Turkey (E-Fatura), USA state tax, and EU VAT.

Offline Outbox Pattern

Zero data loss. Transactions queue locally as SyncQueueItem and flush automatically when OFFICE or GATE becomes reachable.

Dynamic Form Runtime

Database-driven form definitions. Virtual keyboard, NumPad (4 modes), tab controls, and PLU buttons — all configurable without code changes.

Deployment Modes

Set app.mode in settings.toml. Start standalone, graduate to office or gate as the business grows.

 standalone

PyPOS only. No network dependency. Operates entirely on a local SQLite database. Ideal for a single register, pop-up store, or initial evaluation. Built-in seed data starts automatically.

PyPOSLocal SQLiteNo network required

 office

PyPOS connects to SaleFlex.OFFICE over LAN REST. First startup seeds from OFFICE. Every closed transaction and end-of-day closure is pushed to OFFICE. Post-closure master-data refresh automatically pulls updated products, prices, and campaigns.

PyPOSOFFICELAN · No internet required

 gate

PyPOS connects directly to SaleFlex.GATE REST APIs. Multi-tenant central management, centralized campaign/loyalty engine, ERP and payment adapters. Best for multi-store chains.

PyPOSGATEInternet · Multi-store

How SaleFlex compares

A quick look at what matters when choosing a retail platform.

FeatureSaleFlexTypical SaaS POSLegacy On-Premise
License costAGPLv3 open source (mPOS commercial)Monthly subscriptionLarge upfront fee
Source code accessFull (AGPLv3)Partial
Offline-first operationYes (local SQLite)LimitedYes
Self-hostedYesYes
Multi-store readyYes (via GATE)YesVaries
Android mobile POSYes (mPOS, commercial)YesVaries
ERP integrationAdapter stubs, roadmapVariesUsually yes
Restaurant / table modePlanned (KITCHEN)YesVaries
Python / open stackYes

GitHub Links

Source repositories, roadmap status, and public issue tracking live on GitHub. Internal technical material is no longer linked from the public site.

SaleFlex.PyPOS

Python + PySide6 touch POS with offline-first local operation, campaigns, loyalty, inventory, and OFFICE/GATE integration.

SaleFlex.OFFICE

PySide6 back-office management for products, campaigns, customers, loyalty, warehouses, terminals, and transaction review.

SaleFlex.GATE

Django + DRF central hub for company, store, terminal, identity, portal, and integration gateway scenarios.

Commercial Support

SaleFlex open-source components are free. The team behind SaleFlex is available for professional support, custom development, and mPOS commercial licensing.

Professional Support

Priority support contracts, deployment assistance, and custom integration work through Mousavi.Tech.

Custom Development

ERP adapters, hardware drivers, custom campaigns, or additional POS modules built to specification.

mPOS Licensing

SaleFlex.mPOS Android is a commercial product. Production deployments require a valid commercial licence.

Ready to run your own retail stack?

Clone the repository, follow the Getting Started guide, and evaluate the local-first POS workflow on your own machine before adding back-office or central sync.