Guide
The client says that's not what we agreed. What now?
Reply calmly, restate the original scope word for word, and ask the client to point to where the agreement says otherwise. Then gather every message where they approved the work or the change, because what you can show was agreed matters more than who remembers it more confidently. On the next job, freeze the agreed text before work starts so there is one version both sides signed.
Updated September 10, 2026
Why this happens after delivery, not before
Scope disputes surface at the invoice because that is the first moment the client compares what they are paying for with what they remember asking for. Memory is generous to the person who has to pay. A client who said "make it feel more premium" in March will remember, in June, having asked for a full rebrand.
For a designer, developer or writer the usual gaps are source files, the number of revision rounds, and whether "the website" included the copy, the photos or the mobile version. None of these are dishonest disagreements. They are the things nobody wrote down.
For a renovation contractor it is the punch list and the extras. The client approved the second bathroom fan by text in week three, and in week eight it is "I thought that was included". The punch list grows because every walkthrough surfaces something new and nobody agreed what "done" meant.
The first reply to send
Do not argue in the first reply. Restate the scope in the words that were actually agreed, and ask one question: where does the agreement say otherwise? That puts the job of finding the text on the person claiming it exists, and it keeps you out of a memory contest.
A version that works for both a freelancer and a contractor: "Thanks for flagging this. I want to make sure we are looking at the same thing. The scope we agreed on [date] was: [paste the exact list]. The work delivered matches that list item by item. If you have a message or document where we agreed something different, send it over and I will read it carefully. If the extra work is something you want, I am happy to quote it." Send it in writing, on the same channel the original agreement lived on.
This reply does three things. It ties the conversation to a specific dated text. It invites the client to produce a document rather than a feeling. And it separates the dispute about the past from the sale of future work, which is where most of these conversations end up.
- Do not apologise for work that matches the scope.
- Do not offer a discount in the first message.
- Do not settle it on a phone call unless you follow up with a written summary the same day.
- Do not release deliverables the agreement ties to payment until you have checked what the agreement says.
- Do not reply to the tone. Reply to the scope.
They approved it in writing, then disputed the invoice
An approval message is the most useful thing you have in this dispute. "Looks great, go ahead" or "Approved, send the invoice" is a record that the client saw the work, accepted it, and understood what came next. Its value comes from three details: who sent it, when, and what exactly it was replying to.
Preserve it before you reply. Screenshots are a start, but a screenshot shows text, not the message as it was sent. Export the whole thread from the app if you can (email as .eml, Slack or Teams exports, WhatsApp chat export with media), leave the original message untouched in the app, and note the timestamp and time zone. Save copies in two places you control.
Then make the approval part of your reply. Quote it, with the date, and attach the version of the work it approved. A client who approved a specific PDF on a specific day has a much harder time saying the invoice describes something else.
- The approval message itself, kept in the original app, plus an export of the thread.
- The exact file, proof or photo the approval was replying to.
- The invoice and the scope it lists.
- Any later message from the client that mentions the work.
- Your own delivery message with its timestamp.
The change was agreed by text or on site
A thumbs-up, a "sure, go ahead" or a voice note is a record of a change. The problem is not that it exists. The problem is proving, later, that the message was sent by the client, sent on that day, and referred to that change. A chat screenshot can be cropped or edited by anyone, and clients know it.
Proving the message as sent is the hard part. Keep the message inside the app it came from, export the conversation rather than a single message, and keep the surrounding messages so the context stays visible. If it was a reaction rather than words, take a screen recording that shows the reaction, the message it is attached to, and the account it came from.
A nod on site is different: nothing was sent at all. The fix is to send something yourself, the same day: "As discussed on site today, you asked us to add the second fan and relocate the outlet at the price I quoted, and I will proceed tomorrow." A client who reads that and says nothing has still left a record. A client who replies "yes" has given you a written approval.
Going forward, the standing rule for both trades is simple. No change starts until it has been written down in one place and acknowledged there. That can be a change order, an email, or a line added to the shared scope. What it cannot be is a conversation.
Put the record in one place before the second reply
Before you answer the client's response, build a single timeline: the original scope, every change, every approval, every delivery, every payment. One page, dated, with the file or message reference next to each line. This is for you first. Most people discover they have more than they thought, and occasionally that the client has a point on one item.
The timeline also sets your position. If the original scope is clear and the delivered work matches it, hold. If the scope was vague on the disputed item, say so plainly and propose a split on that item only. Conceding the one thing that was genuinely unclear costs less than looking like you defend everything.
- Original scope and the date it was agreed.
- Each change, with who asked for it and where.
- Each approval, quoted with its date.
- Each delivery, with the file name or the walkthrough date.
- Each payment received and the invoice it matched.
How to keep the client without conceding the scope
Keeping the client and holding the scope are not opposites. What clients usually want is to feel they were not tricked. Give them that with clarity, not with discounts. Lay out what was agreed, what was delivered, and what the new request would cost as a separate piece of work, and let them choose.
There are concessions that do not touch the scope: a payment schedule for the invoice as issued, a small fixed price for the extra item, a credit on the next job rather than this one, or the extra work done at cost against a written change order. Each of these says "I want to keep working with you" without saying "the invoice was wrong".
If the client escalates, stay boring. Same facts, same tone, no new arguments. Most disputes cool when one side stops feeding them. If they mention a bad review or a chargeback, do not respond to the threat. Respond to the scope, in writing, once.
- A payment plan for the invoice as issued.
- A fixed quote for the extra item, as a separate line.
- The extra item at cost, against a signed change order.
- A credit on the next project.
- A handover call or final walkthrough to close the loop.
When to talk to a professional
This guide is not legal advice. Talk to a lawyer, or a construction or contract dispute professional in your province or state, when the amount matters to your business, when the client has stopped replying, when they mention their own lawyer, or when you think a deadline may apply. Contractors in particular have time-limited remedies that vary by place, and a static page cannot tell you what yours are.
Talk to a professional before you send anything that reads like a legal demand, hold back files or access, or file anything. A short paid consultation is usually cheaper than a wrong first move.
TrustChain's AI Advisor can explain what a clause says in plain language. For the BC Builders Lien Act it answers from the statute text, quotes the section, states the consolidation date and links the official BC Laws source. Elsewhere it gives general guidance and says so. It is a reading aid, not a replacement for the conversation above.
- The amount is large enough to hurt your business.
- The client mentions their lawyer, a chargeback or a formal complaint.
- You want to hold back files, keys or access and are not sure you can.
- You are a contractor and think a lien or payment claim may apply.
- The client has gone silent after a written dispute.
How to stop this happening on the next job
The dispute exists because two people carried two versions of the same agreement. The fix is to freeze one version before work starts, with both sides confirming it is the version. A PDF sent by email is a start. A record both sides signed, with a fingerprint of the exact text, is better, because if the text changes the fingerprint changes, and both sides can check.
This is what TrustChain does. Both parties verify their identity once with photo ID and a selfie (about two minutes), negotiate the wording in an end-to-end encrypted chat, and sign the same final text. The signed text gets a Keccak-256 fingerprint and a timestamped, append-only audit entry. Optionally, the fingerprint is anchored in a Polygon mainnet transaction. Only the fingerprint goes on-chain, never the text, names or personal data. An unverified account cannot sign.
When the client later says "that's not what we agreed", you point to the signed record and its public verification link. The link opens without an account and shows the fingerprint and status, never the identities of the parties. Anyone holding the signed text can recompute the Keccak-256 hash and compare. If the record was anchored, the Polygon transaction can be checked on any block explorer independently of TrustChain. The cryptographic parts verify anywhere. Whether an agreement is enforceable depends on where the parties are and what they agreed, and TrustChain makes no claim about that.
A change can be protected the same way. Write it up as its own agreement, both sign it, and the "sure, go ahead" lives in a tamper-evident record that does not disappear with a lost phone. The Free plan covers one protected agreement and three AI Advisor requests per month with no card. An extra agreement or an extra Polygon anchor is $1 each, one-off, and anchors require a verified identity.
- The deliverables, listed one by one, including source files or the punch list.
- The number of revision rounds or walkthroughs included.
- What "done" means and who confirms it.
- How changes are requested, priced and approved.
- Payment timing tied to each milestone.
Questions people ask next
Is a thumbs-up or a text message a real approval?
It is a record that the client responded, and it matters in a scope dispute. The hard part is proving the message as sent: who sent it, when, and what it was replying to. Keep it in the original app, export the thread, and next time put change approvals into a signed record. On TrustChain the signed text gets a timestamped, append-only audit entry, so the approval does not depend on a screenshot.
Does a TrustChain record mean the client has to pay?
No. What the record shows is what the text was and when both verified parties signed it: the signed text gets a Keccak-256 fingerprint and a timestamped, append-only audit entry, and anyone with the text can recompute the hash. The cryptographic parts verify anywhere. Whether an agreement is enforceable depends on where the parties are and what they agreed, and TrustChain makes no claim about that.
Can the client see my personal details through the verification link?
No. The public verification link opens without an account and shows the fingerprint and status of one record, never the identities of the parties. The title appears only if the owner opted in. Only the fingerprint is ever written to Polygon, never the text, names or personal data. The agreement text itself is stored on TrustChain's servers so the record, certificate and PDF can be served.
What does it cost to protect a small job?
The Free plan is $0 with no card and includes one protected agreement and three AI Advisor requests per month. An extra agreement or an extra Polygon anchor costs $1 each, one-off, and anchors require a verified identity. Pro is $19 per month for 20 agreements, 20 anchors and 50 AI requests. Your own record, certificate and PDF are free on every plan.
Should I get a lawyer before replying to the client?
Not for the first reply, which should only restate the scope and ask where the agreement says otherwise. Talk to a lawyer or a contract dispute professional when the amount matters to your business, the client mentions their own lawyer or a chargeback, or you think a deadline may apply. TrustChain's AI Advisor explains clauses in plain language. Outside the BC Builders Lien Act it gives general guidance and says so. It does not replace that conversation.
The free plan covers one protected agreement a month: both identities verified, the signed text fingerprinted, a public verification link. No card needed.