Nobody starts empty. This is how last year comes with you.
Why a document import is different
Importing customers is easy: one row, one customer. An invoice is not one thing — it is a header, its lines, its number and its totals. A spreadsheet of invoices is one row per line, with the invoice number repeated down the page.
So the importer groups rows by the number column. The header is read from the first row of each group; every row in the group becomes a line.
| Number | Item | Qty | Rate |
|---|---|---|---|
| INV-001 | Steel pipe 2″ | 10 | 450 |
| INV-001 | Elbow joint | 20 | 65 |
| INV-002 | Steel pipe 3″ | 5 | 610 |
That file makes two invoices: one with two lines, one with one.
No number column? Then every row is read as its own single-line document. That is how a list of simple invoices usually arrives, so it is the sensible default rather than an error.
The columns you can map
Your spreadsheet’s headings almost certainly do not match ours, and they do not need to. You map them on the way in.
| On the document | On each line |
|---|---|
| Document number, Customer, Date, Due date, Their reference, Currency, Notes | Item or description, SKU, HSN / SAC, Quantity, Unit, Rate, Discount %, Tax % |
Only two are compulsory: the customer and the item or description. Everything else can be left unmapped, and sensible defaults apply.
The customer is matched on name, code or email — so whichever your old system exported, it will probably find them.
Nothing is written until everything passes
Every row is checked first. If row 4,000 has a bad date, nothing is imported and you are told which row and which field.
This is the behaviour you want and it is worth knowing you have it. The alternative — writing as it goes — leaves you with 3,999 invoices imported, one missing, and no safe way to run the file again.
When a number already exists
| Choice | What happens |
|---|---|
| Skip | Leave the one you have. The default, and the safe one. |
| Update | Overwrite it from the file. |
| Error | Stop the whole import. |
Limits
- 5,000 rows per file. Split a bigger one — and a smaller file is easier to check anyway.
- Import is its own permission, separate from create. Somebody who may raise one invoice is not automatically somebody who may bring in five thousand.
Doing it without pain
- Import your customers first. Documents match against them, and a document whose customer does not exist cannot be placed.
- Cut the file down to five rows and import those.
- Open one and check it — the totals, the tax, the customer.
- Fix the mapping if it is wrong, and only then run the whole file.
- Keep the original spreadsheet. It is your way back.
Dates are where imports go wrong. Excel will happily show you 03/04/2026 and mean either 3 April or 4 March. Check one imported date against the original before trusting five thousand of them.
Where to go next
Something missing or wrong here? Tell us. A question that needed asking usually means a page that needed writing.