CSV import column and error reference
This is the reference. For the walkthrough, see How to import assets from CSV.
Requirements
- Roles: Owner or Admin. Managers, Employees, and Viewers cannot import.
There are three importers
Import asks first what kind of thing your file contains. Your choice decides what gets created — the file cannot decide for you.
| Importer | For | Custom fields |
|---|---|---|
| Individual Assets | One physical item per row — a laptop, a forklift | Yes |
| Asset Stock | A quantity of identical capital units — ten spare laptops | No |
| Consumables | Supply that gets used up — toner, filters, fasteners | Yes |
Each has its own template carrying only the columns it accepts. Always start from the template.
Important A column that does not belong to the importer you chose is reported as an error, not silently ignored — so an old mixed file cannot lose data without telling you.
No template carries an
assetTypecolumn any more. If a legacy file still has one, it must agree with the importer you picked, or the row is refused.
Document Assets cannot be imported by CSV. They require an expiry date and are created in the Documents module.
File requirements
| Requirement | Specification |
|---|---|
| Format | .csv |
| Maximum size | 1 MB |
| Encoding | UTF-8 |
| Header row | Required |
| Minimum | Header plus at least one data row |
Column names are matched case-insensitively.
Individual Assets columns
Required: name, category
| Column | Format |
|---|---|
serialNumber | Text — unique where used |
manufacturer, model, vendor | Text |
purchaseCost, salvageValue | A number — no currency symbols |
purchaseDate, warrantyExpiryDate | YYYY-MM-DD |
department | Must match an existing department |
assignedLocationName | Location name, or nested path with > (e.g. Main Office > IT Department). Missing levels are created on import |
assignedUserEmail | Must match a user in your organization |
customStatus | Must match an existing custom status |
category accepts a single name or a nested path with > (e.g. Computers > Laptops). Missing category levels are created on import.
Custom fields are supported through metadata. columns.
Rejected here: quantity, minimumQuantity, unit — one row is one asset. If you are counting units, you want Asset Stock or Consumables.
Asset Stock columns
Required: name, category
| Column | Format |
|---|---|
manufacturer, model, vendor | Text |
department | Must match an existing department |
assignedLocationName | Location name, or nested path with > — missing levels are created on import |
customStatus | Must match an existing custom status |
quantity | Whole number — the opening balance |
minimumQuantity | Whole number — low-stock threshold |
unit | Text — pcs, boxes, metres |
The quantity you supply is recorded as the item's first ledger transaction, exactly as if you had created it in the form. The balance always has a movement behind it.
Rejected here, each with a message explaining why:
| Column | Why |
|---|---|
serialNumber | The units are interchangeable |
purchaseCost, purchaseDate | Stock does not record these |
salvageValue | Stock is inventory, not a depreciating fixed asset |
warrantyExpiryDate | A warranty covers one unit from one purchase |
assignedUserEmail | Stock is held at a location, not by a custodian |
Custom fields are not supported for Asset Stock.
Consumables columns
Required: name, category
Consumables accept the full set: serialNumber, manufacturer, model, vendor, purchaseCost, purchaseDate, salvageValue, warrantyExpiryDate, department, assignedLocationName, assignedUserEmail, customStatus, plus:
| Column | Format |
|---|---|
quantity | Whole number — the quantity currently held |
minimumQuantity | Whole number — low-stock alerts fire at or below this |
unit | Text |
Custom fields are supported through metadata. columns.
The rule that causes most failures
Departments, people, and custom statuses must already exist. Those names are matched, not created.
Categories and locations may be created from the file when you supply a name or a Parent > Child path. Existing levels are reused; missing levels are created under the correct parent. Single-level values still work as before.
A typo in a category or location path will create a new branch — copy names carefully when extending an existing hierarchy.
Error reference
| Error | Cause | Fix |
|---|---|---|
| Unauthorized — only OWNER and ADMIN can import assets | Your role | Ask an Owner or Admin |
| File size exceeds maximum | Over 1 MB | Split the file |
| File must be a CSV | Wrong format | Export as CSV, not .xlsx |
| CSV file is empty or has no data rows | Header only | Add data rows |
| Asset name is required | Blank name | Usually a trailing empty row — delete it |
| Category is required / Invalid hierarchy path | Missing or empty > level | Use Parent > Child with a name at each level |
| Serial number already exists | Duplicate | Use a different one or leave blank |
| User with email not found in organization | Unmatched email | Check the address, or invite them first |
| Department does not exist | Unmatched name | Create the department first |
| Expected a numeric value | Text in a number column | Remove currency symbols and separators |
| Date format errors | Not YYYY-MM-DD | Check the file itself, not the spreadsheet view |
| "Quantity does not belong in the Individual Assets template…" | Wrong importer | Use Asset Stock or Consumables |
| "Asset Stock has no serial number…" | Wrong importer | Import serialised items as Individual Assets |
Errors identify the row and, where relevant, suggest the valid values available or the template the row belongs in.
Partial imports
Valid rows are created; invalid rows are reported. That is normal.
Re-import only the failed rows. Re-importing rows that already succeeded creates duplicates.
Related articles
Need Help?
If you have questions not covered in this article, our support team is here to help.
Contact Support