Turning timesheets into an invoice the client will not question

A client questions an invoice when they cannot see where the hours came from. An invoice built from approved timesheet entries, at a rate card the client has already agreed, with a line per person and an annexure listing every day and description, gets paid without a call. This article walks through the four pieces and the mistakes that cause disputes.

CrewClock team20 October 2026 5 min read

Piece 1: approved hours only

The invoice should read the same approved entries that payroll reads. If an entry is still pending or was rejected, it is not on the invoice. This sounds obvious, but a manual invoice built from a spreadsheet export usually includes everything in the period, including the hours somebody rejected the next day.

Piece 2: a rate card per client, with dates

Each client has a default bill rate, and some people have their own rate on that client. Both need an effective-from date, because rates change at renewals. An entry on the 14th is billed at the rate valid on the 14th, not the rate valid when the invoice is created.

Keep the bill rate separate from the cost rate used for payroll. The client never sees cost rates; the profitability report does.

Piece 3: one line per person (or per task)

A single line that says "consulting services, 212 hours" invites questions. A line per person with hours, rate and amount reads like the statement of work the client signed. If the client thinks in tasks rather than people, group by ticket or project instead; the entries carry both.

Round at the line level and show the rounding, so the total on the invoice equals the sum of the lines the client checks.

Piece 4: the annexure

The annexure is the timesheet itself, attached to the invoice: date, person, description, ticket, hours. It answers the question before it is asked. Most disputes end when the client's project manager can match a line to a meeting in their own calendar.

Descriptions matter here. "Work on integration" is not evidence; "Bank file import: fixed MT940 parsing for multi-currency statements" is.

The mistakes that cause disputes

From invoices we have seen questioned:

  • Hours billed for a day the person was on approved leave (the timesheet and the leave record were in different systems).
  • A rate change applied to the whole month instead of from its effective date.
  • Currency conversion done on the invoice instead of billing in the client's currency.
  • Credit notes and part payments tracked in email, so the balance due was wrong on the next invoice.

How CrewClock does it

CrewClock builds an invoice for a client and a period from approved entries at the rate valid on each day, one line per person, with tax, discount and rounding shown. The PDF carries the organisation's logo and bank details and includes the timesheet annexure. Part payments are recorded against the invoice and the aging report shows what is overdue. Each client can be invoiced in its own currency, independent of the payroll currency.

Frequently asked

Should the annexure show descriptions or only hours?
Descriptions. Hours alone move the question from the invoice to the annexure; descriptions answer it.
How do we handle a fixed-fee project with timesheets?
Invoice the fixed amount as a manual line and attach the annexure for transparency; the hours stay in reports for profitability.
What if the client disputes two hours?
Issue a credit note or an adjustment line on the next invoice rather than editing the paid invoice, so the history stays intact.

Related articles

See it working in the demo.

A sample company with a team, clients and two months of data. No signup, every page unlocked.