1. Row-Level Multi-Tenancy Isolation
CPOS enforces strict row-level multi-tenancy. Every database query executed across the API is filtered by global Eloquent scopes (TenantScope), automatically appending WHERE tenant_id = ? to all transactions.
Tenant isolation is tested and verified through automated test suites (over 130 tests), ensuring Restaurant A can never view, query, or modify outlets, orders, stock, or bills belonging to Restaurant B.
2. Financial Bill Immutability (SEC-07)
In compliance with Indian accounting standards, once a bill is finalized and settled (status: completed), it becomes cryptographically immutable.
- Settled bills cannot be modified, deleted, or reassigned.
- Bill sequence numbers are generated monotonically per outlet and per financial year (e.g.
BILL/2026-27/DEL-01/00001). - Returns or adjustments are handled strictly through formal credit notes.
3. Offline Storage & Local Encryption
For CPOS Mini and CPOS Pro offline modes:
- IndexedDB local caches are protected against unauthorized browser manipulation.
- Sensitive financial float and sales summaries are secured using AES-GCM client-side encryption.
4. Role-Based Access Control (RBAC)
Staff access is partitioned by defined roles:
- Cashier: Can settle bills and print KOTs; cannot delete catalog items or access other outlets.
- Waiter: Restricted to table order punching and kitchen tickets.
- Kitchen: Can only update ticket cooking status (Preparing, Ready, Served).
- Owner/Manager: Full control over reports, discount PINs, staff shifts, and outlet configuration.
5. Infrastructure & Cloud Security
All API endpoints require HTTPS with TLS 1.3 encryption. Passwords are hash-protected with Bcrypt (cost factor 12). Web sessions utilize secure, HttpOnly, SameSite cookies to mitigate XSS and CSRF vectors.