Build a Billable Hours Report in Jira for Invoicing
Track billable time, overtime, and fixed amounts on Jira work logs, then report and export for invoicing.
Native Jira keeps one running "time spent" total per work item. It can't tell you how many of those hours are billable, which are overtime at a higher rate, what fixed amount a deliverable was sold for — or, the one that decides most agency invoices, which of those hours were developer hours and which were design hours. So when an invoice is due, you end up rebuilding everything by hand.
JetTime, a time-tracking app for Jira from the Atlassian Marketplace, closes that gap. Every work log carries the client's account, the billable hours, any fixed amount, and the function role the person worked under. One report per client then gives you the invoice lines — hours per role, ready for each role's rate.
This guide follows an agency billing one client for a month of work: some fixed-price deliverables, and hours from several roles at different rates.
What You'll Set Up First
Three things, set up once:
- Custom time categories — Billable Time and Billable Overtime, on top of the built-in Regular Time. Keep overtime in its own category rather than folding it into billable time: at invoicing you'll want the higher-rate hours totalled separately. See Defining Custom Time Categories.
- A currency work log field — a number field with the currency format, e.g. Billable Cost, for fixed-price work where the charge isn't hours times a rate. See Setting Up Custom Work Log Fields.
- Teams, with each person under their function role — a developer hour and a design hour rarely cost the same, and the role is what the rate hangs on. Put people in teams under what they do; add the same person twice if they bill under two roles, say Project Manager and Developer. See Teams and Function Roles.
Log Time as You Work
When a work item's scheme includes them, each category shows up as its own row in the Log Work dialog. Fill in the ones that apply for the work you did.
With Field Schemes you can show these billable fields only on client work, and hide them on internal tasks — so the right people log the right numbers.
Pick the client's account
On the work log, set the Account to the client you're billing. This is what lets you pull a clean per-client report later, so do it on every entry.
Pick the team and the role you worked under
Team and Role sit at the top of the form. The role is the one the hours get billed at, so pick the one you actually did the work in — a developer who spent the afternoon running the client call logs that time as Project Manager, not as Developer.
Two things make this reliable. If you belong to a team at all, both fields are required, so hours can't slip through unattributed. And if you hold two roles in the team, both are offered and you choose — the same person's week can end up on two different invoice lines at two different rates.
Enter the hours
Put plain hours under Time Spent (the Regular Time category), client-billable hours under Billable Time, and any higher-rate hours under Billable Overtime.

Add the Fixed Amount
For fixed-price deliverables, the charge isn't tied to hours — a logo, a landing-page article, a brand kit each have an agreed price. Record that in the Billable Cost field as you log the work.

So one deliverable might carry a few billable hours and a fixed cost; another might be cost-only. Both end up on the same report.
Build the Report for One Client
Now turn those work logs into a per-client breakdown.
Open a report and switch to Table view
Go to Reports, open a report, and set the view mode to Table. Table view totals each row, which is what you want for an itemized bill.
Filter to the client
Click Add Filter and filter by the Account you logged against. The report now shows that client's work only.
Group by role — the invoice lines
Group by Role and every hour lands under the role it was worked in, whoever worked it: all the development hours on one line, all the design hours on another, each with its own total. That is the invoice, one line per rate.
Because the role comes off each work log rather than off someone's job title, a person who holds two roles contributes to both lines with the right hours in each — and nobody's time is billed at the wrong rate because of the title on their profile.
Nest a second level under it when the client wants detail: Role → Work Item shows what each role produced. If you bill per deliverable instead of per rate, flip it — group by Work Item so every deliverable is a line, and nest Role beneath. See Reporting on Teams and Roles.
Set the billing period
Set the Date Range to the month you're invoicing for. Only work logged in that period lands on the report.
Add the billable totals as columns
Add the totals you bill on as columns — for example Billable Time, Billable Overtime, and Billable Cost — then Build Report.

You're looking at exactly what you'll charge: a line per role (or per deliverable), the billable totals on each one, and a grand total at the bottom.
Export and Invoice
Export the report
Click Export → Excel for an editable sheet, or CSV to feed it into another tool. The export mirrors the on-screen report — same lines, same totals.
Build the invoice
From the exported sheet, multiply each role's hours by that role's rate, carry over the fixed amounts, and assemble the invoice in whatever tool you bill with. JetTime holds no rates — it gives you the verified hours per role and per client to apply them to.
Your billing data never leaves Atlassian Cloud. JetTime is a "Runs on Atlassian" app, so worklogs and amounts stay inside your own Jira instance.