# Turn Tracked Hours Into an Invoice

Turn tracked hours and an hourly rate into a client-ready invoice with line items, totals, tax, discount and Net terms. Markdown, plain text, CSV or JSON.

## Run it

- **CLI:** `gizza tool timesheet-to-invoice "2026-08-03 | Landing page copy | 3.5
2026-08-04 | Bug fixes | 2h 30m
2026-08-05 | Client call | 09:00-10:15"`
- **Web:** https://gizza.ai/tools/timesheet-to-invoice/
- **Agents:** machine-readable descriptor (parameters JSON Schema) at https://gizza.ai/tools/timesheet-to-invoice/tool.json

## Inputs

- `entries` — Tracked hours _(field)_
- `rate` — Hourly rate _(field)_
- `currency` — Currency symbol _(field)_
- `business` — From (your details) _(field)_
- `client` — Bill to (client details) _(field)_
- `invoice_number` — Invoice number _(field)_
- `issue_date` — Issue date _(field)_
- `due_date` — Due date (blank = issue date + terms) _(field)_
- `payment_terms` — Payment terms (net days) _(field)_
- `tax_label` — Tax label _(field)_
- `tax_rate` — Tax rate % _(field)_
- `discount_percent` — Discount % (before tax) _(field)_
- `round` — Round each row up to minutes _(field)_
- `group_by` — Bill rows as _(field)_
- `notes` — Notes / payment instructions _(field)_
- `format` — Output format _(field)_

## Output

- Invoice (text)

## Query parameters

Open the tool pre-filled and auto-run via URL:

- `entries` — Tracked hours
- `rate` — Hourly rate
- `currency` — Currency symbol
- `business` — From (your details)
- `client` — Bill to (client details)
- `invoice_number` — Invoice number
- `issue_date` — Issue date
- `due_date` — Due date (blank = issue date + terms)
- `payment_terms` — Payment terms (net days)
- `tax_label` — Tax label
- `tax_rate` — Tax rate %
- `discount_percent` — Discount % (before tax)
- `round` — Round each row up to minutes
- `group_by` — Bill rows as
- `notes` — Notes / payment instructions
- `format` — Output format

Example: `https://gizza.ai/tools/timesheet-to-invoice/?entries=2026-08-03%20%7C%20Landing%20page%20copy%20%7C%203.5%0A2026-08-04%20%7C%20Bug%20fixes%20%7C%202h%2030m%0A2026-08-05%20%7C%20Client%20call%20%7C%2009%3A00-10%3A15&rate=120&currency=%24&business=Ada%20Consulting%0A12%20Harbour%20Road%0Aada%40example.com&client=Globex%20Ltd%0AAccounts%20Payable%0A88%20Market%20Street&invoice_number=INV-001&issue_date=2026-08-14&due_date=2026-09-13&payment_terms=30&tax_label=VAT&tax_rate=0&discount_percent=0&round=0&group_by=entry&notes=Payment%20by%20bank%20transfer%20to%20IBAN%20GB00%20EXMP%200000%200000.%0ALate%20payments%20accrue%202%25%20per%20month.&format=markdown`

---

## About this tool

Timesheet to Invoice turns billable-hours notes into a formatted invoice. Paste one line per item using `description | hours`, `description | hours | rate`, `YYYY-MM-DD | description | hours`, or `YYYY-MM-DD | description | hours | rate`.

Hours can be decimal (`3.5`), hours/minutes (`2h 30m`), clock-style duration (`2:30`), or a start-end range (`09:00-12:30`, `9am-5pm`). The tool prices each line, optionally rounds billing time up to an increment, applies a discount before tax, computes a due date from payment terms, and renders Markdown, plain text, CSV, or JSON.

Example input:

```text
2026-08-03 | Landing page copy | 3.5
2026-08-04 | Bug fixes | 2h 30m
2026-08-05 | Client call | 09:00-10:15
```

At $120/hour, the example totals 7.25 hours, a $870.00 subtotal, and a $870.00 amount due before any tax or discount.

## Limits and edge cases

- Maximum pasted timesheet size is 1,000,000 bytes and 500 billable rows.
- Rows are split with `|` or tabs; commas are safe inside descriptions because CSV input is not required.
- Per-row rates override the default hourly rate.
- Billing increments round each row up after parsing. Use `0` to bill exact tracked time.
- A blank issue date omits automatic due-date calculation. A due date you enter manually always wins.
- This produces text invoices only. It does not create PDFs, accept payments, store client records, or send email.

## FAQ

<details>
<summary>Can I use different hourly rates on the same invoice?</summary>

Yes. Add a fourth field to a dated row or a third field to an undated row, such as `2026-08-03 | Rush support | 1.5 | 180`. Rows without their own rate use the default hourly rate.

</details>

<details>
<summary>How does rounding work?</summary>

The rounding setting is a billing increment in minutes. If you choose `15`, a 16-minute row bills as 30 minutes, while an exact 15-minute row stays at 15 minutes.

</details>

<details>
<summary>Can this merge repeated tasks?</summary>

Yes. Keep one line per entry, merge rows with the same description, or merge rows by service date. Merging happens before rounding so a grouped row rounds once.

</details>

<details>
<summary>Is this a legal invoice system?</summary>

No. It is a deterministic formatting helper. Review the output, add any legally required business or tax details, and keep your own accounting records.

</details>

## Related tools

- [Summarize a Timestamped Worklog](https://gizza.ai/tools/worklog-summarizer/): Paste a timestamped worklog and total time by project, tag, day, or entry. Supports date ranges, CSV/JSON export, rounding, and open-entry handling.
- [Time to Decimal Hours Converter](https://gizza.ai/tools/time-to-decimal-hours/): Convert HH:MM to decimal hours (1:30 → 1.5) and back for timesheets, payroll and billing — plus total minutes and seconds. Free, private, in-browser.
- [Article to EPUB](https://gizza.ai/tools/article-to-epub/): Turn article text or cleaned HTML into a valid EPUB 3 ebook with metadata, chapter splits, and a real table of contents. Runs in your browser.
- [Preview a Bulk File Rename](https://gizza.ai/tools/bulk-file-renamer/): Preview old-to-new filename mappings with find/replace, regex, numbering, case conversion, prefix/suffix, and collision warnings.
- [Citation Generator](https://gizza.ai/tools/citation-generator/): Free APA 7, MLA 9, Chicago and Harvard citation generator — format author, title, year, journal and URL into a correct reference right in your browser.
