Invoice Review

Invoice Review Rules Reference

Complete reference for every Better Invoice invoice review rule — what each one checks, its exact trigger, severity, defaults, and config options.

Better Invoice runs a set of automated invoice review rules against every ConnectWise PSA invoice before you send it. Each rule inspects one aspect of the invoice — margin, tax setup, time notes, expenses, credit memos — and raises a flag when something looks wrong. This page is the comprehensive reference for all twelve rules: what each checks, the exact condition that triggers it, its severity, whether it ships on or off, and every config option with exact defaults and ranges.

Rules evaluate against pre-extension ConnectWise data — the canonical CW field values, before any display rewrites. When a rule matches against a work-type or product-type name, it matches the raw ConnectWise name.

For how flags surface in the review pane, see Understanding flags. To turn rules on or off and adjust thresholds, see Configure review rules. For where this fits in your workflow, see What is invoice review.

How review rules relate to ConnectWise Invoice Routing

ConnectWise’s native pre-send approval feature is Invoice Routing — a manual sequence of members who must approve an invoice on the Routing tab or via My Invoices. Invoice Routing tells you who should look at an invoice, but not what to look for.

Better Invoice review is the modern upgrade: it automatically inspects the invoice content and flags real problems, then routes it to the right people. When Better Invoice first pulls an invoice, it seeds its reviewer list directly from that invoice’s existing ConnectWise Invoice Routing entries, so your current approval chain carries over without re-entry. See Reviewers and approvals.

Severity, defaults, and dismissal

Every flag carries a severity: error, warning, or info. Errors and warnings can block a finalizing approval (a soft gate prompts you before you approve with open flags); info flags are advisory.

Each rule ships with a default on/off state. Profitability and core billing-accuracy checks are on by default. Rules that depend on tenant-specific policy — tax requirements, expense thresholds, keyword watch lists — ship off so you opt in.

Flags persist by a stable identity: (review, rule, target type, target id). On rescan, a flag whose target still fires is preserved — including any dismissal you made — while a flag whose underlying issue was fixed upstream disappears. Marking a flag Marked OK dismisses it without deleting it.

Defaults and thresholds at a glance

RuleSettingDefaultUnit / range
Low profit marginMargin threshold20%, 0–100
Low profit marginMinimum line amount0$, ≥ 0
Insufficient ticket notesMinimum lines per hour6lines/hour, ≥ 0
Insufficient ticket notesMaximum lines50lines, ≥ 1
Insufficient ticket notesAmount floor0$, ≥ 0
Non-billable time on invoiceMinimum hours2hours, ≥ 0
Stale time entriesMaximum age60days, ≥ 1
Large expenseThreshold500$, ≥ 0
Keyword on the invoiceKeywordsTODO, FIXMEstrings, max 50
Substantive note lineMinimum length10characters
Agreement / credit memoComparison epsilon0.01$

Profitability rules

Low profit margin

Billing accuracy rules

Agreement invoice amount changed

Credit memo has a positive total

No tax code on invoice

Product not marked taxable

Time and labor rules

Non-billable time on invoice

Stale time entries

Flagged work type billed

Documentation quality rules

The two notes rules — Ticket billed with no notes and Insufficient ticket notes — both read the rendered Time Detail page, so they see exactly what the customer will see. They share three behaviors worth understanding before you tune either one: what counts as a substantive note line, how rendered buckets map to the Time Detail page, and the gating rule that skips both when the template hides notes.

Ticket billed with no notes

Insufficient ticket notes

What counts as a substantive note line

A substantive (or “meaningful”) line is the unit both notes rules count. A line qualifies when, after trimming whitespace, it is:

So blank lines, separator rows like ---, and bare bullet points () don’t count toward documentation quality — only real sentences do. This is why a note that’s mostly formatting can still trip Insufficient ticket notes even though it looks long.

How rendered buckets map to the Time Detail page

Both rules operate on displayed note buckets — one bucket per row as it actually renders on the Time Detail page. The mapping respects your template’s mergeBy grouping:

Because the rules read the rendered buckets, they evaluate the same grouping your customer sees. A per-ticket rollup is judged as one ticket, not as the individual entries underneath it.

Notes rules only run when the template displays notes

This is the key gating rule. Neither notes rule evaluates anything if the active template doesn’t show notes. If your template config has Time Detail hidden (timeDetail.visible off) or Show notes turned off (showNotes off), both rules skip silently and contribute no flags.

That’s intentional: if the customer never sees the notes, there’s nothing to flag. The same gating applies to the notes surface of the Keyword on the invoice rule below.

Content rules

Keyword on the invoice

Large expense

Applying rule changes to existing invoices

When you change a rule’s config or toggle it on or off, Better Invoice re-evaluates that rule across your existing reviews immediately, using each invoice’s stored ConnectWise data — no new ConnectWise calls are needed. Dismissed flags that still fire are preserved. See Configure review rules for the settings UI.

Frequently asked questions

What invoice review rules does Better Invoice run before sending?

Better Invoice runs twelve automated review rules: low profit margin, agreement invoice amount changed, credit memo has a positive total, no tax code on invoice, product not marked taxable, non-billable time on invoice, stale time entries, flagged work type billed, ticket billed with no notes, insufficient ticket notes, keyword on the invoice, and large expense. Each raises an error, warning, or info flag in the review pane.

Which review rules are on by default?

On by default: low profit margin, agreement invoice amount changed, credit memo has a positive total, non-billable time on invoice, stale time entries, ticket billed with no notes, and insufficient ticket notes. Off by default (opt in): no tax code on invoice, product not marked taxable, flagged work type billed, keyword on the invoice, and large expense.

Why aren’t my ticket-notes rules flagging anything?

The notes rules only evaluate when your invoice template actually displays notes. If Time Detail is hidden or Show notes is turned off in the template config, both Ticket billed with no notes and Insufficient ticket notes skip silently. Turn notes on in the template, then the rules evaluate the rendered Time Detail buckets.

How is Better Invoice review different from ConnectWise Invoice Routing?

ConnectWise Invoice Routing is a manual approval sequence — it controls who signs off, not what gets checked. Better Invoice review automatically inspects invoice content (margin, tax, notes, expenses, credit memos) and flags real problems, then seeds its reviewer list from your existing ConnectWise routing so your approval chain carries over.

Will adjusting a rule’s threshold re-flag invoices already in review?

Yes. Changing a rule’s config or enabling it re-runs that rule across your existing reviews right away, using stored ConnectWise data. Flags you previously dismissed that still match are kept, so you don’t lose your earlier decisions.

Ready to send better invoices?

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

Get started free →