> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timetracker.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Export hours for payroll

> Build the monthly hours report your payroll provider needs, export it as CSV, Excel or PDF, and have it delivered automatically every month.

Payroll needs one thing: hours per person for a fixed period, in a file.

Build that report once, save it, and schedule it. After the first time it takes about two minutes a month.

<Info>
  **The example:** Northwind Studio exports March. Daniel Okafor (Finance) builds and sends the file.
</Info>

## Before you start

<Warning>
  **Plan requirement.** Exporting a report is **Pro**. Reports themselves are available on every plan – what Pro adds is depth: custom reports, scheduling and taking the file out of the product. See [Free vs Pro](/billing/free-vs-pro).
</Warning>

You need `report.view` to read a report, `report.create` to build one, and `report.export` to download it. Finance, Project Manager, Admin and Owner have export. **Contractors cannot build or export reports at all.**

→ [Report permissions](/reports/report-permissions) · [Roles and permissions matrix](/reference/roles-and-permissions-matrix)

## Get the hours right before you export

An export is only as good as the hours underneath it. Do these two first.

<Steps>
  <Step title="Every week is submitted and approved">
    Unapproved time is unreviewed time. Do not pay against it.

    → [Weekly timesheet routine](/guides/weekly-timesheet-routine) · [Approve a timesheet](/approvals/approve-a-timesheet)
  </Step>

  <Step title="The period is closed">
    Closing locks the month so the numbers cannot move after payroll has been run against them. This is the whole reason the feature exists.

    → [Close a period](/approvals/close-a-period)
  </Step>
</Steps>

## Build the report

<Steps>
  <Step title="Start a new report on the time entry source">
    The source decides what the report is about. For payroll you want time entries – one row per recorded hour, which you then group.

    → [Build a report](/reports/build-a-report) · [Report sources](/reports/report-sources)

    <Tip>
      There is also a timesheets source, which reports on whole submitted weeks rather than individual entries. Use it if your payroll works off approved weeks rather than daily hours.
    </Tip>
  </Step>

  <Step title="Set the date range to the payroll period">
    March 1 to March 31. Use a relative range like "last month" if you plan to schedule the report, so it moves with the calendar instead of staying stuck on March.

    → [Date ranges and periods](/reports/date-ranges-and-periods)
  </Step>

  <Step title="Filter to what payroll should see">
    Common filters:

    | Filter                        | Why                                              |
    | ----------------------------- | ------------------------------------------------ |
    | Status is approved            | Do not pay against unreviewed hours              |
    | Group is Engineering, Design… | If different groups go to different payroll runs |
    | Person                        | If contractors are paid on a separate run        |

    → [Report filters](/reports/report-filters)
  </Step>

  <Step title="Group by person">
    This is the shape payroll wants – one row per person, with their total hours.

    If your provider needs a daily or weekly breakdown, group by person and then by date. The report engine builds the tree; you choose the levels.

    → [Grouping and pivots](/reports/grouping-and-pivots)
  </Step>

  <Step title="Add the columns payroll asks for">
    Keep it to what they need. A payroll file with thirty columns gets rejected.

    | Column             | Include when                                       |
    | ------------------ | -------------------------------------------------- |
    | Person             | Always                                             |
    | Total hours        | Always                                             |
    | Billable hours     | You pay differently for billable work              |
    | Non-billable hours | Same                                               |
    | Project or client  | Your provider splits cost by client                |
    | Billable value     | Almost never – this is revenue, not pay            |
    | Cost               | Only if payroll works from your internal cost rate |

    → [Metrics reference](/reports/metrics-reference) · [Report metrics](/reference/report-metrics)

    <Warning>
      Cost is sensitive. Seeing it needs `time.viewCost` or `rate.viewCost`, which Members and Contractors do not have. Only include it if the person receiving the file is meant to see what people cost.
    </Warning>
  </Step>

  <Step title="Check the totals against something you already know">
    Before you send it anywhere, sanity-check the number.

    March at Northwind:

    | Person        | Hours   |
    | ------------- | ------- |
    | Sarah Lin     | 152     |
    | Jonas Bergman | 160     |
    | Ana Ferreira  | 44      |
    | **Total**     | **356** |

    Jonas is on a 40 hour week. The period covered 20 working days, so 160 hours is exactly right. Sarah is 8 hours short of that, which matches one day of leave. Ana is part time, and 44 hours fits her pattern.

    If a number looks wrong here, it is wrong. Fix it before it becomes someone's pay.
  </Step>

  <Step title="Save the report">
    Save it as **Payroll – monthly hours**. Now it is one click every month, and it always has the same shape.

    → [Saved reports](/reports/saved-reports)
  </Step>

  <Step title="Export it">
    Three formats:

    | Format    | Use it for                                               |
    | --------- | -------------------------------------------------------- |
    | **CSV**   | Uploading into a payroll system. The most common choice. |
    | **Excel** | A person will open it and work in it.                    |
    | **PDF**   | A record to file, or something to sign off.              |

    A small report downloads immediately. A large one is built in the background and you are told when it is ready.

    → [Export a report](/reports/export-a-report) · [Export formats](/reference/export-formats)
  </Step>

  <Step title="Schedule it so you stop remembering">
    Have the saved report emailed to Daniel on the first working day of every month, covering last month.

    → [Schedule a report](/reports/schedule-a-report) · [Share a report](/reports/share-a-report)
  </Step>
</Steps>

## Contractors are paid differently

Ana is a contractor, and she invoices you rather than being on payroll.

Run a separate report filtered to contractors, and work from their **cost** rate, which is what you actually pay them.

| Person       | Hours | Cost rate | You pay |
| ------------ | ----- | --------- | ------- |
| Ana Ferreira | 44    | \$55      | \$2,420 |

That is a payables number, not a payroll number, and it usually goes to a different person.

→ [Manage contractors](/guides/manage-contractors) · [Cost rates](/rates/cost-rates)

## Other exports you may need

| You need                    | Use                                                  |
| --------------------------- | ---------------------------------------------------- |
| One person's week as a file | [Export a timesheet](/timesheets/export-a-timesheet) |
| Leave taken and balances    | [Export leave](/time-off/export-leave)               |
| Clock in and out records    | [Timecards](/time-clock/timecards)                   |
| Everything in the workspace | [Export your data](/data/export-your-data)           |

## Common questions

<AccordionGroup>
  <Accordion title="Can I export on the Free plan?">
    No. Exports are Pro. You can build and read reports on screen for free, but taking the file out of the product needs a paid workspace. See [Free vs Pro](/billing/free-vs-pro).
  </Accordion>

  <Accordion title="Should I export tracked time or clock in and out records?">
    It depends what you pay for. Tracked time is hours against work. Time Clock records presence at work. If you pay for attendance, use timecards. If you pay for project hours, use time entries. See [Timecards](/time-clock/timecards).
  </Accordion>

  <Accordion title="The totals do not match the invoices. Why?">
    Payroll counts every hour. An invoice counts only billable hours. The difference is your non-billable time, and it should be. See [Billable vs non-billable](/concepts/billable-vs-non-billable).
  </Accordion>

  <Accordion title="Someone's hours are missing from the export.">
    Almost always the filter. Check whether the report is filtered to approved time and the person's week was never approved. See [Report problems](/troubleshooting/report-problems).
  </Accordion>

  <Accordion title="Can I stop payroll seeing what people cost?">
    Yes – leave the cost column out of the report. Cost visibility is also controlled by capability, so a person without `time.viewCost` cannot see it whatever the report contains. See [Rate permissions](/rates/rate-permissions).
  </Accordion>

  <Accordion title="The export is taking a long time.">
    Large reports build in the background and you are notified when the file is ready. Narrow the date range or the filters if you need it faster. See [Export a report](/reports/export-a-report).
  </Accordion>
</AccordionGroup>

## Related guides

<CardGroup cols={2}>
  <Card title="Month-end close" icon="calendar-days" href="/guides/month-end-close">
    Do this before you export anything.
  </Card>

  <Card title="Weekly timesheet routine" icon="calendar-check" href="/guides/weekly-timesheet-routine">
    Clean weekly hours make a clean export.
  </Card>

  <Card title="Manage contractors" icon="handshake" href="/guides/manage-contractors">
    Paying freelancers is a separate run.
  </Card>

  <Card title="Offboard an employee" icon="user-minus" href="/guides/offboard-an-employee">
    Their final hours for the last run.
  </Card>

  <Card title="Monitor project profitability" icon="chart-line" href="/guides/monitor-project-profitability">
    The other report worth scheduling.
  </Card>
</CardGroup>
