Network Snapshot
Live backend metrics, refreshed every 30 seconds
Active Hotspot Users
—
—
PPPoE Online
—
Stable
MPESA Payments (Today)
—
3 pending
Branches / Routers
—
Grouped by site
Traffic Usage
Hotspot and PPPoE traffic recorded by session accounting
0 B
Payment Trend
Successful collections grouped by selected period
Live Subscriber Mix
Waiting for the first sample
Live Operations Trend
Rolling samples from live overview polling, not simulated values in API mode
Recent Payments
Sample data (frontend only)
| Time | Phone | Plan | Amount | Status |
|---|
Quick Tools
Common actions
In API mode, branches/routers/plans are stored in DB. Vouchers/payments wiring comes next.
Branches / Sites
Register locations and attach routers to each branch
| Branch | Code | Location | Branch | Support | Routers | Status |
|---|
Best practice: Create all branches first, then register routers under each branch.
Plans
Manage hotspot + PPPoE packages (API-wired)
| Name | Type | Price | Validity | Speed | Status | Actions |
|---|
In API mode: plans are stored in DB and later the hotspot portal will fetch them dynamically.
Vouchers
Generate, export, and track voucher usage
Global vouchers show in every branch. Pick a branch to generate branch-only vouchers.
Optional label for this bulk generation.
Only Hotspot plans should be used for vouchers.
| Code | Branch | Plan | Status | Created | Started | Expires | Used |
|---|
In API mode: generating vouchers calls backend. Global vouchers have branch_id = null.
Payments
MPESA transactions (sample data)
| Time | Type | Phone | MPESA Receipt | Access / Voucher | Checkout ID | Plan | Amount | Status |
|---|
Subscriber Services
One lifecycle and billing view for PPPoE, DHCP/IPoE, and Static IP
| Service | Customer | Access Identity | Plan / Site | Billing | Authorization | Connection | Provisioning | Actions |
|---|
Access Networks
Tenant-scoped CIDR, gateway, DHCP server, and Router/NAS context
| Name | Branch / Router | Network | Purpose | DHCP Server / Pool | Mode | Status |
|---|
Register only networks actually present or intentionally managed on the selected router. Public networks must represent address space routed to that tenant.
PPPoE Subscribers
Accounts, expiry, and renewals
| Account | Plan | Phone | Router MAC | Expiry | Online | Status |
|---|
Corporate Accounts
Company billing groups, linked PPPoE users, shared renewal
| Company | Plan | Accounts | Usage | Expiry | Status | Actions |
|---|
Usage Analytics
Data usage over time for hotspot vouchers and PPPoE subscribers
Total Usage
—
Selected range
Hotspot Usage
—
Router polling data
PPPoE Usage
—
RADIUS accounting
| Service | User | Download | Upload | Total | Sessions | Last Seen |
|---|
PPPoE Requests
New connection requests from the portal
| Name | Phone | Location | Plan | Status | Requested | Expires |
|---|
Usage Analytics
Network-wide usage, heavy-user alerts, CSV export, and FUP checks
Loading usage analytics...
Reports
Payments summary with chart + export
MPESA Revenue
Today
Summary
Successful vs Pending
Total Success
0
Pending Count
0
| Date | Total | Count |
|---|
Operations Center
Tenant-scoped balances, reconciliation, onboarding, messaging templates, imports, and truthful network readiness.
Active Services
—
Billing/service state
Provisioning Failures
—
Requires operator review
Routers Observed
—
Real health snapshots only
Onboarding
—
Observed + manual checklist
Customer Balance / Statement
Uses the authoritative billing ledger; no duplicate balance is stored.
Select a customer ID to load ledger-backed balance and services.
| Time | Kind | Description | Debit | Credit | Status |
|---|---|---|---|---|---|
| No statement loaded. | |||||
Payment Reconciliation Queue
Unmatched provider payments stay unmatched until an operator selects a ledger charge.
| Received | Phone | Amount | Receipt | Match charge ID | |
|---|---|---|---|---|---|
| No unmatched payments loaded. | |||||
SMS Templates
Provider-neutral templates use the existing safe variable allow-list. Sending remains in SMS Center.
No preview.
| Key | Name | Status | |
|---|---|---|---|
| No templates loaded. | |||
Guided Onboarding
Observed setup facts are separated from operator confirmations.
No checklist loaded.
CSV Import / Export
Preview first; commits are limited, validated, tenant-scoped, and audited.
No import preview.
NOC Readiness
No router is called online from configuration alone.
No readiness snapshot loaded.
| Router | Observed status | Latency | Sampled |
|---|---|---|---|
| No routers loaded. | |||
Technician Queue
Assignment and internal notes are tenant-scoped; customer-visible notes are kept separate.
| Ticket | Customer | Issue | Status / SLA | Due | Assign admin ID | Internal note | |
|---|---|---|---|---|---|---|---|
| No tickets loaded. | |||||||
Operating Expenses
Tenant-scoped expense records with branch filters, receipt references, CSV export, and audit history.
No expenses loaded.
| Date | Category | Vendor | Amount | Branch | Reference |
|---|---|---|---|---|---|
| No expenses loaded. | |||||
Leads / Prospects
Track prospects separately; conversion is explicit and creates a normal tenant customer only after confirmation.
No leads loaded.
| Lead | Service | Status | Follow-up | Action |
|---|---|---|---|---|
| No leads loaded. | ||||
Invoice Aging / Receivables
Derived from billing_charges, the authoritative ledger. “Not observed” network state is never treated as paid or online.
No receivables loaded.
| Account | Customer | Due | Outstanding | Aging | Status |
|---|---|---|---|---|---|
| No receivables loaded. | |||||
Routers / Sites
Routers are registered under branches for monitoring and sync
| Branch | Router | Host | Status | Hotspot |
|---|
Next step: connect RouterOS API sync per branch (pull sessions/users/profiles).
Customers
Unified view (hotspot + PPPoE)
| Name | Phone | Type | Plan | Status |
|---|
Settings
Branding, MPESA, Router API, roles
Not connected
Branding
Portal name, support contacts
Used for tenant billing display, plans, reports, invoices and SMS variables.
Leave blank to keep current password. Demo mode will reject other passwords.
Automatic inactivity logout. Allowed range: 5–120 minutes. Default: 15.
Maximum lifetime even while active. Allowed range: 8–12 hours. Default: 12.
Global default. 0 means every child account requires an add-on or separate billing unless package/account overrides it.
Variables: {{full_name}}, {{first_name}}, {{account_username}}, {{package_name}}, {{package_price}}, {{installation_fee}}, {{initial_total}}, {{expiry_date}}, {{support_phone}}, {{support_email}}, {{website}}, {{currency}}
Saved to backend in API mode.
Hotspot Portal Defaults
Set branch defaults, then push `hotspot/config.js` to a branch router
Only one mode is active at a time, based on Default Branch Lock.
Save updates backend defaults for this tenant. Push writes `hotspot/config.js` to the selected router (branch-safe check enforced).
Portal Announcements
Show promos or notices on the hotspot page only when active.
You can paste an image URL or upload a photo from this device.
Once the hotspot page has this new code, announcements are pulled from backend automatically. You do not need to push text edits to the router each time.
| Title | Scope | Type | Window | Status | Priority | Action |
|---|
Integrations
MPESA + MikroTik RouterOS API
In API mode these are stored in DB and used by backend services. For custom providers, supply Daraja-compatible endpoint URLs in Provider Config JSON.
SMS Provider
Default is Africa’s Talking, but you can switch providers.
Stored separately for this tenant. Supports custom URLs, headers, JSON/form bodies, field names, and response paths.
Leave blank to disable SMS. For Africa's Talking sandbox, environment should be
sandbox and username can stay sandbox.
KRA eTIMS
Optional electronic tax invoicing through certified OSCU integration.
Use the official OSCU fields:
environment, pin, branch_id, device_serial, cmc_key, item_code, item_class_code, and taxation values. The communication key is returned only during successful device initialization.SMS Center
Send one-off messages, queue bulk campaigns, and review message history.
Manual SMS
Bulk SMS Campaigns
Build an audience from PPPoE and hotspot data, preview recipients, then queue a campaign without affecting manual SMS.
Choose an audience, then click
Preview Audience to see how many recipients will be reached.
Sent Messages & Delivery Reports
Every manual, voucher, customer, invoice, and bulk SMS is recorded here. Provider delivery callbacks update the final handset status.
| Time | Audience | Status | Recipients | By | Message | Actions |
|---|
| Time | Phone | Kind | Status | Provider | Cost | By | Message |
|---|
Recovery Access
Owner-only token for emergency password reset
Keep this token private. Use it only if you are locked out. Global-owner emergency recovery also requires the separate break-glass code configured on the backend.
Audit Logs
Recent admin actions
| Time | Action | Details | IP |
|---|
Branch MPESA Overrides
Optional per-branch credentials (overrides global)
Leave fields blank to use global credentials, provider, and provider config. This lets one branch use Daraja while another uses KCB or Equity.
Users & Roles
Create human-friendly roles, select module permissions, then assign them to admin users.
Tenant owners can create tenant roles only. Global/platform permissions are visible only to the Global Owner.
| Role | Description | Permissions | Users | System | Actions |
|---|---|---|---|---|---|
| No roles loaded. | |||||
Admin Users
Create and manage additional admin accounts
Create a new admin user. Password is required for new users.
| Name | Role | 2FA | Status |
|---|
Login Activity
Track admin login attempts
| Time | IP | Status |
|---|
Credits: Axoryn Labs
© SmartWaves Admin • UI