Skip to content

Change Plan (Self-Service)

The Change Plan tab lets you move to a different service plan without contacting your ISP — pick the new plan from a list, see the prorated cost, confirm. The system charges (or refunds) your wallet, updates your speed limits on the router, and disconnects you so you reconnect with the new pool / speed.

This is an optional feature. Your ISP and your reseller both have toggles that can disable it — if the Change Plan tab is missing, ask your provider whether they’ve enabled self-service plan changes.

From the portal sidebar:

  • Sidebar → Change Plan
  • Direct URL: /customer/change-plan
  • Mobile app: More → Change Plan

The tab is hidden when:

  • System-wide setting customer_change_service is off (admin disabled it globally), or
  • Your reseller’s setting customer_change_plan is off (your specific operator disabled it for their customers).

Both must be on for the tab to appear.

The Change Plan page has two sections:

SectionWhat it shows
Current plan cardYour active plan, balance, days left.
Available plans listEvery plan your reseller offers. Yours is marked “Current”. Each row is tappable.

When you change plan mid-cycle, the system charges or refunds based on the days remaining until your current expiry. The formula is:

remaining_days = min(expiry_date − today, 30) # capped at 30
old_daily_price = old_plan.price / 30
new_daily_price = new_plan.price / 30
prorated_amount = (new_daily_price − old_daily_price) × remaining_days

What happens depending on the sign:

CaseEffect
Upgrade (new plan more expensive)prorated_amount is positive. Charged from your balance. An optional upgrade_change_service_fee is added if your ISP set one.
Downgrade (new plan cheaper)prorated_amount is negative. Refunded to your balance — but only if your ISP enabled downgrade_refund. Without that, you just switch to the cheaper plan without getting money back. An optional downgrade_change_service_fee reduces the refund.
Same price (lateral)No charge, no refund.

You’re on a $30/month plan, 10 days into your cycle (20 days remaining). You upgrade to a $50/month plan.

  • old_daily = 30/30 = $1
  • new_daily = 50/30 = $1.67
  • diff = $0.67/day
  • remaining_days = 20
  • prorated = 0.67 × 20 = $13.40

Your wallet is charged $13.40. Your speed bumps up immediately. Your expiry date doesn’t change.

If prorated_amount > balance, the change is rejected with a message like:

Insufficient balance. Need $5.40 more (prorated 20 days). Current balance: $8.00.

You need to top up your wallet first (or ask your operator to do it).

By default, downgrades are allowed. The system-wide allow_downgrade setting (admin-controlled) can be turned off — in which case the Change Plan page will refuse downgrades:

Downgrade is not allowed. Contact your provider.

Some ISPs prefer to handle downgrades manually so customers think twice about it. If your ISP has this off, you can still ask them to change your plan from the admin side.

Switching plan does five things in sequence:

  1. Charges or refunds your wallet based on the prorated math above.
  2. Updates Mikrotik-Rate-Limit in radreply — the new speed (including any burst settings) will be applied on next session.
  3. Clears your Framed-IP-Address in radreply and releases the IP back to the pool — the new plan may use a different IP pool, so we let the router assign a fresh IP on reconnect.
  4. Updates Framed-Pool to the new service’s pool (if defined).
  5. Disconnects your active session via MikroTik API (or CoA Disconnect as fallback) so you reconnect immediately with the new settings.

Your internet drops for a couple of seconds while the router reconnects. Speed and IP both change. Expiry date does not change — only the plan, the speed, and the price-per-day change.

  • Your expiry date. Your cycle keeps running to the original date.
  • Your daily / monthly used counters. What you’ve already consumed this period stays counted.
  • Your username / password.
  • Your wallet balance, beyond the prorated charge / refund.
  • Your WiFi SSID / password on the router (if you have a TR-069 device).
  1. Change Plan → look at the plans list. The faster ones have higher prices.
  2. Tap the plan you want — a confirmation modal shows the prorated cost.
  3. Verify the math: “$X.XX for 20 remaining days”.
  4. Confirm. Wallet is charged. Your router disconnects for ~3 seconds and reconnects.
  5. Check the Dashboard — new plan name and new speed should be reflected.
  1. Change Plan → tap a plan with a lower price.
  2. If downgrade_refund is on, you’ll see a refund amount.
  3. If allow_downgrade is off, you’ll see “Downgrade is not allowed” — contact your ISP.
  4. Confirm. Wallet is credited (if refund is on). Router disconnects briefly and reconnects with the slower plan.

”I want to upgrade but my balance is too low”

Section titled “”I want to upgrade but my balance is too low””
  1. Change Plan → tap the target plan. Modal shows Insufficient balance — need $X.XX more.
  2. Cancel.
  3. Top up your wallet — either through your ISP’s payment channel, or via the Buy Extra Data page if you have credit there.
  4. Once balance is enough, retry the upgrade.
CaseBehavior
Expired planremaining_days = 0 → prorated = 0. Switching plan doesn’t charge anything, but you’re still expired. Renew first.
More than 30 days leftCapped at 30 in the prorated formula. Avoids absurd charges for prepaid annual plans.
Same planRejected with “Already on this plan”.
Plan deletedThe dropdown only shows plans is_active = true AND deleted_at IS NULL. Deleted plans cannot be selected.
Plan not assigned to your resellerThe available list is filtered to plans the reseller has assigned to themselves. Other plans are hidden.

A successful plan change creates one transaction row in your history:

FieldValue
typeservice_change
amountNegative (upgrade) or positive (downgrade refund).
description"Upgrade: Fiber 10M → Fiber 20M (prorated 20 days, $13.40)"
old_service_name / new_service_namePopulated for audit.

You can see this row in the Invoices & Receipts section or on the operator side under the subscriber’s billing tab.

The Change Plan tab has no permission gates beyond the two toggles described above. Visibility:

ConditionEffect
System customer_change_service = falseTab hidden for all customers across all resellers.
Reseller customer_change_plan = falseTab hidden for that reseller’s customers.
Both enabled, but allow_downgrade = falseTab visible, but only same-or-higher-price plans are selectable.