Hook SecurityHook Docs
MSP

Review client billing

Walk through the MSP billing report — read seat usage per client, set cost and sell prices, see margin, and export to CSV.

The Billing Report at /msp/billing shows seat usage per client, lets you plug in your cost and sell price per seat, and calculates revenue and margin per client and across your book. It's the page you open at monthly close to figure out what to invoice. It is not an invoicing system — it doesn't push to Stripe, QuickBooks, or any accounting tool, and it doesn't generate invoices. Think of it as the math layer between Hook's seat data and your billing tool.

Open the billing report

Sign in to the MSP portal.

Click Billing in the sidebar to land on /msp/billing. The header reads Billing Report with the subtitle See how many seats each of your clients is using, set your cost and sell price, and instantly see your revenue and margin. Export to CSV when you're ready to invoice.

If you haven't onboarded any client orgs yet, you'll see an empty state No subclients found. Add clients from the Clients page first.

What each column means

The page has three regions: summary cards across the top, a Pricing card where you enter rates, and a Client Breakdown table. The table is the heart of the page.

Client Name

Each row is a client organization. Direct children of your MSP appear at the top level; if a client has its own sub-orgs, those nest underneath. Use the chevron on the parent row to expand or collapse, or click the +N badge to see how many child orgs are hidden.

Status

Either Active (green) or Suspended (red). Suspended rows render dimmed, but their seats still roll into your totals — suspension is an access state, not a billing state. Exclude suspended clients in your invoicing tool if you don't want to bill them.

Seats

The current active user count for that client org — this number drives every dollar on the row.

Total Cost

Seats × Cost Per Seat — what you pay Hook for that client. Shows -- until you enter a Cost Per Seat in the Pricing card.

Total Revenue

Seats × Client Price Per Seat — what you charge the client. Shows -- until a Client Price Per Seat is entered.

Margin

Total Revenue − Total Cost. Positive margins render green; negative margins render red — the fastest way to spot a client whose contracted rate has drifted below your cost.

Summary cards

Above the table:

  • Active Clients — active orgs over total (e.g., 12 / 14)
  • Total Seats — sum across all clients
  • Total Revenue — sum of Seats × Client Price Per Seat
  • Total Margin — sum of Total Revenue − Total Cost, color-coded

Set sell prices and margins

Pricing inputs are session-scoped — they aren't saved, and the same rate applies to every client. Treat the Pricing card as a calculator you re-enter each billing cycle.

In the Pricing card, enter your Cost Per Seat — what Hook charges you per active user per billing period (e.g., $X per seat per month).

Enter your Client Price Per Seat — the MSRP you charge each client per seat (e.g., $Y per seat per month).

The table updates instantly. If your sell price exceeds your cost, a $Z margin per seat indicator appears next to the inputs.

One rate at a time

The Pricing card uses a single cost and sell price for the whole table. For per-client contract rates, run the report once per rate band: enter the rate, export the matching client rows, then repeat for the next band and combine in your accounting tool.

Export a CSV

The CSV is the artifact you hand to whoever cuts invoices. It includes metadata at the top (report type, generated date, MSP name, the cost and sell rates) followed by a data table.

Set your Cost Per Seat and Client Price Per Seat so the export includes computed columns. If you skip pricing, cost / revenue / margin columns export as zeros.

Click Export CSV in the Client Breakdown card header.

The file billing-report-YYYY-MM-DD.csv downloads. Columns: Client Name, Status, Seat Count, Total Cost, Total Revenue, Margin, plus a Totals row at the bottom.

The export is flat — every client appears as one row regardless of hierarchy depth, sorted alphabetically. An Export PDF button next to it produces a formatted snapshot with the same columns plus the summary tiles for internal review meetings.

Recommended cadence

Open this page at monthly close to reconcile seats before invoicing. Pull it again at quarterly business reviews to spot shrinking margins, suspended orgs you're still billing in error, or sub-orgs that have grown enough to renegotiate.

What this won't do

The Billing Report is a calculator, not a billing engine. It does not:

  • Generate or send invoices
  • Sync with Stripe, QuickBooks Online, Xero, or any accounting system
  • Store per-client custom rates between visits
  • Replace the rates and terms in your client contracts

Use the CSV as the bridge to your invoicing tool. The contract you signed with the client is still the source of truth for what they owe.

On this page