The three-pane layout
Reviewing an invoice means comparing three things: what the client's books say, what the original document says, and what you want to do about it. The workbench puts all three side by side: the invoice list on the left, a preview of the original document in the center, and the data, comment thread, and review actions on the right. Shift+F opens the document preview fullscreen when you need to squint at a line item.
Six issue buckets
The filter pills above the list sort the period's invoices by what's wrong with them:
- All: everything in the period.
- No document: no usable supporting document. A generated PDF of a finalized sales invoice 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? possible duplicates. 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 rather than a duplicate.
- Flagged: sent back to the client with a reason; waiting on their correction.
- Done: reviewed or ignored.
Counts come from the server over the full period. The list caps at 100 rows per page, but the pills never read a truncated page. The default sort is needs-attention: no document → check data → duplicate → pending → flagged → reviewed (dimmed), with ignored invoices collapsed into their own group.
Keyboard-first review
Every review action has a key, so a routine month is mostly two fingers:
| Key | Action |
|---|---|
| A | Approve |
| F | Flag (opens the reason modal) |
| S | Skip |
| I | Ignore |
| J / N / Down arrow | Next invoice |
| K / P / ↑ | Previous invoice |
| D | Flip direction (incoming ↔ outgoing) |
| C | Focus the category picker |
| V | Focus the 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 inert while a dialog is open or while you're typing in a field, and modified key combos never trigger review actions: no accidental approvals. A shortcut legend renders in the panel itself.
Flagging requires a reason: the modal offers six quick picks (Amount incorrect, Invoice number incorrect, Vendor missing, VAT issue, Payment proof missing, Document missing) plus free text, and Cmd/Ctrl+Enter submits.
Fixing data without leaving the screen
- Split-screen invoice editor: correct the supplier's invoice number, vendor, date, and net/VAT/gross amounts in a modal that keeps the original document on the left and the fields on the right, so the numbers you're correcting stay visible.
- VAT rate: correct via dropdown; the gross amount stays fixed while net and VAT recompute.
- Reclassify a wrongly finalized sales invoice: behind a deliberate danger confirm ("Void RE-…?"). The invoice number is voided but its sequence slot is kept and annotated (never a missing-number gap), the generated PDF is removed, and the invoice converts to incoming so the supplier's real number can be entered. Documents locked in a cancellation chain stay locked.
- Currency override: when a payment and an invoice disagree on currency, you can force the link: "Link anyway using your conversion?" It's an explicit advisor override, and audited like everything else.
Approve all is honest by design
"Approve all" processes the loaded page's pending invoices in sequential chunks of up to 50 (the server cap per bulk request). The confirm dialog is page-honest: if the period holds more pending invoices than the page you've loaded, it says "N of M" and never promises the server-wide count. The server decides skips, and any VAT-bearing invoice without a usable document is skipped, not approved. The result toast then reports exactly what happened: "Approved N · M skipped (no document)". The button hides itself when the loaded page has no pending rows.
Nothing here is destructive: approve, flag, and ignore are all status changes you can revise later, and every action lands in the audit log.
Related
- Why VAT bookings need a receipt (the gate behind those skips)
- Request a receipt from your client (the R shortcut's other half)
- The transaction work queue, explained (the bank side of the same period)
- Period checklist and VAT return prep (when the buckets read zero)
- Credit notes and cancellations (the opposite-sign pairs in Duplicate?)