Per-server lines on the extensions summary

FeatureBillingService
Shipped
August 27, 2026 at 8:06 PM UTC
Author
Kamo
Commit
e6d5c5c

The phone server's extensions tab showed the organization-wide figure and nothing else, so an empty KamoPBX server displayed "21 billable extensions — $63.00 / month" — the 21 being on a FreePBX server elsewhere in the same org. /api/billing/extensions/summary now carries an `instances` list: one line per live server with its class, its billable count, its free count, the rate and its own monthly total. The organization totals are unchanged and still returned. Built from the INSTANCE list, not the breakdown. A server with no extensions contributes nothing to a breakdown and would otherwise be absent from its own screen — which is precisely the case that started this. Free counts come from the per-instance map added in kamo-shared-library a5b131d1, and the class rules are what make the two provider kinds read differently: a hosted server charges every active extension whether anyone is assigned or not, so its free count is always zero; a third-party server charges only assigned ones and reports the queues, IVRs and spares as free. Shared library pushed first — consumers clone its main at build time, so a service commit needing a new method is only buildable once that method is on the default branch. 256 tests pass.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing