Where the queue lives
The review queue isn't a separate screen — it's each client's Invoices tab, laid out as a three-pane workbench: the invoice list on the left, the original document in the center, and the data, comments, and actions on the right. This article covers how invoices move through review; for a full tour of the workbench panes and editors, see the VAT workbench.
The six buckets
Filter pills above the list sort the period's invoices into issue buckets:
- All — everything in the selected period.
- No document — the invoice has no usable supporting document. A generated sales-invoice PDF counts as the document; a deleted upload does not.
- Check data — the data looks incomplete: missing invoice number, no vendor assigned, or a zero amount.
- Duplicate? — a possible duplicate: same-number detection (dismissable per invoice) plus amount-based hints — same amount within ±0.05 in the invoice currency and ±7 days. Opposite-sign pairs are labeled as a possible credit-note pair.
- Flagged — sent back to the client with a reason.
- Done — reviewed or ignored.
The counts on the pills are computed on the server over the full period. The list itself loads up to 100 rows, but the counts never come from a truncated page — what the pills say is the truth.
Problems first
The default ordering is needs-attention: no document → check data → duplicate → pending → flagged → reviewed (dimmed at the bottom). Ignored invoices collapse into their own group. Working top-down means you always hit the invoices that block a clean period first.
The review cycle
pending → approve → reviewed (silent — the client isn't pinged)
pending → flag → flagged (client gets the reason + a notification)
flagged → client corrects → pending (auto-reset; you're notified)
flagged → approve → reviewed
Nothing here is destructive — any status can be changed again later. When a client corrects a flagged invoice, it returns to your queue automatically; see auto-reset on client edit.
The receipt gate
Approving an incoming invoice that carries VAT with no usable document is blocked — there is no override. The Approve button is disabled with a hint and a one-click path to request the document from the client. The same gate protects Approve all and the client side; it cannot be bypassed anywhere.
Two softer cases stay approvable behind an explicit confirm: an invoice with zero VAT and no document ("This invoice carries no VAT and has no linked document. Approve it anyway?"), and incomplete-data rows ("The invoice data looks incomplete… Approve it anyway?"). For the reasoning behind the gate, see why VAT bookings need a receipt.
Flagging
Press F (or click Flag) to open the flag modal: six quick-pick reasons — "Amount incorrect", "Invoice number incorrect", "Vendor missing", "VAT issue", "Payment proof missing", "Document missing" — plus free text. A reason is required; Cmd/Ctrl+Enter sends. The message goes to the client, and every owner and admin of the client company is notified.
For recurring feedback there are 17 system templates plus your own per-company custom ones — see using flag templates.
Approve all, honestly
The Approve all button approves the loaded page's pending invoices in sequential chunks of up to 50 (the server cap per request). The confirm dialog is page-honest: if the period holds more pending invoices than the page loaded, it says "N of M" and never promises the server-wide count. The server decides skips — anything behind the receipt gate is left alone — and the result toast reports them: "Approved N · M skipped (no document)". The button hides itself when the loaded page has no pending rows. Details in bulk-approve up to 50 invoices.
Keyboard-first
The whole flow runs without the mouse:
| Key | Action |
|---|---|
| A | Approve |
| F | Flag (opens the reason modal) |
| S | Skip |
| I | Ignore |
| J / N / ↓ | Next invoice |
| K / P / ↑ | Previous invoice |
| D | Flip direction (incoming ↔ outgoing) |
| C | Focus category picker |
| V | Focus VAT-rate picker |
| M | Open match candidates |
| R | Request the document from the client |
| Shift+F | Document preview fullscreen |
| Cmd/Ctrl+K | Focus workspace search |
| ← / → | Switch workspace tabs |
| Cmd/Ctrl+Enter | Submit the flag modal |
Shortcuts are dead while a dialog is open or while you're typing in a field, and modified keys never trigger review actions — no accidental approvals. A shortcut legend renders in the panel.
Related
- The VAT workbench — the full Invoices-tab tour
- Why VAT bookings need a receipt — the gate's rationale
- Using flag templates — the 17 templates + custom ones
- Bulk-approve up to 50 invoices — Approve all in detail
- Auto-reset on client edit — what happens after you flag