
The flow
1
Click Import on the list page
Available on Units of Measure, Currencies, Exchange Rates, Parties, and Chart of Accounts.
2
Download the template
A CSV with the correct column headers and one example row, so you know exactly what’s expected.
3
Fill it in
Add one row per record. Reference columns (like a parent account’s code) must match an existing record’s code exactly.
4
Upload it
The system parses the file and shows a preview — every row marked valid or invalid, with the specific reason for anything invalid, before anything is actually saved.
5
Fix and re-upload, or confirm
Fix any flagged rows in your CSV and re-upload, or confirm to import just the valid rows.
6
Check Import History
Once confirmed, the import runs in the background — check Import History for the final count of created/updated/failed rows, with per-row error detail if anything failed.
What each entity’s import supports
Importing a product’s stock settings alongside the product
If your account has the Retail module enabled, the existing Product import (Catalog → Products → Import) automatically gains extra optional columns:track_stock, uom_code, track_batch, track_expiry, reorder_level, reorder_qty, cost_price, is_sales_item, is_purchase_item. Fill these in on the same row as the product itself, and its Stock Profile is created or updated automatically — no separate import step needed. Leave them blank for products you don’t want to stock-track.
Frequently Asked Questions
What happens if I import a row that references something that doesn't exist, e.g. a UOM code that's a typo?
What happens if I import a row that references something that doesn't exist, e.g. a UOM code that's a typo?
That row is marked invalid at the preview stage with a clear message (e.g.
"XYZ" not found in uom_code) — it won’t be imported, but the rest of the file still can be.Does importing overwrite existing records?
Does importing overwrite existing records?
Yes, for entities matched by a unique code (UOM, Currency, Party, Chart of Accounts) — if a row’s code already exists, it updates that record instead of creating a duplicate. Exchange Rates are the exception (always inserted fresh, since multiple rates over time are expected).
Can I import documents like Purchase Orders or Sales Invoices this way?
Can I import documents like Purchase Orders or Sales Invoices this way?
No — bulk import is for master data only. Transactional documents (POs, invoices, stock movements) have their own draft → submit lifecycle and aren’t a good fit for a flat CSV row.
Related
Units of Measure
Try the import flow here first — simplest entity
Stock Profile
Set stock settings via the Product import
Overview
Back to the module overview

