Answer
This guide covers importing your employee records and, for New Zealand employees, their historic gross earnings (pay history) so that annual-holiday calculations are accurate from day one. These are two separate imports — you can do either on its own, or both together.
Quick start
- Prepare your employee CSV — download our example spreadsheet (see below) and fill in your employees' details, copying from your current payroll software where you can.
- Go to the Employees screen and choose Import Employees from CSV (in the desktop app this is under Actions).
- Select your employee CSV. New Zealand companies can also select an NZ historic gross earnings CSV in the same step.
- Upload. Lightning Payroll imports the rows it can read and lists any it could not, so you can fix those and re-upload.
- Open any employee afterwards to review or complete their details.
Part 1 — Import employee records (CSV)
Most businesses set up their employees from a CSV file — this is the usual way to bring staff across from other payroll software. Please see our example spreadsheet here, fill in your employees' details (copying from your current software where you can), and use the field reference below for what each column means.
A few fields identify and set up the employee — first name, last name, employment start date and pay period. Everything else is optional, but we recommend completing as much as you can. You can edit any detail — including shifts, allowances and other pay items — in the employee profile after the import is complete.
Field reference
| Column | What it is | Example |
|---|---|---|
first_name | Employee's first name | Aroha |
last_name | Employee's surname | Ngata |
number | Your own employee number / staff ID (optional) | 1024 |
start_date | Employment start date | 15/04/2026 |
pay_period | Pay frequency (Weekly, Fortnightly, Monthly) | Fortnightly |
pay_rate_per_hour | Base hourly rate | 32.50 |
ird_number | IRD number (validated) | 123-456-789 |
nz_tax_code | NZ tax code (e.g. M, ME, SB, S, SH, ST, SA, ND) | M |
has_student_loan | Student-loan borrower (true/false) | true |
no_declaration | No IR330 declaration provided (uses the ND code) | false |
kiwisaver_employee_rate | Employee KiwiSaver rate | 0.03 |
kiwisaver_employer_rate | Employer KiwiSaver rate | 0.03 |
kiwisaver_status_code | KiwiSaver membership status | AK |
kiwisaver_existing_action | Action for an existing KiwiSaver member | |
esct_rate | Employer superannuation contribution tax rate | 0.175 |
employer_contrib_tax_method | How employer contributions are taxed (ESCT / PAYE / Split) | ESCT |
employer_contrib_paye_fraction | PAYE portion when using the Split method | |
nz_annual_holidays_weeks | Opening annual-holidays balance, in weeks | 2.5 |
nz_sick_days | Opening sick-leave balance, in days | 10 |
nz_alt_holiday_days | Opening alternative-holiday balance, in days | 1 |
ytd_as_at_date | The date your YTD figures are accurate as at | 2026-04-01 |
ytd_ordinary_time | YTD gross ordinary-time earnings | 18500.00 |
ytd_paye | YTD PAYE deducted | 3200.00 |
ytd_student_loan | YTD student-loan deducted | 410.00 |
ytd_kiwisaver_employee | YTD employee KiwiSaver contributions | 555.00 |
ytd_kiwisaver_employer | YTD employer KiwiSaver contributions | 555.00 |
ytd_kiwisaver_esct | YTD ESCT on employer contributions | 97.00 |
Several columns accept only specific codes — see Accepted values for coded fields below for what to put in each one.
Year-to-date (YTD) figures let you carry an employee's earnings and deductions forward from a previous system. Enter the date they are accurate as at in ytd_as_at_date, then the matching totals. YTD figures are stored separately from the historic gross earnings described in Part 2.
Accepted values for coded fields
Put the short code (the left-hand value) in your CSV.
nz_tax_code — the employee's tax code from their IR330 form. For a student-loan version of a code, use the base code below and set has_student_loan to true.
M | Main income, standard rate |
ME | Main income, eligible for the Independent Earner Tax Credit (IETC) |
SB | Secondary income, total annual income up to $14,000 |
S | Secondary income, total annual income $14,001 to $48,000 |
SH | Secondary income, total annual income $48,001 to $70,000 |
ST | Secondary income, total annual income $70,001 to $180,000 |
SA | Secondary income, total annual income over $180,000 |
CAE | Casual agricultural employee |
EDW | Election day worker |
NSW | Recognised seasonal worker (non-resident) |
STC | Special tax code (tailored rate issued by Inland Revenue) |
ND | No declaration — no IRD number supplied, or the IR330 was not completed |
kiwisaver_status_code — the employee's KiwiSaver status. Leave blank if not set.
AE | Auto-enrol (new employee, eligible for KiwiSaver) |
AK | Existing KiwiSaver member |
OK | Opting in to KiwiSaver |
NK | Not eligible for KiwiSaver |
CT | Casual / temporary employee |
kiwisaver_existing_action — only needed for an existing employee changing their KiwiSaver arrangement. Leave blank for no action.
EE | Existing employee opting in |
EA | Existing employee auto-enrolled |
employer_contrib_tax_method — how the employer's KiwiSaver contribution is taxed.
ESCT | Tax the contribution as ESCT (most common) |
PAYE | Treat as salary/wages under RD 68 |
SPLIT | Part PAYE (RD 68), remainder ESCT |
Rates and other set-value columns:
kiwisaver_employee_rate—0.00,0.03(default),0.04,0.06,0.08or0.10kiwisaver_employer_rate—0.03(default),0.04,0.06,0.08or0.10esct_rate—0.105,0.175,0.30,0.33or0.39(10.5%, 17.5%, 30%, 33%, 39%)pay_period—Weekly,FortnightlyorMonthlyhas_student_loan,no_declaration—trueorfalse
Part 2 — Import historic gross earnings (pay history for annual holidays)
Annual holidays are valued using a rolling 52-week average of gross earnings (Average Weekly Earnings). If your employees were paid outside Lightning Payroll for any part of the last 52 weeks, load their historic gross earnings so the average is accurate from their first leave payment.
Two ways to load historic gross earnings
- Together with the employee import — New Zealand companies get a second file selector in the import screen for an NZ historic gross earnings CSV, right alongside the employee CSV. Best when you are setting up the company and have history for several employees at once.
- On its own, later — you can import a historic gross earnings CSV without an employee file at any time from the same Import screen. You will also be offered this import straight after manually adding a new NZ employee. Best when you add employees one at a time and want to back-fill their history the same way.
What each row needs
Every historic gross earnings row needs three pieces of information:
pay_date— the date the pay was made. Accepted formats include15/04/2026(DD/MM/YYYY) and2026-04-15(YYYY-MM-DD).gross_earnings— the gross earnings paid for that pay period.employee_numberorird_number— used to match the row to an employee. Preferird_numberwhere available; if you supply both, they must point to the same employee.
Please see our historic gross earnings example spreadsheet here for a working sample. The same template can also be downloaded from within Lightning Payroll when you start a CSV import.
What happens when you import
Lightning Payroll checks every row as it imports and brings in the ones it can use. Any row it cannot use is reported back so you can correct your CSV and upload again. A row is reported when:
- the file is missing the
pay_dateorgross_earningscolumn, or is missing bothemployee_numberandird_number; - the
pay_dateis not a valid date, orgross_earningsis not a valid number; - the IRD number or employee number does not match anyone in the company;
- the
pay_datefalls on or after an existing Lightning Payroll pay for that employee.
That last rule prevents double-counting: a pay you have already run in Lightning Payroll already contributes to the 52-week average, so an imported row covering the same period is rejected rather than added on top. Historic gross earnings should only cover the period before the employee's first Lightning Payroll pay.
Important: historic rows feed the average only
Historic gross earnings rows are used only for the rolling 52-week average that values annual holidays. They do not create historical pays, payslips or YTD figures. If you need to carry forward year-to-date totals, enter those on the main employee CSV (Part 1).
Migrating from another payroll system
Ask your previous system for a per-pay gross earnings report covering the last 12 months, then reshape it into the three columns above (pay_date, gross_earnings, and ird_number or employee_number). Most systems can produce this directly.
Troubleshooting
| Message | What to do |
|---|---|
CSV must include pay_date and gross_earnings columns |
Check the header row of your historic gross earnings file — both columns must be present and spelled exactly. |
CSV must include employee_number or ird_number |
Add at least one identifier column so each row can be matched to an employee. ird_number is preferred. |
Invalid pay_date |
Use a recognised date format, e.g. 15/04/2026 or 2026-04-15. |
| Gross earnings is not a valid number | Remove currency symbols and thousands separators — enter the amount as plain digits, e.g. 1850.00. |
| IRD / employee number does not match an employee | Confirm the identifier matches an employee already in the company. Import or add the employee first, then the history. |
| Date on or after an existing Lightning Payroll pay | Expected — only import history for periods before the employee's first Lightning Payroll pay. Remove the overlapping rows. |
| NZ tax code or IRD number is invalid (when saving an employee) | Choose a valid NZ tax code, and enter a valid IRD number — or tick No declaration if the employee has not provided one. |
Already using Lightning Payroll elsewhere? If you are moving employees between Lightning Payroll database files (rather than coming from other software), you can export them from the other file to produce a ready-to-import CSV in the exact format above. This is uncommon, but if you need it see How Do I Export Employees Or Merge Lightning Payroll Databases?