Review client billing
Read seat usage per client, plug in your cost and sell price, and see revenue and margin before you invoice.
This is the page you open at monthly close. It totals margin per client and across your whole book, so you can sanity check a client's seat count against what you are about to bill them.
It is not an invoicing system. It doesn't generate or send invoices, it doesn't sync with Stripe, QuickBooks, Xero, or anything else, and it doesn't know your contract terms. It sits between Hook's seat data and whatever you actually bill from.
Open the report
Billing in the MSP sidebar is a group rather than a page. Open it, then choose Billing Report. Before you've onboarded any client orgs, the page tells you there are no subclients to show. Add clients from the Clients page first.
Read the client breakdown
Each row in the breakdown table is a client org. Direct children of your MSP sit at the top level, and a client with its own sub-orgs nests underneath, with a chevron to expand it and a badge counting the children it's hiding.
Seats is that client's current active user count, and it drives every dollar on the row. Total cost is seats times your cost per seat, total revenue is seats times what you charge them, and margin is the difference, green when positive and red when negative. A red margin usually means a contracted rate has drifted below what you now pay.
Status is active or suspended. Suspended rows render dimmed, but their seats still roll into your totals, because suspension controls access rather than billing. Drop them in your invoicing tool if you don't want to bill them.
Four summary cards sit above the table: active clients out of the total, written like "12 / 14", total seats, total revenue, and total margin.
Set your rates
The Pricing card is a calculator. Enter a Cost Per Seat, what Hook charges you per active user per billing period, and a Client Price Per Seat, what you charge the client. The table recalculates as you type, and a per-seat margin indicator appears once your sell price clears your cost. At $3 cost and $5 sell, it reads $2.
The cost and revenue columns share one condition: fill in either rate and both columns appear, with the one you left blank calculating as zero. Enter only your cost and revenue reads zero everywhere, which sends every margin negative. That's the calculator doing what you asked, not a data problem.
One rate applies to the whole table. For per-client contract rates, run the report once per rate band: enter the rate, export the rows that use it, then repeat and combine the exports in your accounting tool.
Your rates disappear when you leave the page
Pricing inputs live in the session and are never saved, so you re-enter them every cycle. Export before you navigate away or you'll be typing them again.
Export for invoicing
The CSV is what you hand to whoever cuts invoices. It opens with metadata, the report type, generation date, your MSP name, and the rates you used, then the data table. Set both rates before exporting, or cost, revenue, and margin come through as zeros.
Click Export CSV in the Client Breakdown card header and the file downloads with the report date in its name. Columns are client name, status, seat count, total cost, total revenue, and margin, plus a totals row. The export is flat and alphabetical: one row per client, whatever its depth in the hierarchy.
Export PDF produces a formatted snapshot of the same client rows for internal review. Its summary tiles aren't a one-to-one match for the tiles on screen, so read it as its own report rather than a printout of the page.
Related
- Manage client accounts: the client orgs that show up here.
- Run a phishing campaign for a client: drive simulation activity on the seats you're billing.
- Assign training across clients: the other half of what those seats unlock.