When people hear “payroll software,” they often picture money moving — direct deposits, tax withholding, the whole disbursement machine. But for a lot of small businesses, the software that lives closest to the work does something narrower and safer: it does the timekeeping and the math, then hands a clean file to whoever actually cuts the checks. If you want to export payroll to a CSV and know exactly what your payroll provider needs from you, this guide walks through it.
The important framing up front, because it changes everything about the risk you’re taking on: a tool like Punchwell exports payroll data — it does not move money. No payment processing, no direct deposit, no tax custody. That’s a deliberate design choice, and it’s a feature, not a gap. Keeping money movement out of the plugin means there’s no payment-processor relationship and no tax-custody liability sitting inside your WordPress site.
What a payroll CSV actually is
A payroll CSV is just a spreadsheet-style file — one row per employee, columns for the numbers your provider needs — that you hand off each pay period. Your payroll provider imports it and runs the actual disbursement and filing on their end. You own the timekeeping and the calculation; they own the money and the taxes. The CSV is the clean handoff between the two.
The reason this split is worth understanding is that it de-risks your side. The payroll export engine calculates and exports; it never touches a bank account. So the worst-case failure on your end is a wrong number, which you can see and correct in a preview — not a wrong payment, which you can’t unsend.
What goes into the file
A good payroll export isn’t a raw dump of punches — it’s a summarized, provider-ready payout report. Here’s what Punchwell computes and can export for the current pay period:
- Per-employee pay setup. Each person’s pay type (hourly or salary), their rate, and their pay frequency — weekly, bi-weekly, semi-monthly, or monthly. Each employee can differ, with a company default, so a mixed team exports correctly in one file.
- The hours math, already done. A payout report covering both weekly and daily overtime, double-time, and holiday pay — plus per-employee lines and an employer summary total, so you and your provider are working from the same totals.
- Worker classification. Whether each person is a 1099 contractor, full-time, part-time, temp, or intern. Contractors can be excluded from overtime via a configurable toggle (the default follows standard FLSA treatment).
- Payment method and handle. A data-only field noting how each worker is paid (ACH, check, PayPal, Venmo, Cash App, Zelle, and so on). It’s recorded to inform 1099-NEC vs. 1099-K responsibility — it does not trigger any payment. It’s a note for your provider, nothing more.
One privacy detail worth knowing: dollar figures in the report are visible to admins and managers only, not to every user. Employees who opt into the self-service “My Pay” view see only their own rate, hours, and estimated gross — never anyone else’s.
The export itself: CSV options that prevent import headaches
The engine ships a Generic CSV export built in, so basic export works out of the box with no add-on. The options that matter are the ones that stop your provider’s importer from choking:
- Delimiter — comma or another separator, depending on what your provider’s importer expects.
- BOM — a byte-order mark toggle, which some spreadsheet and payroll tools need to read accented characters correctly.
- Date format — so dates land in the format your provider parses, not a format it silently misreads.
There’s also a built-in CSV-injection guard, which sanitizes fields so a value that looks like a spreadsheet formula can’t execute when the file is opened. It’s a small thing you’ll never see, and exactly the kind of thing you want handled for you.
Connectors, if you use a supported provider
Generic CSV works with essentially any provider that accepts an import. If you happen to use one of the supported services, there are optional connectors that shape the export to that provider’s expected format:
- A SurePayroll connector.
- A Gusto connector (Smart Import CSV).
These are separate add-ons; the base engine’s Generic CSV means you’re never stuck waiting for a connector to get a file out the door. You can also import from a provider — for example, matching a SurePayroll employee CSV to your existing staff by email, optionally creating anyone missing, with a dry-run preview first. Details on the connectors live on the add-ons page.
A simple checklist for your first export
- Set each employee’s pay type, rate, and frequency. This is the input the whole report is built from — get it right once and it carries forward.
- Confirm worker classifications so overtime is applied (or excluded) correctly.
- Run the payout report for the pay period and eyeball the totals — per-employee and the employer summary.
- Pick your CSV options (delimiter, BOM, date format) to match your provider, or choose the SurePayroll/Gusto connector if you use one.
- Export and send. The file goes to your provider; the money movement and tax filing happen on their side.
That’s the whole loop. You keep the timekeeping and the calculation on your own server, and your provider keeps the parts that carry payment and tax risk. Clean division of labor.
Where this fits
Exporting a payroll CSV is the calm, low-risk way to bridge your time clock and your payroll provider: you send accurate numbers, they move the money. If you want to see how the pay setup, overtime math, and export options are put together, the payroll export feature page has the full picture, and the add-ons page covers the SurePayroll and Gusto connectors.
Punchwell is a self-hosted WordPress time clock and HR suite by Sturdyhaus. It exports payroll data to CSV — it does not move money, process payments, or file taxes. SurePayroll and Gusto are referenced descriptively only; those names and trademarks belong to their respective owners, and Punchwell is not affiliated with or endorsed by them.