Hotspot control · MikroTik RouterOS

Sell Internet by the hour.

Vouchers, mobile money and the routers that carry the traffic — one system,

Gateway RouterOS 7Shaping per packagePaid by mobile money

Phone to router in five steps, and the money lands in the middle

Nothing here is theoretical - this is the exact sequence the system performs, in order, for every single person who connects.

/ 01 — connect

The customer's screen

Enter your voucher
XXXX-XXXX
Connect me

One field and one button. On a captive portal the customer has not paid for data yet, so the page carries no fonts, no frameworks and no tracking.

Open the real portal
01

Device joins the Wi-Fi

The router hands out an address and redirects anything unpaid to the portal. WMS never has to guess who arrived - the router tells it.

mac · ip · access point
02

Voucher, account or purchase

Three ways in, one outcome: a voucher code, a customer sign-in, or a package bought on the spot with mobile money.

portal / customer
03

Money settles before access

The USSD prompt goes to the payer's phone. Access is granted when the provider confirms the payment - not when the request was sent.

sonicpesa · webhook
04

Rules pushed to the router

A hotspot user and a queue are created on the MikroTik with the speed, data cap and device count that package was sold under.

routeros api
05

Every megabyte accounted

Session time, download, upload and daily totals come back from the router and land against the customer, the voucher and the router.

sessions · usage

Nine jobs an operator does every day, and where each one lives

Sized by how much of your week they take, not by how they fit a grid.

/ 02 — modules

Voucher engine

Generate one card or two thousand. Each voucher carries a snapshot of the package it was sold under, so editing a package tomorrow never changes what somebody already paid for.

  • Batches with your own prefix, length and unique-code guarantee
  • Available → active → expired / exhausted / suspended / cancelled
  • Printable cards with a reserved QR area

Multi-router control

Several MikroTik routers and their access points, each with its own credentials stored encrypted. Status, CPU, memory, uptime and interfaces are read from RouterOS itself — when a router cannot be reached the system says so and raises an alert instead of filling the gap with a number it made up.

  • Live session control — view, disconnect, block a device
  • Demo mode for evaluating everything before any hardware exists

Customers

Accounts, devices, sessions, usage and payment history in one profile. Suspend, activate or investigate without leaving the page.

Packages

Price, duration, data cap, speeds and how many devices may share it. Nothing hard-coded — build the plans your market actually buys.

Mobile money

A provider layer with SonicPesa built in for M-Pesa, Tigo Pesa, Airtel Money and Halopesa — plus a demo provider for testing.

Sessions

Who is online, on which device, through which access point, using how much — with the disconnect button on the same screen.

Reporting

Revenue, customer growth, voucher performance and network load. On screen, printable, CSV ready, over any date range.

Usage accounting

Download, upload, connected time and daily totals — per customer, per voucher and per router.

Roles and an audit trail

Four roles out of the box, each a set of permissions checked on the server rather than hidden in the interface — and a log of who did what, kept whether or not anyone is watching.

  • Super admin — the whole platform
  • Network — routers, sessions, devices
  • Sales — packages, vouchers, payments
  • Support — customers, read-mostly

On sale right now, read from this installation

What you configure is exactly what the customer sees — this list comes out of the same table the portal reads.

/ 03 — tariffs
Quick Hour
TSh 500
1 Hour of access
  • Unlimited
  • 3 Mbps down
  • 1 device
Buy this package
Daily Unlimited
TSh 2,000
24 Hours of access
  • Unlimited
  • 3 Mbps down
  • 2 devices
Buy this package

Print a batch in the morning, sell it all day

A voucher is a package that has already been paid for. It carries its own speed, cap, expiry and device count, so an agent at a counter with no connection can still hand one over and be sure of what they sold.

Redeem a code
MFS NetworksTSh 1,000
QR
space
Access code
WMS-7KD4P2
5.0 GB24 Hours5 Mbps
WMS-Hotspot
Connect to the Wi-Fi network, open any web page and enter this code.
MFS NetworksTSh 2,000
QR
space
Access code
WMS-QX93MT
Unlimited24 Hours5 Mbps
WMS-Hotspot
Connect to the Wi-Fi network, open any web page and enter this code.

See the network, not a guess about it

Router commands live in one service. Adding or swapping equipment means one provider class, not forty pages.

/ 04 — network

One path to the hardware

Every screen asks the same service, and the service asks the provider.

Admin pagea view, with no router code in it
NetworkServicebusiness rules, alerts, freshness
NetworkProviderMikroTik · Demo
RouterOS APIhotspot users, queues, sessions

What comes back, and what does not

  • Read live: status, CPU and memory load, uptime, interfaces, hotspot sessions, traffic counters.
  • Derived: access-point health, from the parent router's interface state.
  • Never invented: an unreachable router shows as unreachable, and the reading is labelled with its age.
  • Encrypted at rest: per-router credentials, never in HTML or JavaScript.

Plumbing, not a feature list

You are holding other people's money and other people's traffic. These are the defaults, not the upgrades.

/ 05 — trust
  • Passwords hashed with password_hash(), never stored or logged in the clear.
  • Prepared statements for every query, without exception.
  • CSRF tokens on every form and POST endpoint.
  • Router and payment credentials stay server side, always.
  • Login throttling against brute force, per account and per address.
  • Audit logging of logins, vouchers, payments, routers, staff and settings.

Two doors. Pick the one you came for.

Customers get online in three taps. Staff get the control centre, with everything above it in one place.