How to Generate an Invoice from Tracked Hours (Step-by-Step Workflow)

Keito Team
17 April 2026 · 11 min read

Learn how to generate an invoice from tracked hours with a repeatable workflow covering rate logic, line-item grouping, approval, and accounting-tool export.

Billing & Invoicing

To generate an invoice from tracked hours, review and categorise each time entry, apply the agreed rate per project or role, group entries into meaningful line items, add invoice metadata, and export to your accounting tool. The goal is a draft that takes minutes to approve, not hours to rebuild.

The gap between tracked time and a sent invoice is where agencies and freelance developers quietly lose money every billing cycle. Copy-pasting hours from a time report into a spreadsheet, rounding inconsistently, and writing vague line items are how you end up with disputed invoices and 60-day payment delays. This guide walks through the full workflow — from raw time data to an accounting-tool-ready invoice — plus the integration patterns, approval steps, and common traps that delay payment.

What is the tracked-hours-to-invoice workflow?

The workflow is a sequence of seven steps that turns raw time data into a billable document. Get each step right and the invoice almost writes itself. Skip any one of them and you are rebuilding the bill from memory on a Friday afternoon.

Step 1: Review and categorise tracked time

Open your time report for the billing period and separate billable from non-billable entries. Admin, internal tooling, and unassigned meetings stay off the invoice. Client-facing work gets grouped by client and project. For agencies juggling several clients at once, see our guide on tracking billable hours across multiple projects.

Step 2: Apply billing rates

Multiply approved minutes by the rate agreed with the client. Rates vary by contract — flat across a project, tiered by role, or different for urgent versus standard work. A rate table stored alongside the project taxonomy keeps this as a lookup rather than a negotiation.

Step 3: Round entries to your contracted increment

Fifteen-minute increments are the standard for professional services. Six-minute increments are common for high-value consulting. Pick one, document it in the contract, and apply it at the line-item level — never at the session level, where rounding errors compound.

Step 4: Generate a line-item breakdown

Every line should carry a date, a short description, the hours, the rate, and the total. Clients who receive a bill that says “14.5 hours — backend API, user-auth module” pay faster than clients who receive “development — 40 hours”.

Step 5: Add invoice metadata

Invoice number, billing period, client details, payment terms, due date, tax (VAT, GST, or sales tax where relevant), bank details or payment link, and a purchase-order reference if the client uses one. Missing fields are the most common reason invoices sit unpaid in a procurement inbox.

Step 6: Send for internal approval

A project manager or team lead scans the draft before it leaves the building. They are checking for unbilled time that should be billed, overbilled time, missing entries, and wrong rates. Small agencies often skip this step; larger ones learn the hard way why it matters.

Step 7: Send and track

Send the invoice to the client, log the due date, and track payment status. An invoice without a follow-up schedule is a loan with no repayment terms.

How do you integrate time tracking with invoicing tools?

Manual re-keying from a time tracker to an accounting platform is where most invoice errors start. Every transcription is a chance for a typo, a wrong rate, or a missing line. The fix is a direct data path.

Direct accounting integrations

Most activity-based time trackers export directly to a popular accounting platform via OAuth. Approved hours from the week land as a draft invoice in the accounting tool, already grouped by client and project. According to a 2026 review of accounting APIs, integration layers treat every timesheet row as a potential line item — reading the row, coding it to a chart-of-accounts entry, and posting the transaction in a single call.

CSV and spreadsheet export as the fallback

If no direct integration exists, CSV export is the universal bridge. Map the columns once — date, client, project, hours, rate — and import into your invoicing tool. Teams who use a well-known invoicing platform often script this with a small import template rather than editing every line.

API-driven custom workflows

For agencies and consultancies with many clients, a custom pipeline works well. Pull approved hours from the tracker’s API, group them by client, apply rates, and push finished invoices into the accounting tool’s API. This pattern shows up most often with a widely used invoicing platform and a popular accounting platform because both expose stable invoice endpoints.

What to look for in any integration

Rate application per project, tax calculation by jurisdiction, multi-currency support for international clients, recurring invoice templates for retainers, and attachment support so the time report rides along with the bill. The ideal state is tracked hours that flow into an invoice draft with one click, requiring only a review before sending. Teams who already map git commits to billable time plug that signal pipeline straight into the export layer.

What should a developer invoice actually contain?

The invoice has two jobs. It has to tell the client exactly what they are paying for, and it has to tell accounts payable exactly how to pay it. Both audiences matter.

The summary section

At the top: client name, invoice number, issue date, due date, billing period, total hours, and total amount. This is the block that gets scanned in five seconds before the invoice goes into a queue.

The detailed breakdown

Group line items by project or sprint, not by raw time entry. “Sprint 14 — authentication and rate limiting: 38.5 hours” reads more cleanly than thirty-seven tiny rows with commit SHAs. The detail goes in an attached time report for clients who want it, not the invoice body.

Descriptions that read as deliverables

“Backend API development — user authentication module” tells the client what they got. “Coding” invites questions. A well-known invoicing tool’s own templates make this point clearly: each line item is framed as a deliverable, not an activity.

Payment terms, front and centre

Net 15 or Net 30 are the common defaults. Larger engagements may use milestone payments — billed at kick-off, midpoint, and delivery. Whichever you choose, state the due date in an unmissable font, and state your late fee policy (commonly 1-5% per month) directly on the invoice. Industry data shows that simply stating a late fee reduces the number of late payments freelancers receive, according to a 2026 analysis from a well-known freelance-invoicing platform.

The supporting time report

Attach the full time report as a PDF or linked CSV. Clients who want the detail get it. Clients who just want the total see a clean front page. Either way, the audit trail exists if an entry is ever questioned.

How does the approval process work for tracked-time invoices?

Disputes are expensive. Pre-approval is cheap. A clean approval chain prevents most invoice arguments before they start.

Internal approval

Someone other than the person who logged the time should review the draft. A project manager spots rates that do not match the contract. A team lead catches a senior engineer whose review work was billed at junior rates. A finance lead catches missing tax codes. Fifteen minutes of review beats a week of back-and-forth with a client’s procurement team.

Client-side pre-approval

For engagements over a certain size, send a weekly or fortnightly tracked-time report for the client to sign off before the invoice goes out. The report shows commits, PRs, meeting times, and totals. When the invoice arrives later, it is a formality rather than a negotiation.

Handling disputed time

A query on a specific entry is a smaller problem than a rejected invoice. Resolve it against the source data — the commit, the PR, the calendar event — rather than against memory. If the dispute stands, issue a credit note for the specific line rather than reopening the whole invoice.

Documenting the approval chain

Every approval leaves a record. Timestamped sign-offs from the project manager, an email confirmation from the client, a payment reference once the invoice is settled. Three records, one folder per client per quarter, ready for any audit or renewal conversation.

What goes wrong when you invoice from tracked hours?

Seven traps account for most delayed payments and client disputes. None are hard to avoid once you know to look for them.

Trap 1: Vague descriptions

“Development work, 40 hours” is a question dressed as a line item. “Checkout refactor — PR #384, 14 commits, 18.5 hours” rarely gets challenged. Specific descriptions signal professionalism and cut the dispute rate sharply.

Trap 2: Inconsistent rounding

Some entries rounded to 15 minutes, some to 30, some to the nearest hour. Totals that do not reconcile with the attached time report look like errors even when they are not. Round once, at the line-item level, to the contracted increment.

Trap 3: Missing entries

Forgotten hours mean undercharging. A weekly review catches them. A monthly reconstruction rarely does. For teams rebuilding a week from scratch, see our guide on reconstructing a timesheet from git history.

Trap 4: Wrong rate applied

Meeting time billed at coding rates, or coding time billed at a discount rate, both create credibility problems. Tag every entry with the activity type and let the rate table do the multiplication.

Trap 5: Late invoicing

Every week you wait to invoice is a week of recall decay and a week later the money arrives. An industry analysis of over 100,000 freelance invoices found that 29% of invoices are paid at least one day late, and delays compound when the billing cycle slips. Invoice promptly — ideally the same day the billing period closes.

Trap 6: No payment terms

An invoice without a clear due date lands at the bottom of the pile. According to a 2025 report referenced widely in freelance-payments coverage, 85% of freelancers experience late payments at least some of the time. A stated due date and late-fee policy are the cheapest insurance against joining that statistic.

Trap 7: Broken export chain

Copy-pasting hours from the tracker into a spreadsheet into the invoicing tool is where numbers drift. A direct integration or a scripted export with column mapping keeps the figures identical across every system.

How do you structure invoices for retainers, fixed-price, and T&M work?

One workflow, three billing models. The tracker captures hours the same way for all three; the invoice just treats them differently.

Time-and-materials invoices

Approved hours multiplied by the contracted rate, per project. Line items grouped by week, sprint, or deliverable. The time report attaches as supporting evidence. This is the canonical tracked-hours-to-invoice flow.

Retainer invoices

Flat monthly fee regardless of hours. The invoice shows the retainer line and references the hours consumed against the monthly cap as a supporting note. If hours exceed the cap, a second line item covers the overage at the T&M rate. If hours fall short, the contract dictates whether the balance rolls over.

Fixed-price invoices

Billed on milestones, not hours. But the hours still get tracked — for profitability analysis, for the next bid, and for spotting scope creep early. The tracker stays on; the invoice logic changes. For more on freelance-specific invoice structures, see our guide on time tracking for freelance developers.

What should you do before your next billing cycle?

Four moves take this from theory to a working system by the end of this month.

  1. Map every project to a billing model. Mark each project in your tracker as T&M, retainer, or fixed-price. Store the rate, the invoicing cadence, and the client contact.
  2. Pick one rounding rule and document it. Fifteen-minute increments applied at the line-item level is the safe default. Write it in every new contract.
  3. Wire approved hours into your accounting tool. Direct integration, CSV export, or API — whichever your stack supports. Copy-paste is where disputes start.
  4. Invoice the same day the period closes. Week one of a delay is lost recall. Month two is lost payment. Speed compounds both ways.

The invoicing workflow is not about being faster at spreadsheets. It is about removing the spreadsheets from the path between tracked time and money in the bank.

Key Takeaway

Generate invoices from tracked hours by reviewing, rating, rounding, and grouping entries once — then exporting to your accounting tool with the time report attached as evidence.

Frequently Asked Questions

How do I convert tracked hours into an invoice?

Review your tracked time, categorise entries as billable or non-billable, apply your contracted rate, round to your billing increment, group entries into line items by project or sprint, and add invoice metadata. Most activity-based trackers can export this draft straight into a popular accounting platform for final review.

What should I include on a developer invoice?

Invoice number, issue date, billing period, client details, line-item breakdown (date, description, hours, rate, total), subtotal, tax, grand total, payment terms, due date, and bank or payment-link details. Attach the full time report as supporting evidence for transparency.

How often should I invoice clients for tracked hours?

Most agencies and freelance developers invoice monthly or fortnightly. More frequent invoicing improves cash flow but adds admin overhead. Weekly time-report pre-approvals smooth the process so the eventual invoice is a formality rather than a negotiation.

What is the best rounding policy for billable hours?

Fifteen-minute increments (0.25 hours) are the professional-services standard. Six-minute increments (0.1 hours) are common for high-value consulting. Pick one, document it in the contract, and apply it at the line-item level — not at the session level, where rounding errors compound.

How do I handle invoice disputes over tracked hours?

Reference the source data — commits, pull request numbers, calendar events — behind every disputed line. A specific audit trail usually ends the dispute quickly. If the challenge stands, issue a credit note for that line rather than reopening the whole invoice.

Can I automate invoice generation from a time tracker?

Yes. Most activity-based trackers connect directly to a popular accounting platform or a well-known invoicing tool via OAuth. Approved hours flow into a draft invoice grouped by client and project. You review, adjust if needed, and send — no manual transcription required.

Should my invoice include individual commit SHAs?

Not on the invoice itself. Group line items by sprint, deliverable, or week on the main invoice, then attach a detailed time report as a separate document showing commits, PRs, and calendar events. Two views serve two audiences without cluttering the bill.

Ready to generate invoices straight from your tracked hours?

Connect your repositories, calendar, and accounting tool to Keito. Approved hours flow into a draft invoice grouped by client and project, with commit references attached as supporting evidence. Review on Friday, send the same day.

See How It Works

Ready to track time smarter?

Flat-rate time tracking with unlimited users. No per-seat surprises.