Skip to main content

Payroll exports: which file do I need?

A guide to Florence's payroll export files — what each one contains, when to use it, and key payroll terms explained.

Written by Tom

Overview

At the end of a pay period, you need to tell your payroll software how many hours to pay each person for. Florence produces this file for you — but there isn't just one. Because different payroll systems need different shapes of data, Florence offers several export formats to choose from.

This article explains what each export contains, when to use it, and some payroll terms you'll come across along the way.

Which export do I need?

If you need to…

Use…

Why

Pay your staff for this period

Export payroll CSV

The main export — includes calculated pay, not just hours.

Import hours straight into Sage

Export payroll (Sage timesheet hours)

Stripped down to just the columns Sage needs to match people and pay codes.

See one row per person, readable by a human

Export payroll (worker hours)

Same figures as the Sage export, but with names and location for a quick sense check.

Check where a total came from

Export timesheets CSV

The audit trail — every individual shift, with times, breaks and who approved it.

See what changed on an edited timesheet

Export adjustments CSV

Before-and-after times for every approved edit, with the hours difference.

Handle someone who works two roles at different rates

Export worker hours (by pay rate)

Splits each person into one row per job/pay rate.

Set someone up in Sage for the first time

The Downloads page files

Bank details, new starters, employee rates — see the Downloads section below.

A few payroll terms

Term

What it means

Example

Pay rate

The hourly rate attached to a job. A person can have more than one.

"Senior Carer — days" at £13.50/hr

Entitlement

An uplift or premium on top of the basic rate, triggered by when or how a shift was worked.

"Night shift" adds £1.50/hr; "Bank holiday" pays 1.5×

Leave allowance

A bucket of paid time off.

Annual leave, sick leave, parental leave

Export name (e.g. Sage pay code)

The label your payroll system uses for a pay rate, entitlement or leave allowance. Set it once in Florence and it becomes the column heading in your export.

Florence calls it "Night shift"; your Sage calls it NGT — set the export name to NGT and the column heading updates to match

Payroll ID / Works Number / Employee Reference

Three names for the same thing — your own ID for that employee, which is how your payroll software matches a row to a person. If it's blank, that person can't be matched.

A note on export names: columns in the "wide" exports (worker hours, Sage hours) are generated from your export names in Florence's settings. If you change an export name, the column headings in your file will change to match.

Worked example

To show how the formats compare, here's one worker across each export:

Priya Sharma — Senior Carer at Oakfield Lodge, fortnight 1–14 June. She worked 46 hours on days, 8 hours on nights (which earn a night uplift), and took 8 hours of annual leave — 62 hours in total.

1. Payroll run exports

These are downloaded from the payroll run page and cover the hours for one pay period — the export you'll use every pay run.

Export payroll CSV — the default format

One row per person, per type of hours. Priya appears three times: once for her basic hours, once for her night hours, once for her leave.

User ID, Payroll ID, Contract, Roles, First Name, Last Name, Entitlement, Hours, Rate, Calculated Pay

483920, OAK-0142, Senior Carer 60h, Senior Carer, Priya, Sharma, Basic, 46.00, 13.50, 621.00

483920, OAK-0142, Senior Carer 60h, Senior Carer, Priya, Sharma, Night shift, 8.00, 15.00, 120.00

483920, OAK-0142, Senior Carer 60h, Senior Carer, Priya, Sharma, Annual leave, 8.00, 13.50, 108.00

This is the only export that includes calculated pay. Every other export gives hours and leaves the multiplication to your payroll system — so if you're asking "what will this cost?", this is the file to use. Rows with zero hours are left out entirely, so the file only contains what someone is actually owed.

Export payroll (worker hours) — the wide format

One row per person. Instead of repeating Priya three times, each type of hours becomes its own column.

User ID, Payroll ID, First Name, Last Name, Primary Location Name, Basic, Night shift, Annual leave

483920, OAK-0142, Priya, Sharma, Oakfield Lodge, 46.00, 8.00, 8.00

The columns after Primary Location Name aren't fixed — they're built from your export names, so an account with ten pay codes gets ten columns and one with three gets three. Values are always shown to two decimal places.

Export payroll (Sage timesheet hours) — the wide format, for machines

The same maths as worker hours, but stripped to only the columns Sage needs to identify the person:

Works Number, Name, Basic, Night shift, Annual leave

OAK-0142, Priya Sharma, 46.00, 8.00, 8.00

Worker hours vs. Sage hours — how to choose: the numbers are identical. Pick worker hours if a person is going to open the file and sanity-check it — it has names and location. Pick Sage hours if it's going straight into Sage as an import.

Export worker hours (by pay rate)

For people who hold more than one job. Priya splits into one row per pay rate:

User ID, Payroll ID, First Name, Last Name, Job, Role, Basic, Night shift, Annual leave

483920, OAK-0142, Priya, Sharma, Senior Carer — days, Senior Carer, 38.00, 0.00, 8.00

483920, OAK-0142, Priya, Sharma, Senior Carer — nights, Senior Carer, 8.00, 8.00, 0.00

This one uses Florence's own role names rather than your payroll pay codes, and it's generated from the same underlying data as the on-screen review table — so the file and the screen will always match. If you use location-level approval, this export is available in the location-approver review view.

Export timesheets CSV — the audit trail

One row per shift, in date order. This is what to reach for when a total is disputed — it shows the approved start and end time, the break, whether the break was paid, and who approved it and when.

Timesheet ID, Location, Unit, Type, Shift date, Approved times, Break length (minutes), Breaks paid?, Payable hours, Role, Staff member, …

88421, Oakfield Lodge, Rosewood, Client worker, 03/06/2026, 07:45 - 20:15, 30, No, 12.00, Senior Carer, Priya Sharma, …

It contains only worked shifts — no leave rows and no adjustment rows — so it won't add up to the payroll CSV on its own. That's expected, not an error.

Export adjustments CSV — what changed and by how much

One row per approved edit to a timesheet. Every row is a before-and-after pair, ending in a signed hours difference so you can see instantly whether an edit added or removed pay.

If a shift was approved at 20:00 and later corrected to 20:15:

Adjustment ID, Timesheet ID, …, Original times, Adjusted times, …, Original payable hours, Adjusted payable hours, Hours difference, …, Adjustment reason

3312, 88421, …, 07:45 - 20:00, 07:45 - 20:15, …, 11.75, 12.00, 0.25, …, Stayed late covering handover

Only approved adjustments appear here — pending edits are invisible in this export.

A note on format: most accounts get the default "Export payroll CSV" format shown above. A small number of accounts have a custom-built export tailored to their specific payroll system. If that applies to your account, your implementation contact will have talked you through what's different — just get in touch if you're ever unsure which format you're on.

2. The Downloads page — Sage setup files

Found at Client workers → Downloads (UK accounts only). These aren't the pay-period hours — they're the files you need to get people set up in Sage in the first place, or to keep Sage's copy of someone's details in step with Florence's. You can filter by location, tier (all / permanent / temporary), and a from-date before downloading.

Download

What it's for

What's in it

Employee rates

Telling Sage what each person is paid

Employee reference, payment reference, rate

Employee bank details

Paying people

Sort code, account number, account name, IBAN, BIC and more (18 columns)

New users

Adding new starters to Sage

Name, gender, marital status, date of birth, start date, NI number and category, tax code, pay frequency, right-to-work status

Personal and bank details

A general-purpose people export

Contact and bank details (23 columns)

SSP report

Statutory Sick Pay

Worker, location, leave start and end dates, and which days qualify for SSP

Things worth knowing

Two leave types can merge into one column. If you give two different leave allowances the same export name, the wide exports add them together into a single column. This is intentional — it's how you tell Florence "these both map to the same payroll code."

Fixed entitlements show as 1.00, not a number of hours. A fixed entitlement is a flat payment (e.g. a sleep-in allowance), so it counts in units — one occurrence is 1.00, two occurrences in a period is 2.00. It isn't two hours.

Overtime is split automatically. Hours are allocated against a worker's contracted hours first; anything beyond that spills into overtime, always in the same order — so the same period will always split the same way. A manager can override this split for an individual worker, which bypasses the threshold entirely. If an overtime figure looks unexpected, check for an override before assuming there's a calculation issue.

Only worked shifts appear in the timesheets export. Leave and adjustments are tracked separately (see the Export adjustments CSV above), so the timesheets file won't reconcile to the payroll CSV on its own — that's expected.

Did this answer your question?