Internal billing
The Internal billing tab is the sheet CleverCam invoices its control rooms off, once a month, on one page: a row per customer, a column per price point, a total, that customer's share of the month, and two flags -- Checked and Invoiced.
It replaces a spreadsheet that was typed by hand every month. The spreadsheet's numbers had no link to the platform, so they drifted: hub counts went stale as hardware was claimed and released, and negotiated prices were entered against the wrong column.
This is CleverCam's own revenue sheet, not a control room's billing. It shows every company on the platform side by side. Access is enforced on the page and in the database -- the sheet, the flags and the per-customer settings all run through super-admin-gated functions, so a company admin who reached the address bar gets "Access denied" and could not read a figure even by calling the API directly.
Accessing Internal billing
- Sign in with a super admin account.
- Activate Super Admin mode via the account menu, top right.
- Click Super Admin in the sidebar (only visible while Super Admin mode is on), then open the Internal billing tab (
/superAdmin/billing).
Where the numbers come from
Every figure on this page is the live CleverCam bill -- the same billing breakdown each control room sees under its own Settings → Billing. The sheet does not price anything itself; it groups the breakdown's lines into columns.
That is the point: this page cannot show a customer a different number from the one the customer is shown. If a figure here looks wrong, the fix is in the underlying data (a hub claimed to the wrong control room, a rental flag, a price), not on this page.
The sheet does not issue anything. Ticking a box records that you invoiced a customer; it does not create an invoice, send an email or post to an accounting package.
Reading the table
Customers run down the left, ordered by what they owe, with the largest first. The customer column stays put while the rest of the table scrolls sideways.
Across the top, each column is a price point that exists in the data -- not a fixed list. CCUs at R80 and CCUs at R95 are two columns; if nobody is on R95 that column does not appear. A negotiated price therefore lands in its own column automatically instead of being squeezed into the wrong one. Each header shows the product on the first line and its price on the second.
A cell holds the count -- hubs, cameras, sites, whichever that column counts. Hover it for the count's unit and what it is worth in rands. An empty cell shows a quiet dot.
| Column group | Counts | Priced |
|---|---|---|
| CCU owned | CCUs a control room owns | Per hub, one column per price |
| CCU rental | CCUs flagged as hardware rental | Per hub, one column per price |
| CleverMail | Cameras on a CleverMail hub | Per camera, one column per price |
| Communicators | Alarm communicators and DSC IQ | Mixed prices, collapsed into one column |
| Site monitoring | Monitored sites on the enterprise package | Mixed prices, collapsed into one column |
| Trackers | Billable GPS trackers | Mixed prices, collapsed into one column |
| Community | Approved community members | Mixed prices, collapsed into one column |
| Panic users | Standalone panic-app users | Mixed prices, collapsed into one column |
| Min-spend top-up | The enterprise minimum monthly spend shortfall | One line |
The last columns close the row off:
- Hardware -- CCUs and CleverMail only. This is the figure the old spreadsheet totalled.
- Total -- everything, including site monitoring, trackers, communities, panic users and any minimum-spend top-up.
- Share -- that customer's percentage of the month's total.
The footer carries two rows: the count per column with the month's totals, then the value of each column in rands.
Only charges that are actually billed appear. R0 lines -- free pairs on the enterprise package, hubs not linked to a site, hardware with no price set -- are left off the sheet. They are still in the per-hub export described below.
Checked and Invoiced
Two tick boxes per customer per month, exactly as the spreadsheet had them.
- Checked is yours to use however you used it before -- "I have looked at this row and the numbers are right". It records who ticked it and when; hover the box to see.
- Invoiced records that the customer has been billed, and freezes that customer's lines for that month.
The freeze matters. The CleverCam bill is recalculated live and is never snapshotted per period, so without it, re-opening August in November would show November's fleet. Ticking Invoiced stores the customer's lines as they stand at that moment, and the sheet serves those stored lines from then on -- the row is marked frozen. Unticking Invoiced throws the stored lines away and the row goes back to live figures, so re-ticking it takes a fresh snapshot.
Because the tick is what freezes a month, tick Invoiced when you actually invoice, not before and not weeks later.
The Note box at the end of each row is per month -- "received 5, not invoiced this month", "moved to prepaid". It saves when you click away.
Per-customer setup
Setup on a row opens the standing settings, which carry across every month:
- Accounting name -- what the customer is called on the invoice, when that differs from the control-room name. The sheet shows the accounting name with the control-room name beside it.
- Not invoiced from this sheet -- keeps the customer visible but out of every total, listed under its own heading at the bottom. Use it for CleverCam's own control rooms and for anyone billed under a separate arrangement. Nothing is hidden -- an excluded customer's figures are still on the page, which is the answer to "why is this one missing?".
- Standing note -- a note that is not tied to a month.
The breakdown behind a row
Click the arrow beside a customer's name to open its breakdown below the table: every charged hub, with its serial, the site it is on, what kind of charge it carries, the unit price and the total. This is where a row that looks wrong gets settled -- you can see exactly which hubs make up the figure.
Only the 200 largest charges are listed on screen. Export every hub (CSV) downloads the complete set for that customer, including the R0 lines the sheet leaves out, which is what you want when a control room asks why a hub of theirs is not billing.
Export sheet (CSV) at the top of the page exports the whole matrix -- every customer, every column, the totals row, and the Checked / Invoiced flags -- ready to open in Excel.
Before you run a month
Prices are live and have no effective-from date. The bill recalculates off today's price list every time it is opened, so a change on Hub Pricing re-prices the month already in progress for every control room without a negotiated override. Change the price list deliberately at the start of a month, or after the month has been invoiced and frozen -- not in the middle of a run.
A past month with nothing invoiced shows today's numbers. The freeze only happens when Invoiced is ticked. Open a month nobody ticked and you are looking at the current fleet, not that month's.
Excluded customers are out of every total -- the four tiles at the top, the footer and the CSV export all count the invoice run only.