People

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 employee importer — Upload, Preview, Done; the template, the parsed preview, and the rows it could not take.

The three steps

1
Upload

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.

2
Preview

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.

3
Done

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.

Employee import columns
ColumnRequired?Notes
First NameYesAt least two characters.
Middle NameNo
Last NameNoAt least two characters when present.
EmailNoThe login identity where one is given.
PhoneNo
AddressNo
Nationality CodeNoExactly two characters, or blank.
DepartmentNo
PositionNo
Work LocationNo
Bank NameNo
Account NameNo
Account NumberNoKept as text, so leading zeros survive.
Employee NoNoKept as text. Supply it to match an existing person on an update.
UpdateNotrue or false — see below.
⚠️The importer does not carry every field the hire page does

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.

✅Give the employee number on an update row

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.

ℹ️Where to find the detail later

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.

ImportOpened fromBrings in
EmployeesImport on the employee registerPeople — name, contact, department, position, location, bank.
Payroll itemsImport on the pay schedules listPay 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.