Import past invoices
Bring your historical invoices in from QuickBooks, FreshBooks, Excel, or Google Sheets. Most users start with a CSV.
What you can import
CSV columns we recognize automatically (auto-mapped from header names):
| Column | Examples we match |
|---|---|
| Invoice # | invoice number, invoice #, inv no, inv #, invoice |
| Client name | customer name, client, bill to, name |
| Client email | email, customer email |
| Client address | address, billing address |
| Description | description, item, product/service, memo, service |
| Qty | qty, quantity |
| Unit price | rate, unit price, price, unit cost, cost |
| Amount | amount, total, line total |
| Issued date | date, issued, invoice date, created |
| Due date | due, due date |
| Paid date | paid, paid date, payment date |
| Status | status |
| Notes | notes, note, memo |
| Currency | currency |
If your column names don't match, you can manually map them in the wizard.
How
- Go to
/kz-admin/import - Upload your CSV (drag + drop or click)
- Step 2 — Map columns: dropdowns auto-fill based on header names. Adjust where wrong.
- Step 3 — Preview: first 5 rows shown with the mapping applied. If something looks off, scroll up + adjust.
- Click Import all rows. Up to 5,000 rows per upload; split larger files.
Multi-line invoices
If your CSV has one row per LINE ITEM (typical of QuickBooks exports), we group rows that share the same invoice_number into a single multi-line invoice. The header fields (client name, dates) come from the first row of each group.
Skip duplicates
Default ON. Skips any row whose invoice_number already exists for your tenant. Lets you re-upload the same file safely.
If you want to replace existing invoices, uncheck Skip duplicates AND delete the old invoices manually first. (We don't auto-overwrite — too risky.)
Status handling
- If your row has a
paid_datefilled in → status auto-set topaid - If it has a
statuscolumn → use that value - Otherwise → defaults to
draft(or whatever you set as default in the wizard)
What we DON'T import
- Tax rates — we set tax_rate=0 on imported invoices. Total and amount are taken as-is. If you need tax recalculated, edit each invoice.
- Customer payment methods — every imported invoice uses your CURRENT payment_settings as its snapshot
- PDFs / attachments — we can't pull file attachments from QB/FreshBooks via CSV
- Late fees, partial payments, credits — flatten these into the line items before exporting
After import
Imported invoices show up in /kz-admin/invoices immediately. They're tagged with the imported invoice number. The customer-facing URL /i/<id> works for any non-draft status.
QuickBooks one-time pull (coming)
If you have QB connected via /kz-admin/integrations, we can pull your last 90 days of QB invoices directly — no CSV step. Look for the Pull from QuickBooks button on the import page once QB is connected.