HubWho
All case studies
A 100-seat MSP · 5 min read

How an MSP cut billing time from 6 hours/month to 30 minutes — and stopped under-billing seats

ConnectWise PSA handles tickets. HubWho handles billing. The seat-count audit found 47 unbilled licenses on the first sync.

47
Unbilled M365 seats found on first sync
$1,175
Monthly recurring revenue recovered
11 hrs/mo
Saved on manual billing reconciliation

The starting point

A 14-person MSP serving ~30 SMB clients, reselling Microsoft 365 + endpoint security + backup. Ticketing in ConnectWise PSA. Invoicing in QuickBooks Online. Every monthly bill required pulling seat counts from M365 admin centers, tallying security agent licenses from Datto's dashboard, exporting, reconciling, and manually generating invoices.

Six hours per month. Sometimes nine. And every audit found a few seats they were paying Microsoft for but not billing the client.

The audit moment

Adding products as recurring subscriptions in HubWho forced a clean inventory: 'how many seats does each client actually have right now?' The first reconciliation against the M365 partner portal exposed 47 seats across 11 clients that weren't on any invoice.

Most weren't malicious offboarded clients — they were add-seat requests the MSP had fulfilled but never added to QuickBooks. Total monthly leakage: $1,175. Per year, $14K — more than the MSP's annual HubWho subscription pays back in 4 weeks.

The ongoing operation

Today each client has a recurring subscription in HubWho with seat-count as the quantity. Adding or removing seats is a one-field edit; the next invoice prorates. Auto-draft via ACH at 0.8% (capped at $5) replaced manual collect-via-card workflows that ran 2-3% on $1K+ monthly invoices. Monthly billing went from 6 hours to 30 minutes.

Honesty disclosure: Composite based on 2 MSP conversations in our development phase. Seat-discrepancy patterns are common in MSPs with manual reconciliation.