On the validation screen, an error blocks that one invoice from generating; a warning doesn't. Both list the exact row number and what's wrong, so fixing a failed row is almost always a matter of correcting one cell in your spreadsheet and re-uploading — not troubleshooting the app.
Where to look
After uploading and confirming your column mapping, the validation screen lists every invoice group with its status, and an Issues list underneath showing each problem as "Row [number]: [message]". The row number refers to your spreadsheet's actual row, so you can jump straight to it.
Errors — these block that invoice
- Missing quantity or missing rate — both are required on every line item; a blank cell here can't be defaulted to anything meaningful.
- Quantity/Rate must be a number, found "..." — the cell contains text that isn't a number (stray characters, a formula error like #REF!, or a unit typed in like "5 hrs" instead of just "5").
- Unparseable issue/due date — the date isn't in YYYY-MM-DD or DD/MM/YYYY. See preparing your spreadsheet for the exact formats accepted.
- Missing client name or missing issue date — required on the first row of every invoice group.
- Item Discount / Invoice Discount is more than 100% or more than the line/subtotal it applies to — usually a formula referencing the wrong cell, or a fixed amount typed where a percentage was meant.
- Missing invoice number and no preceding invoice to inherit it from — a row with no invoice number that also isn't part of the group above it, usually a blank row left in by mistake.
Warnings — these don't block generation
- Zero-value or negative line item — worth a glance; sometimes intentional (a free line item), sometimes a missing rate that defaulted to zero.
- Mixed currencies within invoice [X] — almost always a copy-paste slip between two clients' data.
- Duplicate invoice number "[X]" — the same number appears in more than one place in the sheet; confirm it's actually meant to be one invoice split across non-adjacent rows, not two different invoices that collided.
- Tax % isn't a number — treated as 0% — the cell had something unreadable in it and was treated as no tax rather than blocking the whole invoice.
- Negative discount — this adds to the amount rather than reducing it; worth confirming that's intentional.
Fixing and re-running
- Note the row number and go to that exact row in your spreadsheet.
- Fix the specific cell — the message tells you what's expected.
- Save the file, then either re-upload it or use Change mapping to go back a step without losing your column mapping.
You don't need to fix every warning before generating — only errors block an invoice. If a whole batch has the same error repeated across many rows, it's usually one systemic issue (a whole column formatted wrong) rather than dozens of separate mistakes — fix the pattern once rather than row by row.
If only some invoices are ready
Generating only the error-free invoices in a batch and handling the rest separately once fixed is completely normal — a partial batch isn't a failed run. See your first bulk invoice run for what happens after you click generate.