Direct answer
Cancelled halfway is not unpaid work. It is a shorter job, billed in full.
Most cancelled projects are not underpaid because the client is dishonest. They are underpaid because nobody can say exactly how much work exists. Here is the billing method that removes the argument: freeze the job, sort the stages into three buckets, and invoice each bucket against its delivery record.
Updated October 20, 2026. The two delivery records quoted below are real and public, with their client decision states read back from the live service on publication day.
Why cancelled jobs go unpaid
A cancellation is rarely the problem. The problem is the sentence that follows it: let us settle up for what was done. That sentence starts an argument about a quantity nobody measured. You remember being nearly finished. The client remembers a project that had barely started. Both of you are estimating, weeks later, from inboxes and impressions, and the invoice that comes out of that argument is the one that gets disputed, discounted, or quietly never paid. Cancelled work gets paid when the amount of work is not an estimate at all, because it was recorded while it happened.
Step 1. Freeze the job on the day it cancels
Stop work the moment the cancellation arrives, and get the cancellation itself in writing: a one-line reply from the client is enough, with the date on it. Save the state of everything as it stands that day, including work in progress you are not sure is billable yet. Do not polish, finish, or improve anything after this point. Every hour spent after the cancellation is an hour you chose to spend, and it muddies the one clean line the invoice needs: work done up to the day the job ended.
Step 2. Sort the work into three buckets
Go stage by stage through the agreement, not hour by hour through your memory. Bucket one is delivered and accepted: the client saw it, accepted it, and owes the stage price in full. Bucket two is delivered and awaiting a decision: you did your side, the work is with the client, and the fact that they never got around to accepting it does not un-deliver it. Bucket three is the stage that was under way: bill what was actually delivered and is usable, and say plainly what was left undone. Anything not started is not billed, whatever it was worth to your calendar. The buckets are the whole method, because each one has a different, defensible billing rule.
Step 3. Build the invoice from the record
One line per stage, at the agreed stage price, with the delivery date next to it. Credit the deposit on the face of the invoice. Add a cancellation fee only where the written agreement provides for one, and name the clause when you do. If the work ran through Zambo, the two records below are what your lines point at. Read them the way the client will:
Accepted: this stage is a settled fact, not a claim
- Status: accepted by the client on 2026-10-16, decision ok_to_release.
- The record covers 4 steps, 4 of 4 checked, each with the time it was saved.
- The acceptance sits on the record itself, in its acceptance.json, linked below.
- Open the handover or read its acceptance.json.
Still open: delivered, checked, and waiting on the client
- Status: still pending, decision hold. The client has not accepted or flagged it yet.
- The record covers 5 steps, 5 of 5 checked, saved on 2026-10-16.
- Pending is a documented state, not a gap in your paperwork: the work is on the record and the unfinished decision is the client's.
- Open the handover or read its acceptance.json.
The accepted record is bucket one: nothing left to discuss, the client decided and the decision is on the record. The pending record is bucket two: the work was delivered and checked, the client never decided, and the record says exactly that. A cancellation invoice built on records like these does not ask the client to trust your account of the job. It shows the job.
Step 4. Send it in one message, with the record attached
Keep the covering message short enough to read in one breath: the job ended on this date at your instruction, the invoice covers the stages listed, each stage links to its delivery record, the deposit is credited, and the total is this. No history of the relationship, no grievance about the cancellation, no apology for invoicing. A cancellation is a normal business event and the invoice is a normal business document; treating it as either an accusation or a favor is what turns it into a dispute.
Step 5. If they argue the amount
Separate the two arguments that arrive mixed together. The quantity argument, how much work exists, is settled by the record: stages, dates, acceptance states. The price argument, what a stage was worth, is settled by the agreement: the stage prices were agreed before the work started. If the client is really arguing quality, that is a third argument, and it belongs to the acceptance state: a stage they accepted is hard to re-open, and a stage they never accepted gets its flag heard on the specific step, not as a discount on the whole job. Answer each argument with its own document and the invoice usually survives intact.
What this page does not settle
Whether you may bill for part-finished work, keep a deposit, or charge a cancellation fee turns on your written agreement and on local rules, and agreements differ. This page is general information, not legal advice. A verifiable receipt proves the saved result was not changed since it was saved. It does not prove the work was good, and it does not decide what a cancelled stage is worth: the agreement does that. Zambo never holds your money or the client's.
Frequently asked questions
How do I invoice for work a client cancelled halfway through?
Invoice the job in three buckets, at the prices already agreed. Bucket one: stages delivered and accepted, billed in full. Bucket two: stages delivered and still waiting on the client's decision, billed in full, because delivery is your side of the bargain and the pending state is documented on the record. Bucket three: the stage that was under way when the cancellation landed, billed for the part actually delivered and usable, not as a round percentage of the stage. Credit any deposit already paid against the total. Add a cancellation fee only if your written agreement provides for one. Send the invoice with the delivery record attached, stage by stage, so every line points at dated, checkable work instead of your estimate of how far along you were.
Can I charge a cancellation or kill fee?
Only if the agreement you both accepted provides for one. A fee invented after the cancellation is a negotiation, not a term, and it usually costs more goodwill than it recovers. If your agreement is silent, bill the completed work cleanly this time and put the clause in your standard terms for the next job: work completed through the cancellation date is payable in full, plus a stated fee on the remaining stages if you want one, with the deposit credited first. Written before the job starts, that clause is unremarkable. Written after, it is an argument.
What if the client says barely any work was done?
That claim survives only while the amount of work is a matter of memory. Answer it with the buckets, not with adjectives: here is the stage list, here is which stages were delivered and when, here is the acceptance state on each one, and here is the record link where the client can open every step themselves. A stage with a dated record behind it is a fact. A percentage of a project, offered by either side, is an opinion, and opinions are what the argument was made of.
What happens to the deposit the client already paid?
Credit it against the cancellation invoice, in writing, on the face of the invoice. If the deposit covers more than the completed stages are worth, what happens to the difference follows your agreement: many agreements treat a deposit as payment toward the work, so the excess comes back, while a booking fee kept for reserved time is a different thing and only holds if that is what was agreed in writing. Never let a kept deposit sit unexplained. An unexplained deduction reads as a penalty, and penalties start the next argument.
How do I set up the next job so a cancellation bills itself?
Work in stages, deliver each stage as a record, and let the client accept or flag it before the next stage starts. Then a cancellation is arithmetic: accepted stages are settled, the delivered stage is billed, the open stage is the only conversation. When the job runs through Zambo, every step is saved as it happens and the client gets one handover link per stage, so the cancellation invoice writes itself from the record. For $0.99, run the replacement job on that footing for a day and watch the record build: https://zambo.dev/day-pass/ A Day Pass covers 24 hours, no subscription. Ongoing use is the Zambo Pass at $29 a month or $290 a year, and $19 a month for $ZAMBO holders, which adds private handover links, your branding, and the approval record as PDF and JSON files.
Related
- My client went quiet in the middle of a project. How do I restart it or close it out?
- Can I stop work if a client has not paid my last invoice?
- My client won't pay me. What do I do?
- How do I ask a client for a deposit before starting work?
- Should I send the final files before the client pays in full?
- Start with your problem: every problem in this directory, routed to its page
- My client has not approved the final draft. Can I still send the final invoice?
- A client owes me for finished work and wants a new project started. Should I start?