Option 1: Jira's built-in worklog export
Jira's Tempo-free worklog reporting lives under Reports → Time Tracking on most Jira Cloud instances, or via the issue navigator's built-in export. It'll give you a CSV with issue keys, time spent, and the worklog author — but not much else.
What it doesn't give you: billing rates, client grouping, or any formatting suitable for a client. It's raw data, not an invoice input. You'll still need to reshape it before it's usable.
Option 2: JQL filters and issue navigator export
For more control, build a JQL query to scope exactly the issues you need — filtered by project, date range, epic, or label — then export the results.
project = "ACME" AND worklogDate >= "2026-07-01" AND worklogDate <= "2026-07-31"Run the query, open the issue navigator, and use Export → CSV (all fields). This gets you closer, but Jira's export is issue-centric, not worklog-centric — if an issue has five separate worklog entries from different people, the export often needs extra handling to break them out individually rather than summing them.
Option 3: The Jira REST API
For the most accurate data, the Jira REST API's worklog endpoints return every individual worklog entry — author, time spent, comment, and timestamp — without Jira's UI-layer aggregation. This is the same data source tools like WorklogPDF read from via OAuth.
The trade-off is obvious: this requires someone comfortable writing a script or using a tool like Postman, authenticating against Jira's API, and paginating through results. For a technical founder doing a one-off export, it's workable. As a recurring monthly task, it's a lot of overhead for something that needs to happen every billing cycle.
Getting from CSV to an actual invoice
Once you have raw worklog data — from any of the methods above — the remaining steps are the same regardless of export method:
- Match each worklog entry to the correct person's billing rate
- Group entries by client, if one Jira project serves multiple clients
- Sum hours and calculate line totals
- Add invoice metadata: number, date, due date, client details
- Apply tax (GST for Australian invoices) if applicable
- Format as a PDF with your branding
This is usually the slower half of the process. The export itself might take ten minutes; turning a CSV into something client-ready with correct rates and formatting is where the 1–3 hour estimate for manual invoicing actually comes from.
Skipping the manual steps entirely
WorklogPDF does the export and the formatting in one step — it reads worklogs directly from Jira's API (the same data Option 3 above accesses manually), applies your saved billing rates, and outputs a finished PDF.
| Step | Manual export path | WorklogPDF |
|---|---|---|
| Pull worklog data | CSV export or API script | Automatic via OAuth |
| Apply rates | Manual, per entry | Pre-configured, applied automatically |
| Client grouping | Manual filtering | Epic or label filter, built in |
| PDF formatting | Word template, manual | Generated automatically |
| Total time | 1–3 hours | About 30 seconds |
Skip the export-and-reformat cycle
Connect your Jira workspace and generate a client-ready invoice directly from your worklogs — no CSV, no spreadsheet, no template.
Try WorklogPDF free →Frequently asked questions
Can I export Jira worklogs without admin access?
Yes, for your own logged time and for projects you have permission to view. Full worklog exports across a whole Jira instance typically need project or site admin permissions. Tools that connect via OAuth, like WorklogPDF, only need read access to the projects you explicitly grant.
Does Jira have a native invoicing feature?
No. Jira tracks worklogs but has no built-in concept of billing rates, invoices, or client-facing PDF output. Any invoicing capability comes from a Marketplace app or an external tool.
What's the difference between exporting by issue vs by worklog?
Issue-level exports can hide multiple worklog entries inside a single row, especially when several people logged time against the same issue. Worklog-level exports (via the API) return one row per individual time entry, which is what you actually need for accurate per-person billing.