The customer
A ConnectWise-based MSP whose end-client wanted something most MSPs never put on an invoice: a full monthly roster of every computer under management, who was logged into it last, and when it was last seen.
The ask came from downstream
This one didn’t start with the MSP. It started with one of the MSP’s clients — a finance-conscious end-customer who wanted asset-tracking and user-verification data every month, on a predictable cadence, in writing.
They weren’t being difficult. They wanted the same thing every organization with real asset hygiene wants: a periodic, dated record of what they own, who’s using it, and whether anything’s gone dark. For them, the monthly invoice was already the most reliable document they received from their MSP. Why not attach the truth of their environment to it?
The monthly invoice was already the most reliable document they received. Why not attach the truth of their environment to it?
What the MSP was doing before
Tickets.
Every time the client wanted the list, they opened a ticket. The MSP would pull a snapshot out of ConnectWise Automate by hand, clean it up, and send it back. It was the kind of work that’s too small to automate individually and too recurring to stay small — an invisible tax on the service desk that nobody loves, nobody bills for, and everybody resents.
What we built
A custom RMM integration scoped to this MSP: at render time, Better Invoice pulls a live snapshot from ConnectWise Automate’s API and appends a full-page report to the end of the invoice.
Three columns, no more:
- Computer name
- Last logged-in user
- Last seen date
That’s it. Dated, raw, straight from Automate, as of the moment the invoice was generated.
Why only three fields
This was the most deliberate part of the design.
Automate exposes far more — operating system, hardware age, patch state, agent version, uptime, spec sheets. We deliberately left all of it off.
The monthly invoice isn’t the right place for the full asset inventory conversation. The monthly invoice is for verification — “is every seat I’m paying for still real, and does the user I expect still own it?” The deeper conversation about lifecycle, OS posture, and refresh planning belongs in the quarterly business review, where the MSP is sitting across from the client with context, recommendations, and a roadmap.
Putting hardware age or OS on the invoice would quietly obsolete the QBR. Leaving it off preserves the QBR’s reason to exist and keeps the invoice doing one job well.
We can always add filtering or logic on top — hide servers, flag stale machines, group by location. But the first principle was raw data, unfiltered, shipped to the customer with an implicit message: you know your environment better than we do. If something looks wrong, you’ll see it first — and you’ll have proof, dated and in writing, the moment you do.
The result
The customer started catching stale machines themselves. Devices that hadn’t phoned home in weeks. Accounts tied to employees who’d left months earlier. They’d surface it, the MSP would resolve it, and a problem that would’ve eventually grown into a “why wasn’t this picked up sooner” conversation became an early, collaborative cleanup.
The monthly ticket for “can you send me the asset list” disappeared. The QBR stayed meaningful. The invoice did more work.
Why this matters
- The invoice as a verification document. A dated, complete record of every billable endpoint — delivered automatically every cycle — is exactly what an asset-conscious client wants. Most MSPs don’t think to put it there because their PSA can’t.
- Raw data beats curated data, sometimes. Curating the list to hide “noise” would’ve hidden the signal too. Stale machines are the signal. The customer is best positioned to flag them.
- Design protects adjacent conversations. Leaving hardware age and OS off wasn’t an oversight — it was a decision to keep the QBR valuable. Good invoice design respects what doesn’t belong on an invoice, too.
- Billing trust compounds. When the invoice shows the client their own environment in detail, month after month, the invoice stops being a thing to scrutinize and starts being a thing to rely on.
Why it’s possible
Better Invoice’s custom invoicing isn’t limited to ConnectWise data. We can wire in other sources — an RMM, a CRM, a spreadsheet the customer maintains, anything with an API or a feed — and render it as part of the invoice, scoped to one customer, without forking the product or asking anyone to change how they work.
If one of your end-clients is asking for something their invoice doesn’t show today — and your answer has been “open a ticket every month” — that’s exactly the kind of problem this was built for.