Turn Tracked Hours Into an Invoice

Paste your billable hours, set an hourly rate and client details, and get a formatted invoice with line items, tax, discount and totals. Everything runs locally in your browser.

Try:
Invoice

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:

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

FAQ

Can I use different hourly rates on the same invoice?

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.

How does rounding work?

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.

Can this merge repeated tasks?

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.

Is this a legal invoice system?

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

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza 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"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

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

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.