Half the freelance disputes that escalate to “I’m not paying” start with a quote that was really just a number in an email. A real quote is short, structured, and answers the questions the client will ask in week three before they think to ask them.
A good quote isn’t a long document. Most fit on one page. What matters is which fields you fill in, because the missing ones become the arguments later. Here’s what belongs in a quote, in the order it should appear.
The header section
The basics that prove this is a quote, not a casual estimate:
- Quote number (Q-2026-014 or similar)
- Issue date
- Validity period (“Valid through June 14, 2026”)
- Your name, business name, contact, tax ID if applicable
- Client name, contact, billing address
The validity date is the single most underused field. Without it, a client can accept a quote 6 months after you wrote it, when your rates and availability have moved on. Always include it.
Scope and deliverables
A short list of exactly what the client gets:
- “5-page Webflow website with custom design”
- “On-page SEO setup for all 5 pages”
- “Mobile-responsive across all major breakpoints”
- “1 month of post-launch support”
Specifics beat adjectives. “Modern, responsive design” can mean anything. “Mobile-responsive at 320px, 768px, 1024px, 1440px breakpoints” can’t.
Pricing breakdown
Don’t put a single number. Break it into lines so the client sees what they’re paying for:
| Item | Price |
|---|---|
| Design (5 pages) | $3,500 |
| Development (Webflow build) | $2,800 |
| SEO setup | $600 |
| Post-launch support (1 month) | $400 |
| Subtotal | $7,300 |
| Sales tax (where applicable) | TBD |
| Total | $7,300 + tax |
The breakdown justifies the number and gives the client a lever if they push back. “Can we drop the SEO setup?” is a much better conversation than “Can you do it for less?”
Payment terms
This is the part most quotes skip and most projects regret. Cover at minimum:
- Deposit amount and percentage (typical: 30 to 50 percent)
- Milestone schedule if the project is staged
- Final balance trigger (on delivery, on acceptance, on launch)
- Payment window (net 7, net 14, net 30)
- Accepted payment methods (bank transfer, Wise, Stripe, etc.)
- Late fee policy if any
Example: “50% deposit due on signature. 25% on draft delivery. 25% on final acceptance. Net 7 from invoice date. Bank transfer or Stripe accepted.”
If your terms aren’t on the quote, you have to negotiate them at invoice time. That’s a worse moment.
Timeline
State it as conditional on deposit clearing, not on signature:
Estimated delivery: 4 weeks from deposit receipt. Subject to assumptions listed below.
This avoids the situation where the client signs Friday, drags the deposit until the following Friday, and still expects delivery on the original timeline.
For longer projects, break the timeline into milestones with rough dates:
- Week 1: discovery and content audit
- Week 2: wireframes and design direction
- Week 3 to 4: design and revisions
- Week 5 to 6: build
- Week 7: QA and launch
Revisions included
Be explicit about how many rounds of revisions are inside the price.
Includes 2 rounds of revisions per deliverable. Additional rounds billed at $120/hour.
Without this, you’ll be on round 7 wondering when you can ship. With it, the third round is a natural stopping point or a paid extension.
Assumptions
The conditions you priced under. Five to ten bullets:
- Client provides copy in editable format
- Brand assets exist in vector/web formats
- One stakeholder gives final approval
- Client responds to questions within 3 business days
- Hosting and domain access provided by client
If any change, scope and price can be revisited. This is the proposal assumptions section in quote form.
Exclusions
What’s specifically not included:
- Copywriting
- Photography
- Paid advertising setup
- Ongoing maintenance after the post-launch month
- Email marketing integration
Exclusions stop scope creep before it starts. They also give you upsell opportunities later (“you’ll need copywriting; I can add that for $X”).
Acceptance
The signature block. State what acceptance means:
By signing below, the client accepts the scope, price, terms, and timeline above. This quote becomes a binding agreement upon signature and deposit receipt.
Include space for the client’s name, signature, and date. If you use e-signature, embed the block at the bottom of the quote.
The boilerplate that lives at the bottom
A few short lines that handle the small print:
- Currency: “All amounts in USD.”
- Tax: “Prices exclude VAT/sales tax unless stated.”
- Cancellation: “If the project is canceled by the client after start, the deposit is non-refundable. Additional work completed will be billed at the per-milestone rate.”
- IP transfer: “Final deliverables transfer to client on receipt of final payment. Pre-payment, all materials remain the freelancer’s property.”
- Governing law: “Governed by the laws of [jurisdiction].”
This is not legal advice. A 30-minute review by a lawyer in your jurisdiction is worth doing once for your standard template.
Quote vs estimate (worth restating)
If you’re not sure you can deliver at a fixed price, label the document an estimate, not a quote. Estimates can shift. Quotes generally can’t, once accepted.
Both still need the items above. The label just changes how the client perceives flexibility.
A 5-minute audit of your current quote template
Open your most recent quote. Check:
- Validity date? Yes/no
- Itemized pricing? Yes/no
- Deposit and payment terms? Yes/no
- Conditional timeline tied to deposit? Yes/no
- Revisions cap? Yes/no
- Assumptions list? Yes/no
- Exclusions list? Yes/no
- Acceptance block? Yes/no
- Tax handling explicit? Yes/no
- Boilerplate footer? Yes/no
If you missed three or more, you’re carrying invisible risk. The fix is one editing session and a saved template you reuse every time. A well-built quote is the cheapest insurance policy a freelance business can buy, and the version of you in month three will thank the version writing it today.
Ready to send stronger proposals?
Build, send, and track proposals in one place so follow-up is easier.
Start your free trial →





