Product

From Timer to Invoice in 30 Seconds

A walkthrough of TRCR's invoice generation flow — how tracked time becomes a professional invoice with one click.

The promise of time tracking has always been: track your hours, bill your clients, get paid. But in practice, most teams have a painful gap between “tracked hours” and “sent invoice.” They export a CSV, paste it into a spreadsheet, manually calculate totals, format it as a PDF, and email it. This process takes 30 minutes per invoice and is error-prone.

In TRCR, the entire flow takes about 30 seconds. Here's how it works, step by step.

Step 1: Track Your Time (You're Already Doing This)

Throughout the week or month, your team tracks time against projects. Each time entry has a few key properties:

  • Project — which client project the work is for
  • Task (optional) — the specific task within the project
  • Description — a brief note about what was done
  • Duration — automatically calculated from start/stop times
  • Billable — whether this time should be invoiced
  • Hourly rate — inherited from the project, overridable per entry

The critical field is billable. Only billable entries get pulled into invoices. Internal meetings, admin work, and learning time can be tracked for reporting purposes without cluttering your invoices.

Step 2: Generate the Invoice

Navigate to the Invoices page and click “Generate Invoice.” A dialog appears with three fields:

  1. Client — select the client to invoice
  2. Date range — pick the period (e.g., March 1–31)
  3. Tax rate (optional) — defaults to the client's saved rate

TRCR queries all billable time entries for that client within the date range that haven't been invoiced yet. It groups them by project and creates a line item for each:

Line Item: "API Integration — Acme Corp"
Quantity:  24.5 hours
Rate:      $150/hr
Amount:    $3,675.00

Line Item: "Design Review Sessions"
Quantity:  8.0 hours
Rate:      $150/hr
Amount:    $1,200.00

Line Item: "Bug Fixes & QA"
Quantity:  12.0 hours
Rate:      $130/hr
Amount:    $1,560.00

---
Subtotal:  $6,435.00
Tax (10%): $643.50
Total:     $7,078.50

Each line item links back to the original time entries, so you (and your client) can always drill down to see exactly what hours contributed to each charge.

Step 3: Review and Customize

The generated invoice opens in an editor where you can:

  • Edit line items — adjust descriptions, quantities, or rates
  • Add custom line items — for fixed-fee work, expenses, or discounts
  • Remove line items — if some entries shouldn't be on this invoice
  • Change the tax rate — per-invoice override
  • Set due date — defaults to the client's payment terms (e.g., Net 30)
  • Add notes — payment instructions, thank-you message, etc.

The invoice starts in Draft status. Nothing is sent to the client. You can edit it as many times as you want.

Step 4: Send It

When you're satisfied, change the status to Sent. The invoice number is auto-generated (e.g., INV-2026-0042) following a sequential pattern per organization. TRCR marks all linked time entries as invoiced: true so they won't appear in future invoice generations.

Step 5: Export as PDF

TRCR generates a professional PDF of the invoice via a background job. The PDF includes your organization name and logo, the client's billing details (pulled from their profile), all line items with rates and amounts, tax calculations, and payment terms.

PDF generation happens asynchronously through our Redis-backed job queue. For most invoices, the PDF is ready within a few seconds. You can download it and send it via email, or share the link directly with the client.

Step 6: Track Payment

When the client pays, record the payment in TRCR:

  • Amount — full or partial payment
  • Payment method — bank transfer, credit card, check, etc.
  • Reference — transaction ID or check number
  • Date — when the payment was received
  • Notes — any additional context

When the full amount is received, the invoice status automatically changes to Paid. If the due date passes without payment, a background job marks it as Overdue (this runs every 30 seconds, so overdue detection is nearly instant).

The Full Lifecycle

An invoice in TRCR moves through five statuses:

  1. Draft — created, not yet finalized
  2. Sent — finalized and shared with the client
  3. Paid — full payment received
  4. Overdue — past due date, no payment
  5. Cancelled — voided (time entries are un-linked and become available for re-invoicing)

Every status change is visible in real time via WebSocket. If you're on the Invoices page and your business partner records a payment, you'll see the status change instantly without refreshing.

Why This Matters

The connection between time tracking and invoicing is what makes time tracking worth the effort. Every hour you track has a direct path to revenue. Untracked time is literally unbilled time. When your team sees this connection, tracking compliance goes up dramatically.

Multi-Currency and Tax

For teams working with international clients, TRCR supports per-invoice currency settings. The currency defaults to the client's configured currency but can be overridden per invoice. Tax rates work the same way — default from the client, override per invoice.

This means you can invoice one client in USD with 0% tax and another in EUR with 21% VAT, and the Revenue report will show everything broken down correctly.

Revenue Reporting

Once you have invoicing data, TRCR's Revenue report becomes incredibly powerful. It tracks three metrics month over month:

  • Revenue earned — billable hours × rates
  • Amount invoiced — total of sent invoices
  • Amount collected — actual payments received

The gap between these three numbers tells you a lot about your business health. If earned > invoiced, you're leaving money on the table (unbilled work). If invoiced > collected, you have a collections problem.

Try It

The best way to understand the flow is to try it. Sign up for a free TRCR account, track a few hours, and generate your first invoice. The entire flow — from tracked time to professional PDF — takes less than 30 seconds.