Time Tracking Export
Time tracking data is most valuable when it leaves SetGet and enters your billing, accounting, or reporting systems. SetGet supports exporting time logs as CSV and Excel files, with filters to ensure you export exactly the data you need.
Export scopes
Exports are available at two levels:
| Scope | What is included | Where to access |
|---|---|---|
| Project-level | Time logs for a single project | Project Settings > Time Tracking > Export |
| Workspace-level | Time logs across all projects | Analytics > Time Tracking > Export |
Project-level export is useful for client invoicing. Workspace-level export is useful for payroll, company-wide reporting, and cross-project analysis.
Exporting from the UI
Step-by-step
- Navigate to the time tracking page:
- Workspace-level: Analytics > Time Tracking in the sidebar.
- Project-level: Project > Settings > Time Tracking.
- Apply filters to narrow the data (see "Filtering before export" below).
- Click the Export button in the toolbar.
- Choose the format:
- CSV -- comma-separated values, compatible with any spreadsheet or data tool.
- Excel --
.xlsxformat with formatting and column headers.
- Click Download.
- The file is generated and downloaded to your browser's default download location.
File naming
Exported files follow this naming convention:
| Scope | Format | Example filename |
|---|---|---|
| Workspace | CSV | setget-time-logs-workspace-2026-03-01-to-2026-03-31.csv |
| Workspace | Excel | setget-time-logs-workspace-2026-03-01-to-2026-03-31.xlsx |
| Project | CSV | setget-time-logs-project-alpha-2026-03-01-to-2026-03-31.csv |
| Project | Excel | setget-time-logs-project-alpha-2026-03-01-to-2026-03-31.xlsx |
Columns included in the export
Both CSV and Excel exports contain the same columns:
| Column | Description | Example value |
|---|---|---|
issue_identifier | Project prefix and issue number | PRJ-142 |
issue_title | The issue title | Fix login timeout |
project | Project name | Project Alpha |
member | Full name of the person who logged time | Alice Johnson |
member_email | Email address of the member | alice@example.com |
duration_minutes | Duration in minutes (integer) | 150 |
duration_formatted | Duration as Xh Ym | 2h 30m |
logged_date | The date the work was performed (YYYY-MM-DD) | 2026-03-15 |
description | Free-text description | Code review for auth PR |
billable | Whether the entry is billable (true/false) | true |
billing_rate | Effective hourly rate for this entry | 200.00 |
billing_amount | Calculated billing amount | 500.00 |
currency | Currency code | USD |
created_at | Timestamp when the entry was created (ISO 8601) | 2026-03-15T14:30:00Z |
updated_at | Timestamp of the last edit (ISO 8601) | 2026-03-15T15:00:00Z |
Excel-specific formatting
The Excel export includes:
| Feature | Description |
|---|---|
| Header row | Bold, frozen header row |
| Column widths | Auto-fitted to content |
| Duration column | Formatted as number (minutes) for calculation |
| Date columns | Formatted as date cells |
| Currency columns | Formatted with currency symbol and two decimals |
| Billable column | Formatted as boolean |
Filtering before export
The export respects all active filters on the time tracking page. Apply filters before clicking Export to control what data is included:
| Filter | Options | Default |
|---|---|---|
| Date range | From date and to date | Current month |
| Project | One or more projects | All projects (workspace-level) |
| Member | One or more members | All members |
| Billable | All, billable only, non-billable only | All |
| Issue | Specific issue(s) | All issues |
TIP
Always verify your filters before exporting. The export button shows a count of matching entries (e.g., "Export 142 entries") so you can confirm the scope before downloading.
Common filter combinations
| Use case | Filters |
|---|---|
| Monthly client invoice | Project: Client X, Date: this month, Billable: Yes |
| Payroll report | Date: pay period, Member: all |
| Single issue audit | Issue: PRJ-142, Date: all |
| Non-billable overhead analysis | Billable: No, Date: this quarter |
| Individual contributor timesheet | Member: Alice, Date: this week |
API endpoints for programmatic export
For automated workflows, use the API to fetch time log data programmatically:
List time logs
GET /api/workspaces/{slug}/time-logs/Query parameters:
| Parameter | Type | Description |
|---|---|---|
project_id | string | Filter by project ID |
member_id | string | Filter by member ID |
from_date | string (YYYY-MM-DD) | Start of date range |
to_date | string (YYYY-MM-DD) | End of date range |
billable | boolean | Filter by billable status |
page | integer | Page number (default: 1) |
per_page | integer | Results per page (default: 50, max: 200) |
sort_by | string | Sort field: logged_date, duration, created_at |
sort_order | string | asc or desc |
Export as CSV via API
GET /api/workspaces/{slug}/time-logs/export/?format=csvAccepts the same query parameters as the list endpoint. Returns the file directly with Content-Type: text/csv.
Export as Excel via API
GET /api/workspaces/{slug}/time-logs/export/?format=xlsxReturns the file with Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.
Project-level API export
GET /api/workspaces/{slug}/projects/{project_id}/time-logs/export/?format=csvSame parameters, scoped to a single project.
WARNING
API exports are subject to the same rate limits as other API endpoints. Large exports (10,000+ entries) may take several seconds to generate. The API returns a 202 status for very large exports, with a Location header pointing to the download URL once ready.
Scheduled export use cases
While SetGet does not currently have a built-in scheduled export feature, you can achieve automated recurring exports using the API:
Automated weekly timesheet
Set up a cron job or external automation tool to:
- Call the export API every Monday morning with
from_dateset to the previous Monday andto_dateset to the previous Sunday. - Save the CSV to a shared drive or email it to the team lead.
Automated monthly billing export
Set up a process that runs on the first of each month:
- Call the export API with
from_dateas the first of the previous month andto_dateas the last day. - Filter by
billable=true. - Send the CSV to the accounting system or billing software.
Integration with accounting software
Use the API to build integrations with tools like:
| Tool | Integration approach |
|---|---|
| QuickBooks | Import CSV via QuickBooks time import |
| Xero | Map exported columns to Xero timesheet fields |
| FreshBooks | Use CSV import for time entries |
| Custom ERP | Call the JSON API and transform data to match your schema |
Permissions
| Role | Can export own time | Can export project time | Can export workspace time |
|---|---|---|---|
| Owner | Yes | Yes | Yes |
| Admin | Yes | Yes | Yes |
| Member | Yes | Yes (projects they belong to) | No |
| Guest | No | No | No |
Best practices
- Filter before exporting. Exporting the entire workspace and then filtering in a spreadsheet works, but it is slower and more error-prone than filtering in SetGet first.
- Use date ranges that match your billing cycle. If you bill monthly, export monthly. If weekly, export weekly. Consistent ranges make reconciliation easier.
- Verify entry count before download. The export button shows the count. If it is unexpectedly low or high, check your filters.
- Archive exports. Save a copy of each export alongside the corresponding invoice or payroll report for audit purposes.
- Use the API for recurring reports. Manual downloads are fine for ad-hoc needs, but automated exports reduce forgotten reports and human error.
- Check for missing descriptions. Before exporting for client billing, filter entries with empty descriptions and fill them in. Clients appreciate detailed timesheets.