Mobile App Development for Vending Machines
We create mobile applications for vending networks that turn an ordinary machine into a digital point of sale. With our solution, the operator gets real-time telemetry, the buyer pays by QR code without coins, and the machine itself reports malfunctions. Evaluate a project for your network — write to us, we will share details.
A vending machine without a mobile app is just a bill acceptor and coin changer. With an app: QR payment, cashless transactions, loyalty program, push notifications about new items, purchase history. For the network operator — telemetry: fill levels, mechanical errors, revenue per location in real time. Our experience: 5+ years developing vending software, 20+ implemented projects. We guarantee stable operation even during communication outages.
How QR Payment Works in Vending Machines
For cashless payment via phone, a payment module is integrated into the MDB bus of the machine. The user pays in the app — the server sends a signal to the module, it emulates a coin drop, and the machine dispenses the product. A QR payment session generates a unique token with a TTL of 120 seconds. If the user fails to pay, the QR expires and the machine resets the waiting state.
// iOS: Generate QR with session token for the machine class VendingSessionManager { func createPaymentSession(machineId: String, amount: Decimal) async throws -> PaymentSession { let session = try await api.createSession(VendingSessionRequest( machineId: machineId, amount: amount, expiresIn: 120 // 2 minutes )) // QR contains session.deepLink — opens app when scanned return session } func pollSessionStatus(sessionId: String) -> AsyncStream<SessionStatus> { AsyncStream { continuation in Task { for await _ in Timer.publish(every: 2, on: .main, in: .common).autoconnect().values { let status = try? await api.getSessionStatus(sessionId) continuation.yield(status ?? .unknown) if status == .completed || status == .expired { break } } continuation.finish() } } } } Polling session status every 2 seconds is simpler than WebSocket in this case. The session has a 120-second TTL: if the user does not pay, the QR expires, the machine resets. System response time is under 1 second, critical for high-traffic locations (over 200 transactions per day).
Telemetry: DEX/UCS Protocol and Modern IoT
The standard for vending machines is the DEX/UCS protocol (Data Exchange / Universal Communications Standard). Most commercial machines (Crane, Sanden, Azkoyen) have a DEX port — RS-232, 9600 baud. Via DEX, you can read sales counters, errors, and inventory. Problem: DEX was designed for data retrieval during service, not for online monitoring.
Modern solution: an IoT controller (Telemetry Gateway) connects to the DEX port and to a network (4G/Wi-Fi). Manufacturers: Parlance, CPI, Nayax, Coinco. They provide REST APIs for mobile apps and dashboards. Standby battery life of the controller reaches 72 hours thanks to energy-efficient components.
No standard IoT module? Build your own with Raspberry Pi Zero + RS-232 adapter + Python DEX parser + MQTT publishing:
Example DEX parser code in Python
import serial, paho.mqtt.client as mqtt def read_dex_data(port='/dev/ttyUSB0'): ser = serial.Serial(port, 9600, timeout=5) # Initialize DEX session ser.write(b'\x04') # EOT — start session response = ser.read_until(b'\x04') # read until EOT return parse_dex_block(response) def parse_dex_block(data: bytes) -> dict: # Parse blocks VA (Vending Machine Audit) # VA1 — identification, VA2 — sales data, VA3 — inventory blocks = data.split(b'\x1c') # FS separator return {block[:3].decode(): block[3:].decode() for block in blocks} MDB: Payment Control
MDB (Multi-Drop Bus) is a protocol for payment devices inside the machine (bill acceptor, coin changer, card reader). Most modern cassettes work via MDB Master — the main machine controller manages peripherals. Learn more about Multi-Drop Bus (MDB).
Comparison of Traditional Machine vs Machine with Mobile App
| Parameter | Traditional machine | Machine with app |
|---|---|---|
| Payment method | Coins, bills | QR code, bank card, mobile wallet |
| Assortment management | Manually during rounds | Remote via dashboard |
| Telemetry | No | Real-time inventory, errors, revenue |
| Loyalty program | Impossible | Purchase history, discounts, push notifications |
| Cash collection cost reduction | Baseline | Up to 50% |
What's Included in Vending Mobile App Development
We provide:
- Customer app (iOS/Android) with QR payment, history, loyalty.
- Operator dashboard with telemetry, machine management, analytics.
- Integration with payment modules (Nayax, PayLink) via MDB.
- Connection of IoT controllers for DEX/UCS reading.
- Documentation and staff training.
- Post-launch support.
Why Telemetry Matters for the Operator
The operator sees in the app (or web panel) per machine: inventory by slots, daily/weekly/monthly revenue, errors (jammed product, bill acceptor failure, refrigeration issue). Optimized route — a list of machines that need refilling today, based on inventory and sales forecast. This reduces cash collection time by 30% and increases average ticket by 25% due to timely restocking. For a network of 50 machines, cash collection time savings reach 15 hours per week.
Integration with the operator's accounting systems: 1C, SAP, custom ERP — via REST or file exchange (CSV/XLS). Normalizing data from different machine models is a key backend task.
How to Integrate a Payment Module with a Vending Machine
Integration steps:
- Connect an MDB-compatible payment module to the connector on the machine controller.
- Configure API keys and endpoints for payment processing (usually via JSON-RPC).
- Test coin emulation — the server must send a command to dispense the product.
- Test error scenarios: session timeout, lack of change, payment cancellation.
Most modern modules (Nayax VPOS, PayLink) support REST API, simplifying development.
Payment Module Comparison
| Module | Communication method | MDB support | Additional features |
|---|---|---|---|
| Nayax VPOS Touch | Wi-Fi/4G | Yes | Built-in NFC, GPS |
| PayLink | Bluetooth/Wi-Fi | Yes | Integration with Loyverse |
| CPI EMV | RS-232 | Yes | Bill emulation |
Timeline and Cost
Development of a customer app and operator dashboard for a vending network takes 3 to 5 months. Cost is calculated individually after analyzing machine models and payment infrastructure. We will evaluate your project for free — contact us to discuss details.
Get a consultation: our engineers will help choose the optimal solution for your network. Warranty on developed software — 12 months.







