Changelog

What's new in iBilling

Every feature, improvement, and fix we ship — straight from the engineering team. Follow along via RSS or our monthly digest.

v2026.09.30.410 Oct 2026

Mark as Unpaid: undo a mistaken payment without reversing the invoice

### Added

  • Mark as Unpaid: when a payment was recorded by mistake, it can be taken back

without reversing the invoice. The invoice goes back to unpaid (or partly

paid), the customer keeps their expiry and package, money paid from the

wallet returns to the wallet, and paying the invoice again later does not

renew the customer a second time. Admins can use it, and resellers can use it

for money their own account collected. Turn it on in Settings → Invoice →

Controls and choose how many days after a payment it is allowed (7 by

default). The payment history shows who marked it unpaid and why, and the

customer can be sent an SMS about it. For now, a few revenue reports still

show the change in the month the payment was first made.

v2026.10.0610 Oct 2026

Android admin app and a new look for many pages

### Added

  • New iBilling Admin app for Android, for ISP owners, staff and resellers (not customers).

Type your ISP's name or panel address once and the app remembers it; people who work for

more than one ISP can switch between them. Exports and receipts open the phone's share

sheet so you can save or send them, invoices print or save as PDF, and payments open

inside the app. The app updates itself in the background whenever the panel is updated,

so most changes arrive without a store update.

  • The admin panel now works better on phones. A bar at the bottom of the screen gives one-tap

access to Home, Customers, Collect (or Wallet for resellers) and More, plus a green + button

for quick jobs like adding a customer or collecting a payment. More lists every page you can

open, grouped like the side menu, with a search box, language, dark mode, profile and sign

out. The phone's Back button closes an open panel before leaving the page. Tablets and

computers look the same as before.

  • The Employee Roles page has a new look. Roles show as cards with a bar showing how much of

the panel each role opens, or as a table with every column from before. New summary

figures at the top, and filters for status, role type and where a role comes from.

Clicking a role opens its details, including who has it, and you can give the role to an

employee or take it away from there. Roles nobody uses can now be deleted.

  • Bulk Recharge can now mark all invoices as paid. In the Recharge Only drawer, turn on

"Mark all invoices as paid", then choose one payment method, the bank account for a

bank method, and who received the money. Every invoice is created and settled in full

with that payment. It is off by default, and with it off bulk recharge works exactly as

before.

  • The customer export has a new **Due** column, in CSV, Excel and PDF. It shows what each

customer still owes on unpaid and partly paid invoices, the same amount shown in red under

Balance on the customer list. Wallet Balance only shows prepaid credit, so a customer with

unpaid invoices used to export with no sign of the money owed. Due is included in the

Billing preset.

### Improved

  • My Packages has a new look. A price ladder at the top shows what you pay, what your

resellers pay you and what subscribers pay, next to tiles for packages, subscribers, profit

per cycle and packages that need attention. Filter by Priced, No selling price or Below

cost, search, switch between table and cards, and click a package to see its pricing and

change its prices without leaving the page. Export is coming soon.

  • New look for the Sales Report. Total retail price, cost and profit now read as one sum with

the profit margin beside it, followed by how much was billed, collected and still owed.

Pick a period with one click, search by invoice, customer or username, and click any

invoice to see its full breakdown. Daily sales and top earners are shown as samples for

now and will use your own figures in a later update.

  • The IP Pools page has a new look. A summary shows how many addresses all your pools hold and how many

are in use, pools that are 90% full or more are flagged so you can act before customers stop getting

an address, and you can filter by type or show only the pools running low. Each pool is a card with a

fill map, and the old table is one click away. Adding or editing a pool opens a side panel that tells

you how many addresses the range holds before you save, and warns when a range is too big.

"Generate IPs" is now offered only on static pools, where it works.

  • New look for the Static IP page: totals for all, free and assigned IPs, a pools list to

filter by pool, an IP map view, and a side panel with each IP's customer, pool, price and

actions. Admins can select several IPs and remove them at once; assigned IPs are kept until

the customer's package expires, so nobody is cut off.

  • The ONUs page has a new look. Count cards for total, online, offline and unconfigured ONUs

filter the list in one click, a signal health card groups ONUs by signal quality, and an

ONUs by OLT card shows each OLT's online and offline split. Click any ONU to see its signal,

customer and device details in a side panel, and map unassigned ONUs straight from the list.

The customer link on each ONU now opens the right customer page.

  • The Reseller Growth report has a new layout: a summary of new customers against the last

period, top movers, a new-customer race, each reseller's share of customers, and a

searchable table with type and trend filters. Click a reseller to see their details.

It also shows customers lost and money collected for each reseller.

  • New look for the Wallet report: a money flow card (credit minus debit equals net flow) with

how many resellers were involved and the largest movement, a daily flow chart, and a By

source card you tap to filter. Type and Source are now tabs and chips with counts, rows are

grouped by day with day totals, and tapping a row opens the full transaction with the

balance before and after and who recorded it. Every column, filter and the CSV export are

still there, phones show each movement as a card, and Export is only shown to people

allowed to export.

  • The BTRC DIS report page has a new layout. Pick a quarter in one tap, set the batch

defaults with simple switches, and see exactly how many subscribers will go into the

file before you export it, including when you narrow it to a division, district or

upazila. A new column map shows where each of the 15 BTRC columns gets its value. The

exported file is unchanged.

  • The Recharge History page has a new look. Pick the period with one tap, see totals with a

paid/unpaid bar, and switch between All, Paid and Unpaid. Click any recharge to see its

payment type, where the money was deposited and the note. Admins can mark an unpaid

recharge as paid, and you can recharge a reseller straight from this page. The per-day

chart and top resellers list show sample figures for now, marked "Sample data".

  • New look for Messaging > Templates: counts of active, inactive and unused templates, how many

templates send on each channel, topic filters, and a side view showing the message, its

channels and a preview of what the customer receives. Editing opens in a side panel that

warns about variables the template cannot fill before you save.

  • The Assign Packages page has a new look. Admins see each package's old and new price side

by side, can select several packages and set a price or change prices by a percentage in

one go, and check every change before saving. Resellers see their locked cost with their

profits stacked on top and what each buyer will pay, with a clear note when a change

will be skipped.

  • The Package Usage report has a new look. It shows exactly which dates are being compared,

adds net growth and invoiced totals, highlights the biggest rise, drop, growth and churn,

lets you switch the chart between total, download and upload, and lets you search, filter

and sort the comparison table. You can export it to CSV, and on a phone each package shows

as a card.

  • New look for the Collector Statement report. Pick a collector from a list that shows how much

cash each one still holds today, then see what they owe, where the collected cash went, a chart of

collected against handed over, and each month's handovers and daily rows. The amount owed now says

which day it is counted on. You can receive cash straight from the report. The same statement also

opens from Admin Collection and from a staff member's Collections tab. Export is coming soon.

  • New look for the OLT add and edit page, matching the NAS page: brand and PON type tiles,

SNMP and Telnet sections, a live preview card, and Test Connection and Scan right on the

edit page. Switching between Telnet and SSH now moves the port to the usual one for you,

and the model and PON type found by Test Connection are kept when you save.

  • New look for the OLT page: a dark header with the main buttons, ONU count tiles you can

click to filter, health dials, and PON port cards you click to see only that port's ONUs.

Every ONU column, filter and action is still there, and phones show each ONU as a card.

  • New look for the NAS page: a dark header with all seven figures and the main buttons, tabs

as pills with counts, and locked tabs now say why they are locked. The Overview tab shows

health, clock, device details and API and RADIUS side by side, and Router setup shows a

summary of the checks.

  • The add and edit NAS page is redesigned. Router type, service type and Direct or VPN are

now cards you click, and a preview beside the form shows how iBilling will talk to the

router and what still needs filling in. You can generate a strong RADIUS secret in one

click, and the page warns when the disconnect port is not 3799. When editing, you can run

Ping, Test RADIUS, the disconnect port check and Router health without leaving the page.

  • On a phone, list pages no longer show a squeezed table you have to scroll sideways. Each row

becomes a card with every column, in the same order, and the ⋯ menu in its corner. Press and

hold a card to select it, then tap more cards; the bulk buttons float above the bottom bar.

The page title now shows once, in the top bar. Tablets and computers keep the tables.

  • On a phone, the Online, Offline and MAC Binded customer pages and Leads now have their own

cards: usage, IP and router up top for online sessions, the last session and why it ended for

offline customers, the bound MACs with their lock state, and a stage bar for each lead. Call,

Live Traffic, Ping, Reset MAC and Edit sit on the card; the ⋯ menu still has every action.

  • On a phone, the Staffs, Resellers, Sub Resellers and Retailers lists now show one card per

person: balance, packages and subscribers up top, who they sit under, their role and groups,

and Call and Add Balance on the card. Tap a card to open the profile.

  • On a phone, Packages, Prepaid Cards, Voucher Cards and the Ledger report now have their own

cards: speed and subscribers for each package, how many cards in a batch are used and how

much they brought in, and for each ledger entry the amount, from and to, and the balance

before and after. Generate, Print and Reverse sit on the card.

  • On a phone, NAS, OLT and ONUs now have their own cards: each router with its customer

count and group plus Test RADIUS and Test API, each OLT with its ONU count and Test

Connection, and each ONU with its signal meter, RX, TX and temperature, and Map to Customer

when it is not linked yet.

  • On a phone, Recharge History and Session Logs now have their own cards: who was recharged,

by whom, the amount and the balance before and after; and for each session the login and

logoff times, how long it lasted, and how much was used.

  • Every confirmation popup in the panel now looks the same: a red, amber or blue icon shows

whether the action deletes something, changes something, or is safe. On a phone, the Back

button closes the popup instead of leaving the page.

  • The customer ⋯ menu on every customer list opens as a bottom sheet with large buttons on

phones, and Back closes it. Actions that cannot run yet show a lock and say why. Delete,

block and the other confirms on the customer pages now look the same everywhere, and on a

phone Back closes them. Deleting a customer forever now asks you to type their username

first.

  • On phones, the customer side panels open as bottom sheets or full-screen pages instead of

a squeezed slide-in: quick view, timeline details, customer settings, export, import, and

the action forms such as Recharge, Change Package and Change Expire Date. Back closes them.

Recharge, Change Expire Date and Import ask before throwing away what you typed.

  • On phones, the money forms and statements now open as full-screen pages with the buttons

pinned at the bottom: Receive collection, Record collection, collector and ledger

statements, Pay invoice, Pay several invoices, New invoice, payment reminders, New

withdrawal and Reject withdrawal, Add or Edit expense, Add money to a customer wallet, Add

wallet balance, the digital and mobile payment panels, and the supplier ledger. Back

closes them, and closing a half-filled payment form asks first. Several texts in these

forms that showed in English now show in Bangla and Urdu.

  • Every ⋯ actions menu across the panel (packages, NAS, OLT, ONUs, invoices, resellers,

staff, leads, HR, inventory, settings lists and more) and the More menus on the customer

and reseller profiles now look and work the same. On a computer they open as a menu

beside the button; on a phone they open as one bottom sheet with large buttons, and Back

closes it. An action you cannot use shows why under its name, and a running action shows

a spinner. A few menu labels that showed in English now show in Bangla and Urdu.

  • Side panels, pop-up menus and dropdowns now have a plain solid background instead of the

see-through frosted look, so their text is easier to read. On phones, a pop-up message now

appears above the selection bar or the Recharge bar instead of on top of it.

  • The customer lists are easier to use on a phone. Each customer shows as a card with their

number, package and price, balance and amount due, expiry date, area, owner and status,

plus Call, WhatsApp and Renew buttons. Tap a card to open the customer, or press and hold

to select customers for bulk actions. The summary tiles scroll sideways, the status tabs

are buttons you can swipe, and Sort, Filters, Export and Import each open as a panel from

the bottom of the screen. "Load 25 more" at the end of the list shows more customers. The

Expired, Grace, Blocked and Deleted lists show their own details on each card. Tablets and

computers look the same as before.

  • Customer Collection, Invoices, the customer profile and Tickets are easier to use on a

phone. Bills and invoices show as cards with the amount, what is paid and what is still

due, plus Call, WhatsApp and Collect or Pay buttons. Press and hold a card to select

several and pay them together. Status tabs are buttons you can swipe, and filters, sort

and actions open as panels from the bottom of the screen. On the customer profile, Call,

WhatsApp, SMS and Edit sit under the header, the tabs stay at the top while you scroll,

and tables show one row per block so nothing scrolls sideways. A ticket shows its replies

as a chat with the reply box at the bottom, and a Ticket info tab holds the details.

Tablets and computers look the same as before.

  • Mobile Payments, Digital Payments, Resellers, the reseller profile and All Users are easier

to use on a phone. Mobile Payments shows each SMS as a card with the amount, status, the

reason it is waiting and who it went to, with Retry or Assign on the card and every other

action in a panel from the bottom of the screen; phones and templates show as cards too.

Digital Payments puts the collected amount, a "Needs you" row and the gateways on the

first screen, above the payment cards. Resellers shows the summary as a sideways strip,

status buttons with counts, and a card per reseller with the balance (red when low),

Call, WhatsApp and Add Balance; tap a card for the full details. On the reseller profile,

Call, WhatsApp, Login as and Edit sit under the header and the tabs stay at the top while

you scroll. Long lists show "Load 25 more" instead of pages. Tablets and computers look

the same as before.

  • The New package and Edit package pages have a new layout. The form is split into six

sections (Basics, Renewal, Invoices and tax, Network and speed, Expiry and access, Fair

use) with a step list to jump between them. Service type, billing type and billing cycle

are picked from cards, duration has quick picks (7 days, 1, 3 or 6 months, 1 year), and

the fixed expire day is picked from a calendar grid. A live preview beside the form shows

the package as you build it, a short summary, the exact speed limit the router will get,

and what is still missing before you can save. On a phone the preview opens from a

Preview button. Every field from the old page is still there and is saved the same way.

  • The role permissions page has a new layout. A summary at the top shows how much of the

role is turned on, how many groups it can use, which customers it can see, its owner and

how many users have it. Permission groups sit in a side list with a progress bar each, and

inside a group the switches are sorted under short headings with a "Turn all on" link.

Risky permissions carry a red Sensitive tag. A search box and On / Off / Changed filters

find any permission quickly, and an Overview shows every group at a glance. Changes in

several groups can now be saved together, or discarded, from one bar at the bottom.

  • The Customer Collection page has a new look. Pick a month from the strip at the top to

see what is still to collect in it, with a progress ring showing how much is already

paid. Bills are split into Unpaid and Partly paid tabs, each row shows how many days old

the bill is, and active filters show as chips you can remove. Select several bills and a

bar at the bottom shows the total due with a Pay Selected button. The Collect dialog now

has Full and Half buttons to fill in the amount. On a phone, bills show as cards. A

bill-age summary and a combined "All due" list are shown as coming soon.

  • The Digital Payments page has a fresh layout. The top shows how much was collected, with

Total, Paid, Pending and Failed tiles you can click to filter. A "Needs you" list counts

payments that need a customer, a check with the gateway, or that failed in the last 7 days,

and a card per gateway shows its amount and filters the list in one tap. Status tabs show a

count each, dates have quick picks (Today, 7 days, This month), and the five column filters

sit under More filters. Rows have a one-click Assign or Verify button and a copy button for

the transaction ID. The payment details now show what happened step by step before the raw

data, and on a phone each payment is a card. Every column, filter and action from before is

still there. The small paid-per-day chart shows sample data for now.

  • The Monthly Revenue Summary report has a fresh layout. Period buttons sit in one row and

the page opens on This Year. A profit statement shows revenue minus cost equals profit,

with the profit margin, average invoice and best month. The chart and the monthly table

share one card, and the table now has a Total row and a Margin column. Plans, Customer

Types and Regions are tabs with each one's share of revenue, and Collected By shows how

much of each collector's revenue was collected.

  • The Cashflow page has a new look. A net cashflow panel sits beside a day-by-day chart of

money in, money out and the running balance; click a day to see only that day. Two new

cards show where money came from and where it went (subscriber payments, other income,

inventory sales, expenses, salaries, staff advances); click a line to filter the list.

The list has All / Income / Expense tabs with counts, shows how each entry was made and

its payment method, groups entries by day, and has a story view. Totals now follow every

filter. All buttons, filters, columns and the CSV export work as before.

  • The Admin Collection page has a fresh layout. A summary card shows how much cash is still

with your collectors, with a bar for what you received, what is still owed and what went on

expenses. A new chart shows how the money was collected (cash, bKash, bank and so on), and a

"Waiting to hand over" list shows the collectors who still owe you, biggest amount first,

each with its own Receive Now button. The collector sheet keeps every column, adds status

tabs with counts (including Carried Forward, which could not be filtered before), a totals

row and a card view on phones. The receive drawer adds one-tap Full and Half amounts and

shows what will still be owed after the payment. The Collector Statement now shows the

number of invoices as a count instead of a money amount, and the CSV export also includes

Received, Last Received and Status.

  • The Reports page has a fresh layout. This month's revenue, collected, invoices and

outstanding sit in one strip, and each number opens the report it comes from. A new bar

shows how much of the outstanding money is 0 to 7, 8 to 30, 31 to 60 and over 60 days old.

A search box (Ctrl K) finds a report as you type, starred reports sit in a Pinned row, the

last reports you opened are listed, and a group list jumps to each section. Reports can be

shown as tiles or as a list.

  • The All Users page has a new look. Tier cards (All, Staffs, Resellers, Sub-Resellers,

Retailers) replace the tabs and show active counts. A strip shows money in reseller wallets

and lets you jump to users with a zero or negative wallet, users who never logged in, and

users who are not active. You can now filter by status, pick join dates from presets, choose

which columns to show, see the reseller chain as a tree, and click a user for a quick view.

Every column and action from before is still there. On a phone the list shows as cards.

  • The Subscription page has a new layout. A licence card at the top shows your plan,

status, Cloud or Self-hosted, licence ID with a Copy button, start and end dates, and a

ring counting the days left. Beside it, admins see what they owe iBilling in total with a

Pay button. Customer, NAS and OLT limits show as gauges with how many more you can add.

A checklist shows which server actions your plan includes, and the support email has a

Copy button. Billing history can be filtered to All, To pay or Paid, shows as cards on a

phone, and no longer offers Pay on a refunded bill.

  • The Resellers page has a fresh layout. A summary at the top shows how many resellers you

have by status, the money held in their wallets, how many are low on balance, their

subscribers, and how many joined in the last 30 days. You can now filter by status, pick

quick joined-date ranges, and switch between a table and cards (phones open in cards).

Clicking a reseller opens a quick look with their details, Add Balance and a link to the

full profile. Every column from before is still in the table, in the same order. The Add

Balance window now has one-tap amounts and shows the balance before and after.

  • The Invoices page has a fresh layout. The invoice date range now sits in its own bar at

the top of the page, and a new summary shows how much is still to collect and what share

of the billed amount is paid. The five status cards now work as the status filter, so the

tabs above the table are gone. Filters open in a side panel, and active filters show as

chips you can remove one by one. Click any invoice to see its money and details in a side

panel and pay, print or open it from there. On phones the table becomes a list of cards,

and selected invoices get a bar at the bottom of the screen for Pay, Reminder, Export PDF

and Delete. Every column, filter and action from the old page is still there.

  • The Collection Overview page has a fresh layout. One period bar at the top now holds the

quick ranges, the custom From and To dates, the owner view and the dates being shown, so

there is no second date filter above the tables. A summary card shows the money collected

and the collection rate beside Invoices, Receivable, Collected and Balance. Collection by

area can be shown as bars or as a table, Top Collectors has a See all button, and a new

card shows how much came in by each payment method. The Collections tab has a search box,

every tab shows its row count and can be exported to CSV, and on a phone the Collections

and Operators rows show as cards. The date buttons, payment methods and roles now also

show in Bangla and Urdu.

  • The Ledger page has a new layout. It opens with your net position with dealers, a list of

dealers we have owed for 14 days or more (with Pay Out and Statement buttons), and, for

admins, a Books check that compares the ledger with wallets and payments when you press

Run check now. Report, Journal, Accounts and Dealer Balances now sit in one card. The

Journal shows debit and credit side by side and marks each entry as balanced. Account

balances show as an amount with Dr or Cr instead of a minus sign. Everything the page

showed before is still there.

  • General Settings has a new layout. It opens on a settings home with a search box, popular

shortcuts, a setup check (company profile, online payments, two-step login, late fee,

customer portal and Quick Pay) and a card for each group. The 18 old sections are now 9

groups (Company, Billing, Payments, Customers, Network & RADIUS, Customer portal, WiFi

hotspot, Security, Modules & apps), each split into short pages. Every setting is still

there. Press Ctrl K anywhere on the page to find a single setting; it opens the right page

and highlights it. Old links to a settings section still work.

  • The home dashboard has a cleaner look, matching the new customer and reseller profile

pages. Everything stays on one page in the same order, with a page header and quick

buttons for New Customer and Customers.

  • The customer profile page is easier to work with, in the same style as the reseller

profile. Package, expiry, amount due and wallet balance stay in view at the top on every

tab. The many tabs are now five groups: Overview, Billing, Network, Tickets and Records.

Overview opens with a "Needs attention" list (unpaid bills, an expiry within three days,

a pending package change, a missing ID document), the connection details, 30 days of

usage and the latest bills and payments. Actions sit under Recharge, Add Balance, Edit

and a grouped More menu, and on a phone they stay pinned to the bottom of the screen.

  • The reseller profile page is easier to work with. Its many tabs are now six groups:

Overview, Money, Subscribers, Team, Packages and Records, with the smaller views as

buttons inside each group. Balance, due, subscribers against the limit, and online

users now stay at the top on every tab. A "Needs attention" card on Overview shows an

empty prepaid wallet, unsettled postpaid debt, a nearly full customer limit and

unverified contact details. The page you are on is kept in the address, so a refresh

or a shared link opens the same place. On a phone the main actions sit in a bar at

the bottom of the screen.

  • The reseller profile Overview now opens on a short summary instead of seven info

cards: Needs attention, a six-month chart of recharges against collections, the last

five wallet entries, and one Details card. The full details are one click away under

"All details". The Money tab shows recharges and collections for this week, this

month, last month and this year at the top, and the header shows Prepaid or Postpaid.

  • The Area page has a fresh layout. Summary tiles at the top show areas, sub areas,

customers covered, areas missing staff and inactive areas, and each one filters the list.

Areas show as cards with their customer count, team and sub areas, or as the same table as

before. Clicking an area opens a side panel with its full location, team and sub areas.

The add and edit form can now set the area's Technician, Recovery Man, Marketing Man and

Supervisor, a ZIP code for sub areas, and whether the area is active. Adding a sub area

from an area now fills in that area for you, and Import is shown only to admins, who are

the only ones allowed to use it.

### Fixed

  • Sales Report: the Reseller column now shows the reseller who owns the customer, not the

person who added them, and the Package column shows the package that was billed on that

invoice, not the customer's current one. Reversed invoices are now listed with a Reversed

tag and left out of the totals. Staff without permission to export reports now see the

Export button switched off instead of getting an error.

  • Reseller Growth now shows real net growth: customers gained minus customers lost. Before,

the growth figure and the previous total ignored customers who were deleted or left.

  • Reseller Growth now counts expired customers correctly. Before, Expired always showed 0

and expired customers were counted as active.

  • Retailers are now labelled correctly in the Reseller Growth report.
  • Bulk Recharge no longer blocks a postpaid reseller with "insufficient balance". The check now

uses the reseller's own billing type: a postpaid reseller with no credit limit is never short,

one with a limit is checked against what is left of it, and an admin recharging a reseller's

customers is checked against that reseller, not the admin.

  • Bulk Change Package no longer shows a red "short" amount for a postpaid reseller. The amount

now follows each reseller's own billing type, the same way Bulk Recharge does.

  • The Recharge and Change Package panels are now fully translated in Bangla and Urdu.
  • The Voucher and Prepaid Card menus no longer appear while those modules are switched off in

Settings, Software Modules. Before, an ISP that had never saved that page saw both menus,

and every page in them failed to load.

  • Resellers opening HR Overview now see counts for their own staff instead of an

"Insufficient role" error and zeros.

  • The New Customer buttons are hidden from staff whose role cannot add customers, instead of

letting them fill in the whole form and fail on save.

  • The ticket Departments page shows as cards on phones instead of a squeezed table.
  • The OLT page showed the share of ONUs online under the name "Uptime". It now shows the

real uptime, and the share is called "Online rate".

  • On the OLT page, clicking a customer in the ONU list opened a page that does not exist.
  • Confirmation messages across the panel no longer show English words on a Bengali or Urdu

panel. About 50 of them, such as "This cannot be undone." after a delete, are now translated.

  • Several customer confirms showed English on a Bengali or Urdu panel: disconnect, delete,

remove grace, delete forever, reset traffic, reset MAC lock, delete note, delete document

and restore. They are now translated.

  • The RouterOS version on a NAS now only accepts v6 or v7.
  • On a phone, the Add Balance, Withdraw and More bar on a reseller profile no longer covers

the bottom menu bar.

  • Tickets no longer offer an Edit button that opened a page that does not exist. Status,

priority, category and assignee are changed on the ticket page itself.

  • Some labels showed in English on a Bengali or Urdu panel: the Pay buttons and messages on

the bulk payment bars, and the messages shown after replying to a ticket or adding a note.

  • On the Employee Roles page, "View" and clicking a role's name opened a page that did not

exist. They now open the role's details.

  • On the Monthly Revenue Summary, the change against last month always read 0% because it

compared the last two months of the year. It now compares the last finished month in the

period with the month before. The Export button is now hidden from staff who are not

allowed to export reports.

  • On the Reports page, Collector Statement is now listed, the Recharge History card

correctly says it shows reseller wallet recharges, and the reseller group has a proper

name. Reports only an Admin can open now show a lock for other staff instead of an error.

  • Editing an area's name or ZIP no longer clears its Technician, Recovery Man and

Marketing Man.

  • After adding or editing an area, the area list no longer goes empty until the page is

reloaded.

  • Permanently deleting a customer who has payments, online transactions or assigned

devices no longer fails with a "Foreign key constraint" error. Their payments,

online transactions and device assignments are now removed together with the customer.

  • On the Ledger report, the Export button is now hidden for staff who are not allowed to

export. They used to see it, and it failed when pressed.

  • Saving the portal welcome message no longer resets the System settings (RADIUS username

case, disconnect rules, customer ID rules and the rest) to their defaults, and saving the

System settings no longer clears the welcome message.

  • Adding a customer no longer fails with "Database request failed" on a new ISP that

imported its customers with their own client IDs. The next client ID is now found

past the highest existing one.

  • On the home dashboard, the Top Package Usage and Revenue Updates charts now show

package names and months, and the totals in the middle of the round charts now show the

real figure instead of 0.

  • An SMS that the SMS provider has already delivered is no longer recorded as failed

and refunded. Before, a provider answer that listed several recipients was

judged by its first line only.

  • A reseller's credit limit can now be removed. Before, clearing the Credit Limit box in

Profile Settings and saving kept the old limit. A blank box now means no limit, and a

note under the box says that 0 blocks every charge.

  • SMS sent through the iBilling SMS wallet now reaches the customer. Before, every

message failed with "Invalid MSISDN" because the phone number was sent with a

leading plus sign; each failed message was refunded to the wallet.

v2026.09.3029 Sept 2026

Nagad payments, reseller wallet top-up and update import fixes

### Fixed

  • Nagad licence and SMS top-up payments now work when the Nagad Base URL is

entered with or without `/dfs` at the end. Before, the address suggested in

the settings made every Nagad payment fail to start. The field now says what

to enter for live and for sandbox.

  • Customer Nagad online payments now also accept the Nagad address ending in

`/api`, the same as the address alone or ending in `/api/dfs`.

  • A Nagad payment is only counted as paid when Nagad confirms both "Success"

and its success code, the same check used for customer payments. Any other

answer leaves the payment waiting instead of crediting it. If Nagad says

"Success" without its success code, the owner is alerted once to check the

Nagad merchant portal.

  • Customer import in "update existing" mode no longer fails every row when the

file has Document Type or Document No. columns. A customer with no document

on file gets the row's document added. A document already on file is not

changed; if the row's differs, it gets a note to edit it on the customer's

Documents tab.

  • Resellers adding balance to their wallet online can now finish the payment.

bKash, Nagad, SSLCommerz and PortPos now send the reseller

back to My Wallet, where a message says whether the top-up was received,

failed or is still being confirmed. Before this fix, the payment page could

not return to iBilling and the balance was never added. Opening the same

return link again does not add the money twice.

v2026.09.2929 Sept 2026

Customer ledger, full money history and SMS gateway choice

### Added

  • The customer page's Transactions tab now shows every money event in one

list: payments with their bKash TrxID, invoices, wallet top-ups and

spending, reseller charges and commissions, and SMS money still waiting to

be applied. Click any row to see its details, and filter by date, type,

method or TrxID.

  • Customer import and export now support Sub Area and a custom price. A Sub

Area must already exist under the row's Area; a custom price of 0 means free

service, and in update mode CLEAR puts the customer back on the package

price. Exporting and re-importing a file no longer moves Sub Area customers

up to their Area.

  • ISPs can now top up their Platform SMS balance with EPS and Nagad, as well

as bKash and SSLCommerz.

  • The SaaS owner can choose which SMS gateway sends iBilling's own messages

(signup codes, notices, billing reminders) and which one sends ISPs'

Platform SMS. If a chosen gateway is switched off, those messages stop:

there is no fallback to another gateway. The panel warns and the owner is

alerted.

  • Moving Platform SMS to another gateway is refused if an ISP's masking

sender would not work on it, and the panel lists the ISPs to fix first.

  • The customer page has a new Ledger tab. It lists every money entry in the

accounting books for that customer, with how much each one moved the wallet

and who recorded it, and says what each reversal reverses. Filter it by type

and date. Entries from before this release appear after a one-time update of

each company's books.

  • Customers see the same history in the customer portal under My Ledger:

every payment and wallet movement.

### Improved

  • When a reseller collects advance money from their own customer (Add

Balance, or paying more than the invoice), that money now counts against the

reseller's wallet straight away, because the reseller is holding it. Before,

the books showed it as the company's cash. This is a deliberate change:

resellers will see their wallet go down by the advance they collected.

### Fixed

  • Digital Payments now shows statuses in plain words, such as "Applied to due

invoices" and "Added to wallet", in every language.

  • Resellers now see packages assigned to them even when the company has not set

its own price. A package whose reseller cost is zero is no longer offered,

and saving a customer on it is refused with a clear message.

  • Company customers can no longer be created on a package that has no company

price. This includes new customers added by CSV import.

  • Subscriber counts on the Packages list no longer include deleted customers.
  • For staff, the Packages list columns now line up with their headings, and

the status, duration (for example "7 days") and breadcrumb show in the

chosen language.

  • Opening a package that does not exist, or that is not available to you, now

shows a "Package not found" page instead of an empty form.

  • On the Packages list, the package name links to the edit form only for the

Admin, the only role that can save a package.

  • "Rows per page", the "1–25 of 80" count and the page buttons under every

table now show in the chosen language.

  • The customer AI assistant now lists only the packages that customer can buy

online, at the price they would pay. A reseller's customer sees the

reseller's packages and prices, not the company's full list.

  • When staff ask the AI assistant which packages a customer can move to, the

answer is no longer limited by the customer portal's online-renewal settings.

  • The staff AI assistant quotes a reseller's own selling price, and no longer

leaves out cheaper packages when there are many.

  • Quick Pay now lists only the packages that customer can buy, at the price

they will pay.

  • Quick Pay's online payment now includes the package's taxes and the

customer's own extra charges (each counted once) in both the price shown and

the amount charged, and takes any wallet balance off the amount to pay.

  • A refused package in Quick Pay can be changed and paid again without

starting over.

  • A renewal paid from the wallet or online no longer fails with a server error

when the payment is larger than one period's price.

  • Payments taken through Renew, new customer, package change, recovery

collection and Link to invoice now appear in the accounting books, with the

right cash account and, for a reseller's customer, the right reseller

balance.

  • Refunding a digital payment that renewed a customer or paid an invoice

automatically is now blocked with a message that gives the one right step.

For your own customer: reverse the invoice, and the money goes back to the

customer's wallet; nothing else is needed. For a reseller's customer:

reverse the invoice, which returns the reseller's charge, and the reseller

returns the payment to the customer. Money that went straight into a wallet

is already there. Refunding a payment that staff linked by hand also

reverses its entry in the books.

  • Linking a digital payment to an invoice is refused when the amount is more

than the invoice's due, instead of losing the extra money.

  • Linking an online payment to a renewal invoice now renews the customer and

charges the reseller, exactly like Pay Invoice. Before, the invoice showed

paid but the customer expired and the reseller was never charged. The

link also records the payment in the activity log and sends the customer

the same payment receipt as Pay Invoice. Such a link can no longer be

refunded on its own.

  • The nightly accounts check now also checks a company whose books have no

entries yet but which has customer payments. It counts the same payments

the accounts backfill would book, so reseller-held and reseller-wallet

payments are never reported as missing. Payments made before a company's

books started are left out from a start date set for each company, and

every change to that date is recorded.

  • The invoice pay page no longer offers a payment method that cannot charge

the invoice's currency, and a malformed request to it gets a clear error.

  • Bank account pickers for payments no longer list closed accounts, and say

so in your language when there is no active account to choose. Editing an

expense paid from a closed account shows that account marked as closed

instead of an empty field, and the expense can be saved without moving it

to another account.

  • The Pay Invoice "Received by" hint, the reseller type, "Never" and the SMS

top-up reason are now shown in your language.

  • Resellers can open Dealer Balances again; it showed an error before.
  • The nightly accounts check now alerts when a customer payment is missing

from the accounting books, and says so when it could not run. It also

checks every customer whose wallet balance changed, and every reseller whose

wallet or amount owed changed, including ones that have never appeared in

the accounting books before.

  • Ledger screens show every entry type with a clear name, in every language.
  • Verify on an online payment now applies it: the invoice is paid and the

customer renewed, exactly as if the payment had gone through on its own, and

it is never applied twice. Before, Verify only marked it paid and the customer

was not renewed. When the gateway cannot be asked, does not answer, or says

the payment did not go through, the payment stays pending with a clear message

in your language.

  • When paying an invoice, recording a collection, bulk paying, creating a paid

invoice, renewing, adding a new paid customer or adding balance, the chosen

bank account must now match who holds the money: resellers can pick only

their own accounts, and money the company collects cannot go into a

reseller's account.

  • Paying an invoice, confirming an online payment, recording a collection,

renewing, adding balance and the other money actions no longer fail with an

error when another action is working on the same customer or reseller at the

same moment; they now wait for it to finish.

  • A withdrawal can only be paid from a company bank account. A reseller's own

account, or an account the requester cannot see, is refused. The account is

checked again when the withdrawal is marked paid.

  • Money actions such as paying, adding balance, renewing, recharging a

reseller, adding or editing a reseller and setting a grace period now wait up

to a minute for the server (moving a reseller's customers waits longer). Before, the panel could show

a timeout while the payment still went through, and trying again charged it

twice.

  • Reseller wallet recharges, expenses and inventory purchase and sale payments

now check the chosen bank account: company money uses a company account, a

reseller's money uses the reseller's own account, and a closed account cannot

be used. Reseller payouts, reseller wallet withdrawals and cash handovers use

company accounts only.

  • Changing a customer's package from the edit form, or by updating customers

through CSV import, now follows the same rule as adding a customer: a

reseller's customer can only move to a package that reseller is allowed to

sell, and a company customer only to a package with a company price. A

refused CSV row is skipped with a clear message in your language, and the

other rows still import. The Failed Imports page shows these reasons in

your language too.

  • Blocking or unblocking customers by CSV import now works exactly like the

Block and Unblock buttons. A blocked customer is disconnected immediately,

an unblocked customer gets their internet access back, and each customer

receives the same "blocked" or "re-activated" message the buttons send.

Only the words Blocked and Active in the Status column change a customer's

status. "Disabled" (set by billing) and values such as 0, 1, true or false

leave the status unchanged, and the import result says so. A row that

cannot be imported is now left completely unchanged.

  • A CSV import never cancels a customer's service. A "Terminated" status is

left unchanged and the import result says Cancel service must be done in

the panel.

  • Transferring customers to another reseller, or back to the company, now

checks each customer's package. Customers on a package the new owner is not

allowed to sell stay with their current owner, the rest are moved, and the

panel lists the customers that were not moved.

  • Deleting a reseller and moving their customers to another reseller now

checks every customer's package first. If any customer is on a package the

new reseller is not allowed to sell, nothing is moved or deleted and the

panel lists those customers.

  • Deleting a reseller who still has customers now asks, in the delete

dialog, which reseller the customers should move to. A reseller can move

them to itself or to another of its own sub-resellers. Moving the customers

and deleting the reseller now happen together: if the delete cannot

finish, no customer is moved. A reseller with payment or wallet history

(including its reseller ledger, recharges, payouts or payment gateway

settings) cannot be deleted and the panel says to block it instead. A

reseller that still has sub-resellers or retailers cannot be deleted

either; the panel says how many. The same applies to a reseller that

still has its own staff users, bank accounts, inventory stock, leads, or

voucher and prepaid cards — the panel says what is left, so nothing is

silently handed to the company. Deleted customers of the reseller move to

the new reseller too. If another change to the same reseller happens at

the same moment, nothing is deleted and the panel asks you to try again.

  • Importing "Active" for a customer switched off for non-payment now says the

customer must pay or renew to be reactivated, instead of silently doing

nothing.

  • A licence payment that completes after its payment page timed out is now

applied to the invoice, instead of being left unapplied.

  • When a completed payment cannot be applied (for example, the invoice was

already paid), the payment page now says the payment is being checked

instead of showing success, and the SaaS team is alerted to arrange a

refund.

  • Signup now tells you plainly when the verification code could not be sent

by SMS or email, instead of saying it was sent.

  • If the payment provider cannot confirm an SMS top-up right away, the

payment page now says the payment is being checked instead of "No payment

was taken". The next top-up attempt checks it again, and a paid one is

added to the balance once. A top-up that stays unconfirmed is flagged to

the SaaS team.

  • The Ledger report now shows each account's true running balance when you

filter it by date, type, owner or search. Before, a filtered report

counted its balances only from the rows it showed.

  • The Ledger report's date filter, quick ranges and exported files now follow

your company's own calendar day, not the server's. A date range that ends

before it starts gets a clear message.

  • Exporting the Ledger report is faster.
  • In the Ledger report and its export, a customer's wallet credit now shows as

a positive amount, and entries where every amount is zero are hidden.

  • Wallet overpayment rows on the customer page now show the payment method.

For a renewal they also show who collected the money; for an invoice

payment they show the person who recorded it.

  • An automatic renewal of a free package no longer adds a 0.00 wallet payment

to the customer's history or to the accounting books.

  • Date fields show their day, month and year hints in Bangla and Urdu, and the

customer page's breadcrumbs and status badge are shown in your language.

### Security

  • Resellers and their staff now see package subscriber counts for their own

customers only. They no longer receive how many resellers use each package,

or which company routers, policies and allocations a package uses.

  • Resellers and their staff can no longer open a package that is not assigned

to them, and the staff AI assistant now lists only the packages they can

sell.

  • Resellers and their staff can no longer read the company's policy and

allocation lists, which included company-wide subscriber counts.

  • Quick Pay refuses a package the customer cannot buy before any payment is

started, and shows the reason in the customer's language.

  • Resellers and their staff can no longer open router details, router graphs

or router groups. In router pickers they see only the routers they may use,

by name and address.

  • A completed licence payment can no longer be changed by a payment return

link, and a payment's refund-review record can no longer be overwritten.

  • A reseller viewing a customer's wallet log no longer sees the names of

company staff; those rows show "Company".

v2026.09.2529 Sept 2026

Reseller payment phones and safer SMS payments

### Added

  • Resellers can use their own phone to receive bKash and other mobile-money SMS

payments. The ISP turns this on per reseller and sets a limit; the phone is

tied to that reseller's account.

  • Payments that arrive on a reseller's phone are routed automatically: to the

reseller's own customer, to a sub-reseller's customer, to an ISP customer, or

to another reseller's customer, with the money moved between accounts as

needed.

  • Mobile Payments now shows who owns each payment and lets resellers see their

own payments. A payment waiting for renewal can be retried in one click.

  • Resellers get a menu entry and a status card for their own payment phone;

the ISP gets the matching settings page.

### Fixed

  • A TrxID is settled only once, even if it arrives through two channels or is

written differently.

  • A refunded or reversed TrxID can no longer be settled again.
  • A payment that already settled is never marked as failed because of a later

error.

  • The client-ID reference in an SMS now matches exactly and ignores upper and

lower case.

  • The relay dashboard and payment notifications show the ISP's own currency.
  • The retry message now says what happened: renewed, applied to due invoices,

or added to the wallet.

  • Deleting an ISP account that was never fully set up now completes instead of

stopping with an error.

### Security

  • Resellers only see SMS payments, customers and transfers inside their own

network. Other resellers' customers are never named.

  • A payment can only be assigned by someone who owns that SMS.
v1.0.017 Jun 2026

iBilling 1.0 — first release

First public release of iBilling.

  • Multi-tenant ISP billing & RADIUS automation
  • Self-serve signup, checkout & customer portal
  • Payment gateways: bKash, Nagad, SSLCommerz, EPS
  • Invoicing, renewals & expiry reminders (email + SMS)
That's the full history. Read our story.