Mpesa_Based-WiFi-Billing-System is a full-stack WiFi billing solution that enables users to purchase time-based internet access through MPesa STK Push payments. Designed for cybercafés, small businesses, and public WiFi hotspots, the system integrates seamlessly with MikroTik routers using MAC address whitelisting for secure access.
# MikroTik MPesa WiFi Billing System
A complete WiFi billing system that allows users to purchase internet access through **MPesa STK Push payments**.
Built for cybercafés, small businesses, WISPs, and public WiFi hotspots.
The system integrates with **MikroTik routers** to automatically manage user access after successful payments.
---
# Features
## MPesa STK Push
Users can pay for internet packages directly from their phones.
## Time-Based Access
Automatically control internet access based on purchased duration.
## Admin Dashboard
Manage:
- Users
- Payments
- Packages
- Router access
## MikroTik Integration
Automatically whitelist customer devices after payment confirmation.
---
# Remote MikroTik Management With TunGuard
Many MikroTik routers are behind CGNAT and do not have a public IP address.
**TunGuard** solves this by creating a secure private connection between your MikroTik network and a public server.
No public IP required.
## TunGuard Setup
1. Deploy TunGuard on a VPS with a public IP.
2. Connect your MikroTik router through the TunGuard tunnel.
3. Manage your hotspot remotely.
4. Allow your billing system to communicate with MikroTik securely.
TunGuard repository:
github.com
Useful for:
- WISPs behind CGNAT
- Remote hotspot management
- Distributed WiFi networks
- Secure MikroTik administration
---
# Architecture
Customer | | WiFi Hotspot | | MikroTik Router | | TunGuard Secure Tunnel | | Billing Server | | MPesa API
---
# Tech Stack
## Frontend
- React
- Tailwind CSS
## Backend
- Node.js
- Express
## Database
- MySQL
- Prisma ORM
## Network
- MikroTik RouterOS
- MAC Address Whitelisting
---
# Installation
## Clone Repository
```bash
git clone
github.com
```
#install Dependencies
```
npm install
```
Environment Variables
Create .env
```
MPESA_CONSUMER_KEY=your_key
MPESA_CONSUMER_SECRET=your_secret
MPE …