All stories

Customer story

The Invoice Doubled as the Asset Report

How one MSP turned 'send me a list of every computer every month' from a ticket-thrash into a billing-cycle byproduct — with a custom RMM integration we built just for them.

Filed in Custom invoicing

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:

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.

3Fields per row
0Monthly tickets
1Dated source of truth

Why this matters

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.

End of story

Ready to send better invoices?

Start for free. Your invoices should look as good as the work you do.

Get started free →