Importing Employees
Bring a whole workforce in from a spreadsheet — the columns the importer reads, what it validates, and how to update people you already have.
Import on the employee register opens the same three-step importer every list in the product uses. It is the fastest way to load an existing workforce, and the only practical way to correct a field across dozens of people at once.
The three steps
Download the template first — it carries every column, named exactly as the importer reads it, in the order it reads them. Fill it in and drop it back. Excel (.xlsx, .xls) and CSV are both accepted, and the first row must be the headers.
The first ten rows are shown as the importer parsed them, with the total row count beneath. This is where you catch a column that landed one place to the left. Removing a row here means it is not imported.
Nothing is written until you press Import. When it finishes you are told how many rows went in.
The columns it reads
The importer reads columns by position, in the order below — which is why the template matters more than the header text.
| Column | Required? | Notes |
|---|---|---|
| First Name | Yes | At least two characters. |
| Middle Name | No | |
| Last Name | No | At least two characters when present. |
| No | The login identity where one is given. | |
| Phone | No | |
| Address | No | |
| Nationality Code | No | Exactly two characters, or blank. |
| Department | No | |
| Position | No | |
| Work Location | No | |
| Bank Name | No | |
| Account Name | No | |
| Account Number | No | Kept as text, so leading zeros survive. |
| Employee No | No | Kept as text. Supply it to match an existing person on an update. |
| Update | No | true or false — see below. |
Emergency contact, tax ID, hire date, probation and contract dates, employment type, pay frequency and pay items are not import columns. An imported person is a valid record, but they are not payable until pay items are added — through their record, or in bulk through Import on the pay schedules list.
Updating people you already have
The last column, Update, is a boolean. Set it to true on a row and the importer treats that row as a change to an existing employee rather than a new hire — which is what makes a spreadsheet a practical way to correct a bank name or a department across the whole workforce.
An update row needs something to match on. Supply the Employee No exactly as it appears on the register.
When rows are rejected
Validation runs before anything is written, and every row it cannot take is reported with its reason — a missing first name, a nationality code that is not two characters, a value in the wrong column. Fix them in the file and upload again; the rows that were accepted are already in.
When a large import reports row errors, the batch is kept — it is listed at /files/imports (Files → Import History), where the per-row reasons can be read after the dialog has closed.
Importing pay items instead
Employee records and employee pay are two different imports.
| Import | Opened from | Brings in |
|---|---|---|
| Employees | Import on the employee register | People — name, contact, department, position, location, bank. |
| Payroll items | Import on the pay schedules list | Pay items — Employee No, Type, Subtype, Item Name, Amount, Period, Count, Calculation Mode, Taxable, Deductible. |
Employee No, Type and Item Name are required on every payroll-item row. See Pay items for what each type and period means.