Customer Features (Mobile)
When a subscriber logs in to the ProxRad mobile app, they land in customer mode — a focused self-service surface scoped to their account. Every screen in this mode is a thin wrapper over the same API the web-based customer portal uses; nothing is computed on the device.
The customer mode replaces the SMS / email “what’s my usage today?” flow most ISPs still field by phone. It also lets subscribers do safe operations themselves — top-up, plan change, WiFi password reset — without occupying a CSR.
How to get here
Section titled “How to get here”- Install ProxRad from the App Store or Google Play.
- Enter your ISP’s ProxPanel URL (e.g.
https://panel.example.com). - Log in with the subscriber username and password your ISP provided. The username is usually in the form
name@domain. - The app detects
user_type = "customer"and routes you to the customer tab bar.
Screen-by-screen
Section titled “Screen-by-screen”Dashboard
Section titled “Dashboard”Screen file: mobile/src/screens/customer/CustomerDashboard.js
API endpoints:
GET /api/customer/dashboard— plan, expiry date, balance, online statusGET /api/customer/live-traffic— current download / upload in Mbps + session uptime (polled every 3 s while focused)
The dashboard answers four questions:
- Am I online right now? Online indicator, current uptime.
- What’s my plan? Service name, contract speed.
- When does my plan expire? Days remaining, expiry date.
- What’s my balance? For prepaid models — credit remaining, last top-up.
The live traffic widget is a small two-line chart of Mbps down / Mbps up over the last 60 seconds. It’s powered by the same MikroTik torch query the admin Sessions page uses (or the radacct delta on generic-RADIUS NAS). On servers where torch isn’t reachable, the widget falls back to a polling estimate from radacct interim updates — added in v1.0.5.
Screen file: mobile/src/screens/customer/CustomerUsageScreen.js
API endpoints:
GET /api/customer/usage— circular progress for daily + monthly with the matching numeric countersGET /api/customer/usage-history?days=30— per-day breakdown for the last 30 days
The Usage screen has two stacked sections:
| Section | What it shows |
|---|---|
| Quotas | Two circular progress rings — daily and monthly. Each shows GB-used / GB-cap and current FUP tier. |
| History | Vertical list of the last 30 days. Tap a day to expand and see every PPPoE session that day (start, stop, duration, GB). |
The session-list view is the same data the Sessions page shows, but scoped to the logged-in subscriber and read-only.
WiFi (TR-069)
Section titled “WiFi (TR-069)”Screen file: mobile/src/screens/customer/CustomerWiFiScreen.js
API endpoints:
GET /api/customer/cpe— current SSID and password per band, online statusPOST /api/customer/cpe/wifi— change SSID / passwordPOST /api/customer/cpe/reboot— reboot router
Visible only if the subscriber has a CPE device linked. This screen lets a customer:
- See their current WiFi SSID and password (2.4 GHz and 5 GHz separately if dual-band).
- Change the SSID, the password, or both. Pressing Save queues a TR-069 SetParameterValues task and waits for the device to ACK (typically 5 – 30 s).
- Reboot the router. The device must phone home to the TR-069 ACS to accept the command — if the customer’s router is in a tunneling loop, the reboot will not arrive until they physically power-cycle.
Top-Up
Section titled “Top-Up”Screen file: mobile/src/screens/customer/CustomerTopUpScreen.js
API endpoints:
GET /api/customer/topup-options— packages the customer can buy (price, GB, extra days)POST /api/customer/topup— execute the top-up
Two flavors of top-up are shown side-by-side:
- Data top-up — buy extra GB to extend the monthly FUP quota. Cost and GB are configured per service plan (
services.topup_packages). - Prepaid card — enter the code from a prepaid card. Credit hits the wallet, then auto-renews if the plan is due.
A successful top-up:
- Records a
transactionof typedata_topuporprepaid_card. - Updates
subscribers.daily_quota_used/monthly_quota_usedif the package adds GB. - Pushes a WhatsApp confirmation if Communication Rules are configured.
Tickets
Section titled “Tickets”Screen file: mobile/src/screens/customer/CustomerTicketsScreen.js
CustomerTicketDetailScreen.js+CreateTicketScreen.jsAPI endpoints:
GET /api/customer/tickets— listGET /api/customer/tickets/:id— detailPOST /api/customer/tickets— createPOST /api/customer/tickets/:id/reply— reply
The customer can:
- Open a new ticket. Optional photo attachment (
expo-image-picker); since v1.0.4, the device’s GPS coordinates are attached if location permission was granted (used by field-service ISPs to dispatch a technician). - Reply to existing tickets.
- See the support agent’s replies threaded inline.
Tickets surface on the admin side under Tickets — same data, full read/write for staff.
Account + Password
Section titled “Account + Password”Screen file: mobile/src/screens/customer/CustomerAccountScreen.js
API endpoints:
GET /api/customer/account— name, phone, email, address fieldsPUT /api/customer/account— update contact detailsPOST /api/customer/change-password— change PPPoE / portal password
Customers can update their own name, phone, email, and address. They can also change their PPPoE password, which:
- Updates the plaintext + encrypted password on the
subscribersrow. - Updates the
radcheckCleartext-Password attribute. - Disconnects the active session (CoA Disconnect) so the next reconnect uses the new password.
If a customer keeps disconnecting and reconnecting after changing the password, double-check that the router stores the password in its PPPoE profile, not just in a router-side credential vault.
Public IP
Section titled “Public IP”Screen file: mobile/src/screens/customer/CustomerPublicIPScreen.js
API endpoints:
GET /api/customer/public-ip— current rented IP if any + pricePOST /api/customer/public-ip/rent— rent a fresh IP from the poolPOST /api/customer/public-ip/release— release the IP and stop billing
If your installation has the Public IP feature enabled, customers can rent a routable IPv4 from the pool. The flow:
- Customer taps Rent a Public IP.
- A confirmation modal shows the monthly fee.
- On confirm, an IP is reserved from the pool (
public_ips.status = rented), a transaction is recorded, and a Framed-IP-Address row is created in radreply for the subscriber. - The session must reconnect for the IP to take effect — the app prompts the customer and disconnects them.
Change Service
Section titled “Change Service”Screen file: mobile/src/screens/customer/CustomerChangeServiceScreen.js
API endpoints:
GET /api/customer/services— services the customer is allowed to switch toPOST /api/customer/change-service— execute the change
Visible only if the parent reseller has can_change_service = true. The customer:
- Picks a different plan from the list of allowed targets.
- Sees a prorated charge / credit preview (server-side math, not done on device).
- Confirms.
The service change disconnects the active session so the router fetches a new IP from the new pool (see IP Pool Management).
Parental Controls
Section titled “Parental Controls”Screen file: mobile/src/screens/customer/CustomerParentalScreen.js
API endpoints:
GET /api/customer/parental/devices— connected devices grouped by hostPOST /api/customer/parental/block— block a devicePOST /api/customer/parental/schedule— set a schedule
Visible if the subscriber has parental controls enabled on their plan. Each device behind the home router (discovered via TR-069 hosts or DHCP leases — see Parental device sync) shows up with:
- A friendly name (editable).
- A “blocked / allowed” toggle.
- An optional weekly schedule (e.g. block Xbox between 22:00 and 06:00).
Enforcement happens via firewall rules on the MikroTik (mangle + drop) — the mobile app only edits the schedule, the BNG enforces it.
Permissions
Section titled “Permissions”Customer mode has no permission system in the panel sense — there is exactly one role, “the subscriber themselves.” What’s gated is:
| Capability | Gated by |
|---|---|
| Change service | Parent reseller’s can_change_service flag. |
| Public IP rent | public_ips feature enabled + pool has free IPs. |
| Parental controls | Customer’s plan has parental flag set. |
| Top-up | Service plan has at least one top-up package configured. |
| WiFi screen | A CPE device is linked to the subscriber. |
If none of those apply, the screen simply isn’t shown in the tab bar.
Related pages
Section titled “Related pages”- Customer Portal (web) — same features in a desktop browser.
- TR-069 ACS — what makes the WiFi screen possible.
- Prepaid Cards — backing inventory for the top-up flow.
- Public IPs — the admin side of public IP rentals.
- Parental Controls — how connected devices are discovered.