Services & Plans
A Service is the contract you sell to subscribers: how fast their link is, how much they can use, what they pay, and how speed steps down when they hit a Fair Usage Policy (FUP) threshold. Every subscriber is bound to exactly one service via subscribers.service_id.
ProxPanel’s service model goes further than most ISP platforms: six daily FUP tiers plus six monthly FUP tiers, an independent CDN-traffic FUP, configurable burst, time-based free-hours, soft-FUP that keeps burst alive after throttling, and per-service NAS + IP pool assignment.
How to get here
Section titled “How to get here”Sidebar → Services. Direct URL: /services.
Requires services.view. Most resellers can read but not edit; admins always have full control.
Layout
Section titled “Layout”| Section | What it shows |
|---|---|
| Service table | Sortable list: Name, Speed, Price, Subscribers count, Actions |
| Add Service button | Opens the create form |
| Row click | Opens the Duplicate Service popup (name auto-filled “Name (Copy)“) |
| Actions column | Edit and Delete |
The table is sortable by clicking column headers — Name (A→Z), Speed (numeric, so 1M, 2M, 4M, 10M not lexical), or Price. The sort selection is saved to localStorage and persists across logins.
Speed format — kb
Section titled “Speed format — kb”Speeds are stored as integers in kb (kilobits per second). The convention is consistent everywhere — RADIUS replies, MikroTik queues, frontend display labels.
2000means 2000k = 2 Mbps12000means 12000k = 12 Mbps0.5Mtyped in the form is auto-converted to500(500k)
There is a helper, convertSpeedForMikrotik(), in the service handler that accepts "2M", "1.5M", "2000", or "2000k" and normalises to "2000k" on save.
Form sections
Section titled “Form sections”The create / edit form is grouped into sections. Required fields are marked with an asterisk.
Basics
Section titled “Basics”| Field | Notes |
|---|---|
| Name* | Internal identifier shown in dropdowns and lists. |
| Commercial Name | What appears on customer-facing invoices and the portal. |
| Description | Free text. |
| Price* | Default price for renewal. Per-subscriber override available on subscriber edit. |
| Day Price | Per-day price for partial-period billing (used during Change Service prorate). |
| Reset Price | Charge to manually reset FUP counters mid-cycle (admin-set; subscriber sees this in the portal’s “Reset FUP” button). |
| Field | Notes |
|---|---|
| Download Speed (kb)* | Stored as download_speed. Sent to RouterOS as Nk in the Mikrotik-Rate-Limit reply. |
| Upload Speed (kb)* | upload_speed. |
| Download Speed String | Auto-derived from numeric value (e.g. “10M”). Used for display and back-compat. |
| Upload Speed String | Same. |
Burst (optional)
Section titled “Burst (optional)”When configured, RouterOS allows brief speeds above the normal limit:
| Field | Meaning |
|---|---|
| Burst Download / Upload | Maximum burst rate in kb. |
| Burst Threshold | Percent of normal max-limit. RouterOS uses this as the average-rate trigger that pauses burst. |
| Burst Time | Sliding-window duration in seconds (default 10). |
The Mikrotik-Rate-Limit string assembled is:
up/dl burst_up/burst_dl threshold_up/threshold_dl time/timeSoft FUP
Section titled “Soft FUP”Checkbox Soft FUP Enabled. When on, FUP tiers send the throttled rate plus the burst configuration so brief page-loads still feel snappy while sustained downloads stay clamped. When off (default), FUP writes the plain throttled rate with no burst.
Quota (bytes; 0 = unlimited)
Section titled “Quota (bytes; 0 = unlimited)”- Daily Quota — Resets at the daily reset time (default 00:05, set in Settings → RADIUS).
- Monthly Quota — Resets on renewal.
- Time Quota — Minutes per day. Less commonly used.
Daily FUP tiers (six)
Section titled “Daily FUP tiers (six)”Each tier has three fields:
| Field | Notes |
|---|---|
| FUPN Threshold | Bytes used (daily_download_used + daily_upload_used) at which this tier triggers. 0 = disabled. |
| FUPN Download Speed | kb to throttle download to once tier crosses. |
| FUPN Upload Speed | kb. |
Tiers are evaluated in order: FUP1, FUP2, FUP3, …, FUP6. Crossing FUP3 means QuotaSync writes FUP3 speeds and sets subscribers.fup_level = 3. The daily reset service zeros fup_level back to 0 at the daily reset time.
Monthly FUP tiers (six)
Section titled “Monthly FUP tiers (six)”Same structure but evaluated against monthly_download_used + monthly_upload_used (plus bonus_data if any). When triggered, sets subscribers.monthly_fup_level. Monthly counters reset only on Renew.
CDN FUP (optional)
Section titled “CDN FUP (optional)”Checkbox CDN FUP Enabled. When on, CDN-only traffic gets its own three daily + three monthly FUP tiers. Used to give customers extra speed for Akamai/Cloudflare/local-mirror downloads without affecting their main quota.
See CDN Management for the matching subnet definitions and PCQ setup.
Free Hours — Quota Discount
Section titled “Free Hours — Quota Discount”(Renamed from “Time-Based Speed Control” in v1.0.246.)
Defines a daily time window during which a percentage of usage is not counted against quota.
| Field | Meaning |
|---|---|
| Time-Based Speed Enabled | Master on/off. |
| From / To | Hour and minute range (e.g. 00:00 to 06:00 = midnight to 6 AM). |
| Download Ratio | 0–100. The percent of usage that is free during the window. 100 = completely free; 70 = 70% free, 30% counted; 0 = no discount. |
| Upload Ratio | Same idea for upload. |
Formula applied by QuotaSync per 30-second cycle:
counted_bytes = delta_bytes × (100 − ratio) ÷ 100Expiry
Section titled “Expiry”| Field | Notes |
|---|---|
| Expiry Value | Integer. |
| Expiry Unit | days or months. So 1 + months = monthly billing; 7 + days = weekly. |
| Entire Month | When checked, renewal always sets expiry to end-of-month regardless of when the renewal happened. |
| Monthly Account | Legacy flag; preserved for older imports. |
NAS + IP Pool assignment
Section titled “NAS + IP Pool assignment”| Field | Notes |
|---|---|
| NAS / Router | Pick from the dropdown. Stored on the service as nas_id. RADIUS uses this to route accounting/CoA when the subscriber row’s nas_id is unset. |
| Pool Name | Fetched live from the NAS via /api/nas/:id/pools. RADIUS sends this as Framed-Pool so RouterOS assigns the user’s IP from this pool. |
| Address List In / Out | Optional MikroTik address-list tags for downstream firewall classification. |
| Queue Type | simple by default. PCQ types come from CDN configuration. |
When editing an existing service, the saved pool appears in the dropdown as PoolName (current) even if no NAS is currently selected — so it’s never lost on save.
Generic-RADIUS / Filter-Id (optional)
Section titled “Generic-RADIUS / Filter-Id (optional)”For non-MikroTik BNGs (Cisco/Juniper/Huawei). When set, RADIUS sends RFC-2865 Filter-Id with the configured class-map name; the operator pre-configures the matching policy on the BNG.
| Field | Sent when |
|---|---|
| Filter-Id Normal | At full speed |
| Filter-Id FUP1 / FUP2 / FUP3 | After each daily threshold is crossed |
If blank, the service name is sent instead (back-compat fallback).
Click headers to sort. Sortable columns:
- Name — A→Z / Z→A.
- Speed — Numeric (1M, 2M, 4M, 8M, 10M — not alphabetical). Compares
download_speedinteger. - Price — Numeric ascending / descending.
Sort persists in localStorage.
Duplicate
Section titled “Duplicate”Clicking a row (not on Edit or Delete) opens the Duplicate Service popup with the name pre-filled as Name (Copy). Confirm to clone every field — speed, price, all 12 FUP tiers, CDN config, burst, pool, time-based, quotas — into a new row.
This is the fastest way to create a tier-set: configure one carefully, then duplicate-and-tweak for each speed point.
Sort order in dropdowns
Section titled “Sort order in dropdowns”The sort_order integer controls the order services appear in subscriber-edit dropdowns and the customer portal’s plan-change list. Smaller numbers appear first. Use this to put your best-seller at the top.
Common workflows
Section titled “Common workflows”Create a tier from 2 Mbps to 50 Mbps in 5 minutes
Section titled “Create a tier from 2 Mbps to 50 Mbps in 5 minutes”- Add the 2 Mbps service with full FUP tiers and pool.
- Save.
- Click the row to open Duplicate, rename to “4 Mbps”.
- Edit the duplicate, change download/upload to 4000/2000, save.
- Repeat for 8 Mbps, 10 Mbps, 20 Mbps, 50 Mbps. Each new tier reuses the FUP curve and pool assignment.
Add a CDN tier on top of an existing service
Section titled “Add a CDN tier on top of an existing service”- Set up the CDN profile in CDN Management first.
- Open the service.
- Tick CDN FUP Enabled.
- Fill the three daily and three monthly CDN FUP tiers (these are independent of normal FUP).
- Save. QuotaSync now applies CDN-rate-limits to PCQ queues for CDN-tagged traffic.
Set “free downloads 00:00 to 06:00”
Section titled “Set “free downloads 00:00 to 06:00””- Open the service.
- Tick Time-Based Speed Enabled.
- Set From
00:00, To06:00. - Set Download Ratio
100, Upload Ratio100. - Save. During those hours, downloads count for 0% of quota.
Permissions
Section titled “Permissions”| Permission | Effect |
|---|---|
services.view | Page loads. |
services.create | Add Service + Duplicate Service buttons appear. |
services.edit | Edit button on each row. |
services.delete | Delete button. Refused if any subscriber still references the service. |
Related pages
Section titled “Related pages”- Subscribers — where you assign a service to a customer.
- FUP Counters — distribution of subscribers across the tier definitions on this page.
- CDN Management — defines the subnets that CDN FUP tiers apply to.
- Bandwidth Rules — global time-based multipliers that stack on top of service speed.
- NAS / Routers — source of the NAS and IP pool dropdowns on this page.