How do I document my work so I can bill a client for it?

Document the work as a record while it happens, then bill from the record: each invoice line names the job, links its handover, and carries the acceptance date where one exists. An invoice built that way is not a request for trust; every line opens into the steps that justify it.

Last updated: 2026-10-17

Billing documentation fails when it is written at invoice time from memory and chat fragments. The hours are reconstructed generously, the scope is described loosely, and the client, who remembers the work differently, starts asking questions that delay the payment the invoice exists to trigger. Documentation written during the work has none of those properties, because it is not written at all: it accumulates as steps.

The practice is a chain of small habits. Jobs are recorded step by step, so the work's own account exists. Deliveries are handovers, so each billed unit has an object. Acceptances land on the record, so the billed work carries its decision date. The invoice then assembles itself: line, job, link, date. Disputed lines resolve by opening the link, which is why invoices built this way get questioned less in the first place.

For time-based billing the same record disciplines the hours without a stopwatch culture: the steps and their times bound the work, and the honest rounding happens against a visible trail. Clients rarely contest hours they can see the shape of; they contest hours that arrive as a number with a narrative.

Template: the record-backed invoice

Header: invoice number, period, terms. Lines, one per job: [Job name] , [one-line outcome] , record: [handover link] , accepted: [date, or "awaiting decision"] , amount. Footer notes: "Each line's record shows the steps performed and their results. Questions on a line are answered fastest on the record itself; holds can be recorded there against the named step." File the invoice with the job records it cites.

Worked example

A line's record, opened: https://zambo.dev/handover/bd7e5325-33fd-4c5e-b029-76b781fa2f51 shows a five-step job in its open state. An invoice line pointing at a record in this state says, precisely, "delivered, awaiting your decision," which is a billable fact, not a plea.

Frequently asked questions

I bill by the hour. Does a step record replace timesheets?

It supports them: the steps and their times show the work the hours bought, which is what clients actually question. Keep the timesheet for the numbers; let the record carry the justification, and hour disputes mostly disappear.

What about small tasks too minor for a job record?

Batch them honestly: one job per client per week for minor tasks, each task a step. The record stays light, and the weekly invoice line still opens into enumerated work instead of a lump sum with a shrug.

The client pays through a platform with its own invoicing. Does this still apply?

Yes: attach the handover links in the platform delivery, and keep your invoice lines mapped to jobs on your side. Platform invoices move the money; the record answers the questions, on whichever surface they are asked.

By Brennan Zambo, founder of Zambo.

Last verified: 2026-10-17.

Rebuild your invoice template on the record-backed format today: https://zambo.dev/demo/ .

Try a handover

A handover gives your client one proof link with verifiable receipts to review, then Accept or Flag.

try it: say 'use zambo to hand this over to <client>' in your ai

Add Zambo · Handover docs · Real public handover · AER-1