Article
Invoice QA Checklist for MSPs
A 10-point invoice QA checklist for MSPs to catch margin, tax, time, and note errors on ConnectWise invoices before they reach the client.
An invoice QA checklist is the set of checks an MSP runs on every ConnectWise Manage invoice before it goes to a client. It catches expensive errors — below-cost products, misrouted credit memos, unbilled time — while they’re still cheap to fix.
Most of these errors come from one of two places. Either data was entered wrong upstream in ConnectWise, or work that should never appear on a client invoice slipped onto it. Both are invisible at a glance and obvious once you know where to look.
The 10-point invoice QA checklist
Work down the list in order. Each item names what to verify, why it matters, and what “good” looks like.
-
Products aren’t below cost or low margin. A product priced under cost loses money on every unit; a thin margin leaks profit quietly. Good looks like every product line above your floor — 20% margin is a sensible default, with anything below cost treated as a hard error, not a warning.
-
Recurring and agreement totals match last cycle. A subscription that silently drifts up or down usually means an addition changed mid-cycle. Good looks like this month’s agreement total matching the prior invoice on the same agreement, to the cent — investigate any difference of $0.01 or more.
-
Credit memos are actually negative. A credit memo with a positive total charges the client instead of crediting them — almost always a data-entry slip. Good looks like every credit memo total at or below zero.
-
The tax code is set and taxable products are marked taxable. An unset tax code means tax isn’t calculated at all; a product left non-taxable by mistake creates a shortfall you eat later. Good looks like a tax code on the invoice and the Taxable box ticked on every product that should carry tax.
-
No stale time from months ago. Old work invites pushback — “why am I seeing November on a May invoice?” Good looks like every billable time entry logged within your window of the invoice date; 60 days is a reasonable cutoff before an entry needs a note explaining the delay.
-
Non-billable time isn’t accidentally billed. Entries marked NoCharge or DoNotBill represent work you chose to give away; billing it anyway breaks trust. Good looks like non-billable hours staying off the charge — flag any invoice carrying 2 or more hours of it so you can decide to write off or rebill on purpose.
-
Flagged work types stay off the client invoice. Internal categories like Admin or Pre-Sales are real work, but they don’t belong on the customer’s copy. Good looks like a watch list of work types that should never reach the client, checked against every service line before send.
-
Every billed ticket has substantive notes. Unwritten labor looks suspicious to customers and indefensible in a dispute. Good looks like each billed ticket carrying real note text — not a blank line, and not one vague fragment on an expensive entry.
-
Large expenses are verified. A high-dollar expense with no second look is how a wrong receipt amount reaches the client. Good looks like every expense over your threshold — $500 is a common floor — checked against the receipt before it ships.
-
No internal TODO or FIXME text in descriptions. Placeholder text and reminders written for your own team read as unprofessional, or worse, when a client sees them. Good looks like descriptions and displayed notes scanned for words like TODO and FIXME — and any other internal shorthand your techs use.
That’s the list. Running it by hand on every invoice is thorough and slow, which is exactly why it tends to get skipped under deadline.
Where ConnectWise Invoice Routing fits
ConnectWise Manage already has a way to move an invoice through human reviewers before it sends: Invoice Routing. In Invoice Search, select the Routing tab to set up invoice routing. In My Invoices, reviewers use Route Forward and Route Backward to act on their queue.
Routing answers who looks at this invoice and in what order. It does not answer what they should look for. The ten checks above still live in someone’s head or a wiki page, and they still get run by eye.
Or let Better Invoice check all of these automatically
Better Invoice review turns the checklist into rules that run on every invoice the moment it lands. Each item above maps to a rule with a configurable threshold:
- Low profit margin — flags lines below 20% margin, errors on below-cost.
- Agreement invoice amount changed — compares to the prior agreement invoice.
- Credit memo has a positive total — errors when a credit charges instead of credits.
- No tax code on invoice and Product not marked taxable — catch missing tax setup.
- Stale time entries — flags billable time older than 60 days.
- Non-billable time on invoice — flags 2 or more NoCharge / DoNotBill hours.
- Flagged work type billed — watches a tenant-specific list like Admin or Pre-Sales.
- Ticket billed with no notes and Insufficient ticket notes — check that billed time carries real documentation.
- Large expense — flags expenses over your dollar threshold.
- Keyword on the invoice — searches for TODO, FIXME, and any words you add. Use it deliberately too: leave a placeholder like
XXXorTBDin an unfinished description and it gets flagged before send.
Findings land as Flags on each invoice, color-coded by severity — red for errors, amber for warnings — with a checkbox to mark each one OK once you’ve reviewed it. The defaults ship sensible; you tune thresholds and turn rules on or off per tenant. See the review rules reference for every rule and default, and configure review rules to adjust them.
The reviewer side carries over too. Better Invoice seeds its reviewers from the same Invoice Routing list already on the ConnectWise invoice — so the people who route invoices today don’t have to be re-added by hand. From there, reviewers approve or reject in app, and the activity and audit trail records who did what. See reviewers and approvals for the full flow, or what is invoice review for the overview.
The checklist doesn’t change. What changes is who runs it: a rules engine on every invoice, every time, instead of a busy person at the end of a billing run.
Frequently asked questions
What should you check before sending an MSP invoice?
Check that products are priced above cost, recurring totals match last cycle, credit memos are negative, the tax code is set, time entries are recent and billable, flagged work types stay off the client copy, every billed ticket has notes, large expenses are verified, and no internal TODO or FIXME text reaches the customer.
How do MSPs review invoices in ConnectWise before sending?
ConnectWise Manage uses Invoice Routing — the Routing tab in Invoice Search and Route Forward/Backward in My Invoices — to pass invoices through reviewers. Better Invoice adds an automated rules layer on top and seeds its reviewers from the same routing list.
How do you catch below-cost or low-margin products on an invoice?
Compare each product line's unit margin to a threshold. Better Invoice's Low profit margin rule flags any line below 20% margin by default and escalates below-cost lines to errors.
How do you stop internal notes from reaching clients on an invoice?
Search descriptions and displayed time notes for internal keywords. Better Invoice's Keyword on the invoice rule checks for TODO and FIXME by default, plus any words you add.