Bulk upload invoices with a CSV
Audience: Shop owner / accountant Time: 3 minutes
Have a batch of sales in a spreadsheet? Instead of typing each one, upload a CSV or Excel file and envoice files them all to LHDN in one go. It auto-detects your columns, so you do not need a special template.
Plan: CSV bulk upload is available on the Starter plan and above.
1. Open CSV upload
Go to Documents → Upload CSV. Click Choose a CSV or Excel file and pick your file (.csv, .txt, or .xlsx).
2. Check the column mapping
envoice reads your header row and auto-maps each column to the right field: invoice number, date, buyer TIN, name, address, description, quantity, unit price, and so on. A preview of the first rows is shown so you can confirm.

If your file comes from a POS or accounting system with its own column names, some fields may stay on (skip). Click Suggest columns and envoice suggests a column for each field still empty. Suggested fields are marked Suggested: hover or tap the mark to see why that column was picked. Nothing is imported until you check the mapping and continue. To make the suggestion, envoice sends only the header row and up to 5 sample rows to Anthropic Claude, with emails, phone numbers, IC numbers and TINs masked first. Suggestions are limited to 20 a day per user.
Adjust any dropdown if a column mapped wrong. Only two fields are required: Description and Unit Price. Rows that share the same invoice number are grouped into one multi-line invoice.
3. Submit all rows
Click Submit all rows. envoice processes the file in batches, creating and filing each invoice to LHDN. Progress is shown as it goes.
4. Review the results
When it finishes you land on Documents, where every uploaded invoice appears with its VALIDATED status.

Rows without a buyer TIN are treated as General Public and batched into your monthly consolidated e-invoice, exactly like a walk-in sale. Rows with a TIN file individually.