How to Export Employee Timesheets to QuickBooks (Step-by-Step)
Getting approved hours from your time tracking app into QuickBooks Online shouldn't take half your Friday. If you're manually re-entering shifts or copy-pasting from screenshots, there's a faster way — a properly formatted CSV that QuickBooks import tools accept in one upload.
This guide covers the exact export format, how to prepare your timesheets, and the step-by-step workflow from approved shifts to QuickBooks time activities.
Why QuickBooks Online Doesn't Have a Native Time Import
QuickBooks Online supports time activities through its API, but it doesn't expose a built-in "import from CSV" button for time data in its core UI. To get a spreadsheet of hours into QBO, you route through a third-party importer — the most widely used are SaasAnt Transactions and Transaction Pro by Rightworks.
Both tools map CSV columns to QBO's Time Activity fields. They're inexpensive (often $10–20/month) and handle the heavy lifting of posting each row to your QBO account through the API.
The key is uploading a file in the format those tools expect. A generic spreadsheet export won't map cleanly — you need specific column names and a specific structure.
The QBO-Ready Timesheet Format
A QuickBooks-compatible time export needs five columns:
| Column | What Goes Here | |---|---| | Name | Employee's display name — must match exactly how it appears in QBO | | Date | Date of the shift in YYYY-MM-DD format | | Hours | Net hours worked (gross time minus any lunch break), as a decimal | | Customer | The job site or project name | | Description | Shift start and end times, plus lunch duration if applicable |
A row looks like this:
Name,Date,Hours,Customer,Description
"Roberto Barboza","2026-05-12","8.25","Oak Street Remodel","8:00 AM – 5:15 PM (45m lunch)"
A few things worth noting:
- Hours are net, not gross. If an employee worked 9 hours but took a 45-minute lunch, the Hours column shows
8.25. The Description captures the raw start/end times so you have the full picture. - The Name column must match your QBO employee record exactly. QuickBooks matches by display name — a space difference, a hyphen, or an abbreviation breaks the match and creates a new employee record. Double-check your QBO employee list before the first import.
- The Customer column maps to QBO's Customer field for billable time tracking. If your job sites use a parent/child naming convention (e.g., "Smith Residence:Phase 2"), that hierarchy passes through as-is.
- Salaried employees are included. Even if you're not tracking hourly pay, their time entries are useful for job-cost analysis in QBO.
How Punch Generates the Export
In Punch, the export lives on the Timesheets surface at /app/team/timesheets. Once you've approved shifts and marked a pay period as paid, click Export for QuickBooks to download the file.
The export includes every approved shift with:
- A recorded punch-out time
- A positive net duration (zero-duration entries are excluded)
- Any employee in your org, including salaried staff
The file is generated by Punch's buildQboCsv() export function and produces exactly the five-column format described above. No reformatting required before upload.
Step-by-Step: From Approved Shifts to QuickBooks
Step 1 — Approve all shifts for the period
Before exporting, every shift needs to be approved. On the Timesheets surface, open each employee's pay period and use Approve all to approve pending shifts in bulk, or approve individual shifts if any need review first.
Reject shifts that have incorrect times — the employee's manager can edit and resubmit, or an owner can edit directly from the Timesheets or Approvals view.
Step 2 — Mark the period as paid
After approval, mark the pay period as paid using the Mark as paid button. This locks the period and confirms the hours are finalized. The export button pulls from paid periods.
Step 3 — Export for QuickBooks
Click Export for QuickBooks on the Timesheets surface. The file downloads as a .csv — no conversion needed.
Step 4 — Upload to your QBO importer
Log into your QBO import tool (SaasAnt, Transaction Pro, or similar). Most have a workflow like:
- Upload the CSV file
- Map the columns to QBO fields (Name → Employee, Date → Date, Hours → Duration, Customer → Customer, Description → Description)
- Preview the first several rows to confirm the mapping
- Run the import
After the first import, most tools let you save the column mapping as a template so subsequent weeks take about 30 seconds.
Step 5 — Verify in QuickBooks
In QBO, navigate to Time or search for time activities to confirm the entries appear. They should show under the correct employee, date, and customer/project.
Common Issues and How to Avoid Them
Employee name mismatch. The most common problem. QBO creates a new vendor or employee record when the name in the CSV doesn't match exactly. Audit your Punch employee display names against your QBO employee list before the first import and align them.
Missing customer/job site. If the Customer column references a job site name that doesn't exist in QBO as a customer, some importers will reject the row. Either create matching customer records in QBO first, or leave those cells blank and assign them manually after import.
Zero-hour rows. Shifts with null punch-out times or zero net duration are excluded from the export automatically. If an employee appears to be missing from the export, check whether their shifts have been fully approved with valid times.
Duplicate entries. If you export the same period twice, importers will create duplicate time activities. Track which periods you've already imported, or use your importer's duplicate-detection setting if available.
Weekly vs. Bi-Weekly Export
Punch supports both weekly and bi-weekly pay periods. The export works identically for either — the file always contains individual shift rows, regardless of your pay period length.
For a bi-weekly org, all approved shifts across the full 14-day period appear in one export file. FLSA overtime is still calculated per 7-day workweek (see how overtime works with biweekly pay), but the export itself is just a list of individual shifts — your payroll software handles the overtime calculation on its end.
How Often Should You Export?
Most small businesses export once per pay period, right after marking it paid. Some owners export weekly even on a bi-weekly pay schedule to keep QBO current for job-cost reporting.
The most important thing is consistency — export the same periods every cycle so you don't end up with gaps or duplicates in your QBO time activity history.
Frequently Asked Questions
Does this work with QuickBooks Desktop? The CSV format described here is designed for QuickBooks Online via third-party importers. QuickBooks Desktop has a different time import path (IIF format). If you're on QB Desktop, check whether your importer tool supports the Desktop format before uploading.
Do I need a paid QBO plan for time activities? QuickBooks Online's time activity features are available on most paid plans. QBO Simple Start is more limited — check your plan's feature list if you're not sure.
What if I don't use job sites in Punch? The Customer column in the export will be blank for shifts without a job site assigned. You can still import the file — just expect to assign customers manually in QBO after import, or skip the Customer field during mapping.
Can I export a single employee instead of the whole period? The export covers all employees in the pay period. If you need a single-employee file, you can filter the downloaded CSV by the Name column in Excel or Numbers before uploading.
Does the export include overtime breakdowns? No. The export shows total net hours per shift, not a breakdown of regular versus overtime hours. Overtime calculation happens in your payroll software, using the raw hours as input.
What's the difference between the QBO export and the standard CSV export? The standard CSV export from Punch is formatted for human review — it includes more detail and is organized by employee. The QuickBooks export uses the specific column structure that QBO importer tools expect: Name, Date, Hours, Customer, Description. Use the QBO export when uploading to a QBO importer, and the standard CSV for your own records.
Bottom Line
Exporting timesheets to QuickBooks is a five-step workflow: approve shifts, mark the period paid, download the QBO CSV, upload it to your importer, and verify in QBO. The hardest part is usually the first import — making sure employee names match and the column mapping is saved. After that, it runs in minutes.
If you're tracking hours in spreadsheets and re-entering them into QuickBooks by hand, try Punch free for 14 days — no credit card required.