LPG Self-Service Kiosk System
Automated Retail & FinTech

Problem & Solution
Traditional LPG retail is plagued by operational friction. Peak-hour bottlenecks lead to customer churn, while manual payment verification leaves shop owners highly vulnerable to Slip Fraud — where customers present fake transfer screenshots. Managing physical cash while simultaneously manually checking bank apps is not only inefficient but also represents a significant security risk and labor cost for shop owners.
I architected a Fraud-Proof Self-Ordering Kiosk that digitizes the entire LPG purchasing lifecycle. Built as a specialized layer on top of the Cash Management Local System, the kiosk provides a seamless 'Order-to-Payment' workflow. By integrating directly with the SCB Developer API, the system performs real-time cryptographic verification of every QR transaction, making slip fraud impossible. This automation reduces customer wait times by 80% and allows shops to operate with minimal staff without sacrificing security or financial accuracy.
Key Features & Business Impact
- Fraud-Proof QR Integration: Real-time API verification via SCB Bank to eliminate 'Fake Slip' revenue loss.
- Hybrid Payment Support: Seamlessly handles both digital QR transfers and physical cash via integrated dispensers.
- Dynamic Promotion Engine: Flexible discount logic and real-time pricing updates managed through a centralized dashboard.
- Automated Thermal Printing: Instant generation of order confirmation tickets and fiscal receipts.
- Unattended Operation: Designed for 24/7 self-service, significantly reducing peak-hour labor requirements.
- Operational Analytics: Granular insights into customer behavior, popular tank sizes, and peak transaction times.
Technical Deep Dive
Kiosk Architecture: Layered Edge Integration
The system utilizes a Modular Kiosk Architecture that abstracts the complexity of hardware control. The Next.js frontend delivers a low-latency, touch-optimized UX, while the .NET Core backend handles complex business logic like dynamic pricing and promotion engines. By delegating all cash-handling tasks to the existing Cweetlabs Edge Service via internal REST APIs, I ensured a strict separation of concerns: the kiosk manages the 'Customer Journey,' while the underlying edge system handles the 'Physical Assets'.
Security: OAuth 2.0 & Anti-Fraud Verification
To eliminate payment fraud, I implemented a rigorous API-Driven Verification Loop. The system utilizes OAuth 2.0 and Request Signing to communicate with SCB's payment gateway. Unlike systems that rely on visual slip inspection, this kiosk polls the bank's ledger directly. A transaction is only marked 'Complete' and the ticket printed once the bank confirms the specific Transaction UUID has been settled. This 'Trust-But-Verify' model ensures 100% financial accuracy.
Transactional Pipeline: Cash & QR Synchronization
The pipeline is engineered for Atomic Fulfillment. Whether a customer pays via cash or QR, the system maintains a unified state. For cash payments, the kiosk orchestrates hardware commands to the local cash dispenser; for QR, it manages the API polling lifecycle. I implemented Idempotency Keys across the entire pipeline to ensure that network flickers never result in double-charges or unprinted tickets. Every completed order triggers an automated print job and a real-time sync to the reporting database.
Analytics: Flexible Schema & Aggregation
Using MongoDB, I designed a flexible document schema capable of handling high-variability product attributes and nested promotion logic (e.g., volume-based discounts). To prevent reporting overhead from slowing down the kiosk UI, I utilized MongoDB Aggregation Pipelines to generate pre-computed summaries for the owner's dashboard. Composite indexes allow for instantaneous reconciliation of 'Cash vs. QR' ratios, even during high-volume periods.
Technology Stack
NextJS
Typescript
TailwindCSS
Dotnet Core
MongoDB