Import Xero Time Entries in Bulk (Project Timesheets)
How to use EasyCSV to push time entry data fro Project Timesheets from CSV or Google Sheets into Xero Projects.
Getting Started Video
Step-by-step: import time entries into Xero in bulk
- Log into EasyCSV.
- Create a new sheet import page using an example CSV file or Google Sheet that contains the time entry data you want to send to Xero. Each row in the file should represent one time entry.
- When setting up the import destination, choose Xero.
- Under Xero object type, select Time Entries (Project Timesheets).
- Connect your Xero account using the Connect Xero Account button, or connect from Sheet Details if you skipped this during setup.
- Open Field Mappings on your import page and map your spreadsheet columns to the Xero time entry fields below. EasyCSV will auto-match common column names like
Project,Task,Date, andDurationwhen possible. - Upload your CSV or XLSX file, or submit a Google Sheet link, to run the import. EasyCSV validates projects, tasks, and users before sending data to Xero.
- Review the import summary email or import log to confirm how many time entries were created or updated.
Need to reconnect Xero first? See the Xero reconnect instructions.
Example spreadsheet columns
A typical time entry file might look like this:
| User Email | Date | Project | Task | Duration | Description |
|---|---|---|---|---|---|
| alex@example.com | 2026-07-16 | Website Redesign | Design | 90 | Homepage mockups |
| sam@example.com | 07/16/2026 | Website Redesign | Development | 2:30 | Header component |
| jamie@example.com | 2026-07-16 | Client Onboarding | Meetings | 60 | Kickoff call |
EasyCSV detects common date formats and normalizes them to YYYY-MM-DD for Xero. Duration can be integer minutes (for example, 90), HH:MM (for example, 2:30), decimal hours (for example, 0.5, 2.5), or whole-number hours when all values in the column are 8 or less (for example, 2, 8).
Field mapping reference
| Xero field | Required | Notes |
|---|---|---|
| Project | Yes | Must match an existing Xero Project name. |
| Task | Yes | Must match a task on that project. |
| Date | Yes* | Required unless Start Time is a datetime value and Date is not mapped. |
| Duration | Yes* | Minutes, HH:MM, decimal hours, or whole-number hours when all column values are 8 or less. Required unless Start Time and End Time are mapped as plain times. |
| User Email | Yes* | Map User Email or User Name so EasyCSV can identify the Xero user logging time. |
| User Name | Yes* | Full name in Xero (First Last). Used when User Email is not mapped. |
| Task Description | No | Optional notes for the entry. Also used to match existing entries for update. |
| Start Time | No | Plain time (for example, 09:00) or datetime. |
| End Time | No | Plain time (for example, 17:30) or datetime. Used with Start Time to calculate duration. |
*At least one user identifier (User Email or User Name) is required, along with a valid date and duration for each row.
Duration and date options
EasyCSV supports a few flexible ways to provide the logged date and time for each row:
- Duration column: Map a column with integer minutes,
HH:MM, decimal hours (for example,0.5), or whole-number hours when all values are 8 or less. - Start Time + End Time: If Duration is not mapped, EasyCSV can calculate duration from plain start and end times on the same date.
- Datetime Start Time: If Date is not mapped, a datetime Start Time value can supply the logged date.
- All three mapped: If Duration, Start Time, and End Time are all mapped, Duration wins and the start/end difference is not calculated.
Duration must be between 1 and 59,940 minutes per Xero's limits.
How create vs. update works
EasyCSV creates a new time entry when no matching entry exists in Xero for that project and date.
Existing time entries are updated when the project, date, and description match an entry already in Xero. If you want every upload to create new entries, leave Task Description blank or use unique descriptions per row.
FAQs
Does Xero have a native bulk time entry import to make Project Timesheets?
No. Xero Projects time tracking is usually entered manually. EasyCSV lets you import many rows at once from a spreadsheet, which is useful for timesheets, contractor logs, or project time exported from other tools.
What if a project, task, or user is missing?
EasyCSV validates each row before sending data to Xero. Rows with unknown project names, task names, or users that are not on the project will fail with a clear error message so you can fix the spreadsheet and re-import.
Can I automate recurring time entry imports?
Yes. You can schedule automatic imports from Google Sheets, Google Drive, Dropbox, FTP/SFTP, and other sources. See the Scheduled Fetchers docs.
Where can I learn about other Xero imports?
See the main Xero docs for invoices, bills, contacts, items, and more.