{"id":12331,"date":"2026-04-05T09:57:33","date_gmt":"2026-04-05T02:57:33","guid":{"rendered":"https:\/\/upbase.io\/blog\/professional-service-agreement\/"},"modified":"2026-04-05T22:33:40","modified_gmt":"2026-04-05T15:33:40","slug":"professional-service-agreement","status":"publish","type":"post","link":"https:\/\/upbase.io\/blog\/professional-service-agreement\/","title":{"rendered":"How to write a professional service agreement that actually protects your agency"},"content":{"rendered":"\n<p>A professional service agreement (PSA) defines the rules of engagement between your agency and every client you take on. <\/p>\n\n\n\n<p>Get it right, and you have a document that prevents scope creep, guarantees payment, and gives you legal ground to stand on when things go sideways.<\/p>\n\n\n\n<p>Most agencies use a generic contract they found online, swap in their company name, and hope for the best. <\/p>\n\n\n\n<p>That&#8217;s how you end up doing 40% more work than you quoted, chasing invoices for 90 days, and losing ownership of frameworks you built years before the client showed up.<\/p>\n\n\n\n<p>If you run an agency or lead a small services team, this guide <strong>breaks down exactly what belongs in your PSA, clause by clause, with example language you can use today<\/strong>.<\/p>\n\n\n\n<svg width=\"100%\" viewBox=\"0 0 680 200\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"8\" refY=\"5\" markerWidth=\"6\" markerHeight=\"6\" orient=\"auto-start-reverse\"><path d=\"M2 1L8 5L2 9\" fill=\"none\" stroke=\"context-stroke\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/marker>\n<\/defs>\n\n<text x=\"340\" y=\"28\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">What happens when your PSA is weak (or missing)<\/text>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"50\" width=\"180\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(252, 235, 235);stroke:rgb(163, 45, 45);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"130\" y=\"70\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(121, 31, 31);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">Scope creep<\/text>\n<text x=\"130\" y=\"88\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(163, 45, 45);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">40% more work, same fee<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"250\" y=\"50\" width=\"180\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(252, 235, 235);stroke:rgb(163, 45, 45);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"340\" y=\"70\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(121, 31, 31);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">Late payments<\/text>\n<text x=\"340\" y=\"88\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(163, 45, 45);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">90-day invoice chasing<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"460\" y=\"50\" width=\"180\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(252, 235, 235);stroke:rgb(163, 45, 45);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"550\" y=\"70\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(121, 31, 31);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">IP disputes<\/text>\n<text x=\"550\" y=\"88\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(163, 45, 45);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Client claims your tools<\/text>\n<\/g>\n\n<line x1=\"130\" y1=\"106\" x2=\"130\" y2=\"130\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<line x1=\"340\" y1=\"106\" x2=\"340\" y2=\"130\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<line x1=\"550\" y1=\"106\" x2=\"550\" y2=\"130\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"132\" width=\"600\" height=\"44\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(241, 239, 232);stroke:rgb(95, 94, 90);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"340\" y=\"158\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(68, 68, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">A strong PSA prevents all three. Here&#8217;s how to build one.<\/text>\n<\/g>\n<\/svg>\n\n\n\n<h2 class=\"wp-block-heading\">What is a professional service agreement?<\/h2>\n\n\n\n<p>A professional service agreement is a legally binding contract between a service provider and a client. <\/p>\n\n\n\n<p>It spells out what work gets done, how much it costs, who owns the output, and what happens if either side wants out.<\/p>\n\n\n\n<p>For agencies, the PSA is the single most important document in every client relationship. <\/p>\n\n\n\n<p>It&#8217;s not a formality. <\/p>\n\n\n\n<p>It&#8217;s the thing you point to when a client says &#8220;I thought that was included&#8221; or &#8220;we assumed you&#8217;d handle that too.&#8221;<\/p>\n\n\n\n<p>A strong PSA covers seven areas: scope of work, change orders, payment terms, intellectual property, confidentiality, termination, and liability. Skip any one of these, and you&#8217;re exposed.<\/p>\n\n\n\n<p><strong>A PSA is not the same thing as a proposal.<\/strong> Your proposal sells the work. Your PSA governs it. They&#8217;re separate documents with separate jobs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">PSA vs. MSA vs. SOW: which one do you actually need?<\/h2>\n\n\n\n<p>Agencies throw around &#8220;MSA,&#8221; &#8220;SOW,&#8221; and &#8220;PSA&#8221; like they&#8217;re interchangeable. They&#8217;re not. Using the wrong one costs you flexibility or leaves gaps in your legal coverage.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>Professional service agreement (PSA)<\/th><th>Master service agreement (MSA)<\/th><th>Statement of work (SOW)<\/th><\/tr><\/thead><tbody><tr><td><strong>What it does<\/strong><\/td><td>Governs a single project or engagement<\/td><td>Sets overarching terms for an ongoing relationship<\/td><td>Defines specific deliverables, timelines, and fees for one project<\/td><\/tr><tr><td><strong>When to use it<\/strong><\/td><td>One-off projects or first-time clients<\/td><td>Long-term clients with multiple projects<\/td><td>Under an MSA, to scope each new project<\/td><\/tr><tr><td><strong>Scope<\/strong><\/td><td>Self-contained: covers legal terms + project details<\/td><td>Legal terms only, no project specifics<\/td><td>Project specifics only, no legal terms<\/td><\/tr><tr><td><strong>Best for agencies that<\/strong><\/td><td>Take on project-based work with defined start\/end dates<\/td><td>Have retainer clients or recurring engagements<\/td><td>Already have an MSA and need to add new projects fast<\/td><\/tr><tr><td><strong>Renegotiation<\/strong><\/td><td>New agreement per project<\/td><td>Rarely renegotiated; new SOWs added underneath<\/td><td>New SOW per project, same MSA<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>The practical answer for most agencies:<\/strong> Start every new client with a PSA. If the relationship grows into ongoing work, upgrade to an MSA + SOW structure so you don&#8217;t renegotiate legal terms every time you kick off a new project.<\/p>\n\n\n\n<p>If you&#8217;re a 5-person agency doing project work for SMBs, a well-built PSA handles 90% of your contracts. <\/p>\n\n\n\n<p>You don&#8217;t need an MSA until you&#8217;re juggling multiple concurrent projects for the same client.<\/p>\n\n\n\n<p><strong>A common mistake:<\/strong> some agencies try to use a proposal as their PSA. Proposals are sales documents. <\/p>\n\n\n\n<p>They describe what you plan to do and what it costs. But they rarely include IP clauses, liability caps, termination rights, or dispute resolution. <\/p>\n\n\n\n<p>If your &#8220;contract&#8221; is just a signed proposal, you&#8217;re legally exposed.<\/p>\n\n\n\n<p>Keep them separate. Send the proposal first. Once the client says yes, send the PSA for signature.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The 7-clause agency PSA stack<\/h2>\n\n\n\n<p>Most PSA templates online were written for enterprise procurement departments or law firms. <\/p>\n\n\n\n<p>They&#8217;re 20 pages of boilerplate that doesn&#8217;t address the things that actually burn agencies: scope creep, disappearing clients, and IP disputes over work you built on your own dime.<\/p>\n\n\n\n<svg width=\"100%\" viewBox=\"0 0 680 520\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"8\" refY=\"5\" markerWidth=\"6\" markerHeight=\"6\" orient=\"auto-start-reverse\"><path d=\"M2 1L8 5L2 9\" fill=\"none\" stroke=\"context-stroke\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/marker>\n<\/defs>\n\n<text x=\"340\" y=\"30\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">The 7-clause agency PSA stack<\/text>\n<text x=\"340\" y=\"48\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Each clause solves a specific agency problem<\/text>\n\n<g onclick=\"sendPrompt('Tell me more about writing a scope of work clause')\" style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"70\" width=\"280\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"180\" y=\"90\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">1. Scope of work<\/text>\n<text x=\"180\" y=\"108\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Prevents scope creep<\/text>\n<\/g>\n\n<g onclick=\"sendPrompt('Tell me more about change order clauses')\" style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"360\" y=\"70\" width=\"280\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"500\" y=\"90\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">2. Change orders<\/text>\n<text x=\"500\" y=\"108\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Makes extras routine<\/text>\n<\/g>\n\n<line x1=\"320\" y1=\"98\" x2=\"358\" y2=\"98\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<g onclick=\"sendPrompt('Tell me more about payment terms in a PSA')\" style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"150\" width=\"280\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(238, 237, 254);stroke:rgb(83, 74, 183);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"180\" y=\"170\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(60, 52, 137);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">3. Payment terms<\/text>\n<text x=\"180\" y=\"188\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(83, 74, 183);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Protects cash flow<\/text>\n<\/g>\n\n<g onclick=\"sendPrompt('Tell me more about IP clauses for agencies')\" style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"360\" y=\"150\" width=\"280\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(238, 237, 254);stroke:rgb(83, 74, 183);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"500\" y=\"170\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(60, 52, 137);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">4. Intellectual property<\/text>\n<text x=\"500\" y=\"188\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(83, 74, 183);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Keeps your frameworks<\/text>\n<\/g>\n\n<line x1=\"180\" y1=\"126\" x2=\"180\" y2=\"148\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<line x1=\"500\" y1=\"126\" x2=\"500\" y2=\"148\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<g onclick=\"sendPrompt('Tell me more about confidentiality clauses')\" style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"230\" width=\"280\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 236, 231);stroke:rgb(153, 60, 29);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"180\" y=\"250\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(113, 43, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">5. Confidentiality<\/text>\n<text x=\"180\" y=\"268\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(153, 60, 29);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Protects both sides<\/text>\n<\/g>\n\n<g onclick=\"sendPrompt('Tell me more about termination clauses')\" style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"360\" y=\"230\" width=\"280\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 236, 231);stroke:rgb(153, 60, 29);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"500\" y=\"250\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(113, 43, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">6. Termination<\/text>\n<text x=\"500\" y=\"268\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(153, 60, 29);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Clean exit for both sides<\/text>\n<\/g>\n\n<line x1=\"180\" y1=\"206\" x2=\"180\" y2=\"228\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<line x1=\"500\" y1=\"206\" x2=\"500\" y2=\"228\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<g onclick=\"sendPrompt('Tell me more about liability and indemnification')\" style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"140\" y=\"310\" width=\"400\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 238, 218);stroke:rgb(133, 79, 11);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"340\" y=\"330\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(99, 56, 6);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">7. Liability and indemnification<\/text>\n<text x=\"340\" y=\"348\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(133, 79, 11);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Caps your risk exposure<\/text>\n<\/g>\n\n<line x1=\"180\" y1=\"286\" x2=\"260\" y2=\"308\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<line x1=\"500\" y1=\"286\" x2=\"420\" y2=\"308\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<rect x=\"100\" y=\"400\" width=\"480\" height=\"80\" rx=\"12\" fill=\"var(--color-background-secondary)\" stroke=\"var(--color-border-tertiary)\" stroke-width=\"0.5\" style=\"fill:rgb(245, 244, 237);stroke:rgba(31, 30, 29, 0.15);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"340\" y=\"430\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">Your agency is protected<\/text>\n<text x=\"340\" y=\"452\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Scope defined \u00b7 Payments secured \u00b7 IP retained \u00b7 Exit planned<\/text>\n\n<line x1=\"340\" y1=\"366\" x2=\"340\" y2=\"398\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<\/svg>\n\n\n\n<p>The <strong>7-clause agency PSA stack<\/strong> strips a professional service agreement down to the seven sections that matter most for agency-client relationships. Every clause exists to solve a specific problem agencies face. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Clause 1: Scope of work<\/h3>\n\n\n\n<p>This is where most agency contracts fail. Not because the scope section is missing, but because it&#8217;s too vague.<\/p>\n\n\n\n<p>&#8220;Provide digital marketing services&#8221; is not a scope of work. Neither is &#8220;website redesign&#8221; or &#8220;brand strategy engagement.&#8221; These descriptions are invitations for the client to interpret the scope however they want.<\/p>\n\n\n\n<p>Your scope clause needs four things:<\/p>\n\n\n\n<p><strong>What you will deliver.<\/strong> List every deliverable by name, format, and quantity. Not &#8220;social media content&#8221; but &#8220;12 Instagram static posts per month, delivered as Canva files.&#8221;<\/p>\n\n\n\n<p><strong>What you will not deliver.<\/strong> Exclusions are as important as inclusions. If your website project doesn&#8217;t include copywriting, say so. If your SEO retainer doesn&#8217;t cover paid ads, write it down.<\/p>\n\n\n\n<p><strong>How many revision rounds are included.<\/strong> Two rounds per deliverable is standard. Anything beyond that gets billed hourly. State the rate.<\/p>\n\n\n\n<p><strong>Client responsibilities.<\/strong> What does the client need to provide, and by when? Brand guidelines, login credentials, content approvals, feedback on drafts. <\/p>\n\n\n\n<p>If the client doesn&#8217;t hold up their end, you need language that extends your timeline automatically.<\/p>\n\n\n\n<p>Here&#8217;s example scope language for a web design project:<\/p>\n\n\n\n<p><em>&#8220;Provider will design and develop a 10-page responsive website using WordPress. Deliverables include homepage design, 9 interior page templates, mobile optimization, and a 30-minute training session on the CMS. Two rounds of design revisions are included per page. Copywriting, stock photography, and ongoing maintenance are excluded from this engagement.&#8221;<\/em><\/p>\n\n\n\n<svg width=\"100%\" viewBox=\"0 0 680 300\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<text x=\"340\" y=\"28\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">Every scope clause needs these four elements<\/text>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"50\" width=\"290\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"62\" y=\"70\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:central\">\u2713  What you will deliver<\/text>\n<text x=\"62\" y=\"88\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:central\">Name, format, and quantity<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"350\" y=\"50\" width=\"290\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"372\" y=\"70\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:central\">\u2713  What you will not deliver<\/text>\n<text x=\"372\" y=\"88\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:central\">Exclusions prevent assumptions<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"126\" width=\"290\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"62\" y=\"146\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:central\">\u2713  Revision rounds included<\/text>\n<text x=\"62\" y=\"164\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:central\">2 rounds standard, hourly after<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"350\" y=\"126\" width=\"290\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"372\" y=\"146\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:central\">\u2713  Client responsibilities<\/text>\n<text x=\"372\" y=\"164\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:central\">Materials, feedback, deadlines<\/text>\n<\/g>\n\n<rect x=\"40\" y=\"210\" width=\"600\" height=\"64\" rx=\"10\" fill=\"var(--color-background-secondary)\" stroke=\"var(--color-border-tertiary)\" stroke-width=\"0.5\" style=\"fill:rgb(245, 244, 237);stroke:rgba(31, 30, 29, 0.15);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"340\" y=\"236\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">If a neutral third party read your scope clause,<\/text>\n<text x=\"340\" y=\"256\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">would they know exactly what&#8217;s included and what&#8217;s not?<\/text>\n<\/svg>\n\n\n\n<h3 class=\"wp-block-heading\">Clause 2: Change order process<\/h3>\n\n\n\n<p>Scope creep is not a client problem. It&#8217;s a contract problem.<\/p>\n\n\n\n<p>If your PSA doesn&#8217;t have a change order clause, you have no mechanism to say &#8220;that&#8217;s extra&#8221; without it feeling adversarial. The change order process makes scope changes routine, not confrontational.<\/p>\n\n\n\n<p>Your change order clause should specify that any request outside the defined scope requires a written change order before work begins. The change order should include the additional scope description, revised timeline, and additional cost. <\/p>\n\n\n\n<p>No verbal approvals. <\/p>\n\n\n\n<p>No &#8220;we&#8217;ll figure it out later.&#8221;<\/p>\n\n\n\n<p><strong>The line that saves agencies money:<\/strong> <em>&#8220;No work on any change request will begin until both Parties have signed the Change Order.&#8221;<\/em><\/p>\n\n\n\n<p>That single sentence turns every out-of-scope request into a business conversation instead of a surprise invoice.<\/p>\n\n\n\n<p>Here&#8217;s what this looks like in practice. A design agency is building a 10-page website. <\/p>\n\n\n\n<p>Three weeks in, the client asks to add an e-commerce section with 50 product pages. <\/p>\n\n\n\n<p>Without a change order clause, the agency either does the work for free (killing margin) or says &#8220;that&#8217;s extra&#8221; and the client feels blindsided.<\/p>\n\n\n\n<p>With a change order clause, the conversation is simple: &#8220;We&#8217;d love to add e-commerce. Per our agreement, I&#8217;ll send over a change order with the additional scope, timeline, and cost. <\/p>\n\n\n\n<p>Once you sign it, we&#8217;ll get started.&#8221;<\/p>\n\n\n\n<svg width=\"100%\" viewBox=\"0 0 680 260\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"8\" refY=\"5\" markerWidth=\"6\" markerHeight=\"6\" orient=\"auto-start-reverse\"><path d=\"M2 1L8 5L2 9\" fill=\"none\" stroke=\"context-stroke\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/marker>\n<mask id=\"imagine-text-gaps-ctwmpu\" maskUnits=\"userSpaceOnUse\"><rect x=\"0\" y=\"0\" width=\"680\" height=\"260\" fill=\"white\"\/><rect x=\"212.79197692871094\" y=\"12.305303573608398\" width=\"254.41598510742188\" height=\"21.472545623779297\" fill=\"black\" rx=\"2\"\/><rect x=\"64.27297973632812\" y=\"59.26372528076172\" width=\"81.45404052734375\" height=\"21.472543716430664\" fill=\"black\" rx=\"2\"\/><rect x=\"58.543487548828125\" y=\"78.44430541992188\" width=\"92.91301727294922\" height=\"19.11138916015625\" fill=\"black\" rx=\"2\"\/><rect x=\"205.39480590820312\" y=\"59.26372528076172\" width=\"119.21038055419922\" height=\"21.472543716430664\" fill=\"black\" rx=\"2\"\/><rect x=\"234.52186584472656\" y=\"78.44430541992188\" width=\"60.956268310546875\" height=\"19.11138916015625\" fill=\"black\" rx=\"2\"\/><rect x=\"358.5327453613281\" y=\"59.26372528076172\" width=\"132.9345932006836\" height=\"21.472543716430664\" fill=\"black\" rx=\"2\"\/><rect x=\"365.7453308105469\" y=\"78.44430541992188\" width=\"118.50941467285156\" height=\"19.11138916015625\" fill=\"black\" rx=\"2\"\/><rect x=\"545.0134887695312\" y=\"59.26372528076172\" width=\"69.97292709350586\" height=\"21.472543716430664\" fill=\"black\" rx=\"2\"\/><rect x=\"526.4932250976562\" y=\"78.44430541992188\" width=\"107.01354217529297\" height=\"19.11138916015625\" fill=\"black\" rx=\"2\"\/><rect x=\"276.9563903808594\" y=\"154.19422912597656\" width=\"126.08724212646484\" height=\"19.11138916015625\" fill=\"black\" rx=\"2\"\/><rect x=\"172.1653594970703\" y=\"174.19422912597656\" width=\"335.6692199707031\" height=\"19.11138916015625\" fill=\"black\" rx=\"2\"\/><rect x=\"175.08729553222656\" y=\"196.30531311035156\" width=\"329.82537841796875\" height=\"21.472543716430664\" fill=\"black\" rx=\"2\"\/><\/mask><\/defs>\n\n<text x=\"340\" y=\"28\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">How the change order process works<\/text>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"50\" width=\"130\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 236, 231);stroke:rgb(153, 60, 29);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"105\" y=\"70\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(113, 43, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">Client asks<\/text>\n<text x=\"105\" y=\"88\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(153, 60, 29);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">&#8220;Can we also&#8230;&#8221;<\/text>\n<\/g>\n\n<line x1=\"170\" y1=\"78\" x2=\"198\" y2=\"78\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"200\" y=\"50\" width=\"130\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(238, 237, 254);stroke:rgb(83, 74, 183);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"265\" y=\"70\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(60, 52, 137);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">You check scope<\/text>\n<text x=\"265\" y=\"88\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(83, 74, 183);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">In or out?<\/text>\n<\/g>\n\n<line x1=\"330\" y1=\"78\" x2=\"358\" y2=\"78\" marker-end=\"url(#arrow)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"360\" y=\"50\" width=\"130\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 238, 218);stroke:rgb(133, 79, 11);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"425\" y=\"70\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(99, 56, 6);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">Send change order<\/text>\n<text x=\"425\" y=\"88\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(133, 79, 11);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Scope + cost + time<\/text>\n<\/g>\n\n<line x1=\"490\" y1=\"78\" x2=\"518\" y2=\"78\" marker-end=\"url(#arrow)\" mask=\"url(#imagine-text-gaps-ctwmpu)\" style=\"fill:none;stroke:rgb(115, 114, 108);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"520\" y=\"50\" width=\"120\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"580\" y=\"70\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">Both sign<\/text>\n<text x=\"580\" y=\"88\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Then work begins<\/text>\n<\/g>\n\n<rect x=\"80\" y=\"140\" width=\"520\" height=\"90\" rx=\"10\" fill=\"var(--color-background-secondary)\" stroke=\"var(--color-border-tertiary)\" stroke-width=\"0.5\" style=\"fill:rgb(245, 244, 237);stroke:rgba(31, 30, 29, 0.15);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"340\" y=\"168\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Without this process<\/text>\n<text x=\"340\" y=\"188\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Agency does free work  \u2192  margin dies  \u2192  resentment builds<\/text>\n<text x=\"340\" y=\"212\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">The contract does the hard conversation for you.<\/text>\n<\/svg>\n\n\n\n<p>No awkwardness. No argument. The contract did the hard work for you.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Build your PSA in a tool that tracks every clause.<\/strong> <a href=\"https:\/\/upbase.io\/features\/docs\">Upbase<\/a> lets you store contract templates, link them to client projects, and track change orders alongside your task management, so nothing falls through the cracks.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Clause 3: Payment terms<\/h3>\n\n\n\n<p>Late payments are the number one cash flow killer for agencies under 20 people. Your PSA is your first line of defense.<\/p>\n\n\n\n<p><strong>Deposit before kickoff.<\/strong> 25-50% upfront is standard for project work. Retainers should be billed in advance of the service month. Never start work without money in the account.<\/p>\n\n\n\n<p><strong>Milestone-based payments.<\/strong> For projects over $10,000, tie payments to deliverables, not dates. &#8220;50% upon signing, 25% upon design approval, 25% upon launch&#8221; is clearer and more enforceable than &#8220;net 30.&#8221;<\/p>\n\n\n\n<p><strong>Late payment consequences.<\/strong> Include an interest rate on overdue invoices (1.5% per month is common) and the right to pause work if an invoice is more than 15 days past due.<\/p>\n\n\n\n<p><strong>Kill fee.<\/strong> If the client cancels mid-project, what happens? Your PSA should specify that all completed work gets paid for, plus a percentage of the remaining contract value (10-25% is typical).<\/p>\n\n\n\n<p>Payment terms are not negotiable details you figure out later. <\/p>\n\n\n\n<p>They belong in the contract from day one.<\/p>\n\n\n\n<p><strong>For retainer clients,<\/strong> your payment clause looks different. Bill at the beginning of each month for that month&#8217;s work. Include language that specifies unused hours don&#8217;t roll over (unless you want them to). <\/p>\n\n\n\n<p>And define what happens if the client wants to reduce retainer hours mid-engagement. <\/p>\n\n\n\n<p>Most agencies require 30 days&#8217; notice for retainer changes.<\/p>\n\n\n\n<svg width=\"100%\" viewBox=\"0 0 680 210\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"8\" refY=\"5\" markerWidth=\"6\" markerHeight=\"6\" orient=\"auto-start-reverse\"><path d=\"M2 1L8 5L2 9\" fill=\"none\" stroke=\"context-stroke\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/marker>\n<\/defs>\n\n<text x=\"340\" y=\"28\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">Recommended payment structure for projects over $10k<\/text>\n\n<line x1=\"80\" y1=\"90\" x2=\"600\" y2=\"90\" stroke=\"var(--color-border-secondary)\" stroke-width=\"1.5\" style=\"fill:rgb(0, 0, 0);stroke:rgba(31, 30, 29, 0.3);color:rgb(0, 0, 0);stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<circle cx=\"120\" cy=\"90\" r=\"6\" fill=\"#1D9E75\" style=\"fill:rgb(29, 158, 117);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<circle cx=\"340\" cy=\"90\" r=\"6\" fill=\"#1D9E75\" style=\"fill:rgb(29, 158, 117);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<circle cx=\"560\" cy=\"90\" r=\"6\" fill=\"#1D9E75\" style=\"fill:rgb(29, 158, 117);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"50\" y=\"110\" width=\"140\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"120\" y=\"130\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">50% deposit<\/text>\n<text x=\"120\" y=\"148\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Upon signing<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"270\" y=\"110\" width=\"140\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"340\" y=\"130\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">25% midpoint<\/text>\n<text x=\"340\" y=\"148\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Design approval<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"490\" y=\"110\" width=\"140\" height=\"56\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"560\" y=\"130\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central\">25% final<\/text>\n<text x=\"560\" y=\"148\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:central\">Upon launch<\/text>\n<\/g>\n\n<text x=\"120\" y=\"70\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Contract signed<\/text>\n<text x=\"340\" y=\"70\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Milestone hit<\/text>\n<text x=\"560\" y=\"70\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Project complete<\/text>\n\n<text x=\"340\" y=\"195\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Tie payments to deliverables, not dates. Never start work without money in the account.<\/text>\n<\/svg>\n\n\n\n<h3 class=\"wp-block-heading\">Clause 4: Intellectual property<\/h3>\n\n\n\n<p>IP is where agency contracts get messy fast, especially for agencies that build reusable frameworks, templates, or proprietary tools.<\/p>\n\n\n\n<p>The standard approach: <strong>the client owns the final deliverables upon full payment. You retain ownership of your pre-existing IP.<\/strong><\/p>\n\n\n\n<p>Your pre-existing IP includes any tools, templates, code libraries, frameworks, or methodologies you developed before or independent of the client engagement. <\/p>\n\n\n\n<p>The client gets a license to use those things as they appear in the deliverables, but they don&#8217;t own them outright.<\/p>\n\n\n\n<p>This matters. If you built a reporting dashboard template that you use across 15 clients, one client can&#8217;t claim exclusive ownership of it just because you used it on their project.<\/p>\n\n\n\n<p><strong>Portfolio rights<\/strong> also belong here. Most agencies want the right to showcase client work in case studies and portfolios. Include a default provision that allows this, with the option for the client to opt out in writing. Don&#8217;t make portfolio use something you have to ask for after the fact.<\/p>\n\n\n\n<svg width=\"100%\" viewBox=\"0 0 680 245.31\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<text x=\"340\" y=\"28\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">Who owns what after the project<\/text>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"50\" width=\"290\" height=\"150\" rx=\"12\" stroke-width=\"0.5\" style=\"fill:rgb(238, 237, 254);stroke:rgb(83, 74, 183);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"185\" y=\"76\" text-anchor=\"middle\" style=\"fill:rgb(60, 52, 137);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">Client owns<\/text>\n<text x=\"185\" y=\"100\" text-anchor=\"middle\" style=\"fill:rgb(83, 74, 183);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Final deliverables<\/text>\n<text x=\"185\" y=\"118\" text-anchor=\"middle\" style=\"fill:rgb(83, 74, 183);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Custom designs and assets<\/text>\n<text x=\"185\" y=\"136\" text-anchor=\"middle\" style=\"fill:rgb(83, 74, 183);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Content created for the project<\/text>\n<text x=\"185\" y=\"160\" text-anchor=\"middle\" style=\"fill:rgb(83, 74, 183);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">\u2191 Only after full payment<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"350\" y=\"50\" width=\"290\" height=\"150\" rx=\"12\" stroke-width=\"0.5\" style=\"fill:rgb(225, 245, 238);stroke:rgb(15, 110, 86);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"495\" y=\"76\" text-anchor=\"middle\" style=\"fill:rgb(8, 80, 65);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">Agency retains<\/text>\n<text x=\"495\" y=\"100\" text-anchor=\"middle\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Pre-existing templates<\/text>\n<text x=\"495\" y=\"118\" text-anchor=\"middle\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Code libraries and frameworks<\/text>\n<text x=\"495\" y=\"136\" text-anchor=\"middle\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Proprietary methodologies<\/text>\n<text x=\"495\" y=\"160\" text-anchor=\"middle\" style=\"fill:rgb(15, 110, 86);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Portfolio usage rights<\/text>\n<\/g>\n\n<rect x=\"120\" y=\"212\" width=\"440\" height=\"1\" fill=\"var(--color-border-tertiary)\" style=\"fill:rgba(31, 30, 29, 0.15);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"340\" y=\"232\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">Client gets a license to use agency tools as delivered. Not ownership.<\/text>\n<\/svg>\n\n\n\n<h3 class=\"wp-block-heading\">Clause 5: Confidentiality<\/h3>\n\n\n\n<p>You&#8217;ll see client financials, marketing strategies, login credentials, and internal communications. <\/p>\n\n\n\n<p>They&#8217;ll see your processes, pricing models, and team structure. Both sides need protection.<\/p>\n\n\n\n<p>Your confidentiality clause should define what counts as confidential information, state that both parties will keep it private, and list the standard exceptions (publicly available information, independently developed information, and legally required disclosures).<\/p>\n\n\n\n<p><strong>Set a duration.<\/strong> Confidentiality obligations should survive the contract for 2-3 years. Indefinite confidentiality clauses are hard to enforce and make clients nervous.<\/p>\n\n\n\n<p>One thing agencies often miss: <strong>make sure your confidentiality clause doesn&#8217;t accidentally prevent you from using the client&#8217;s brand name.<\/strong> If your confidentiality language is too broad, referencing the client in your portfolio could technically violate it. <\/p>\n\n\n\n<p>That&#8217;s why the portfolio rights clause in the IP section matters.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Clause 6: Termination<\/h3>\n\n\n\n<p>Every contract needs an exit door. The question is whether that door leads to an orderly transition or a legal fight.<\/p>\n\n\n\n<p>Your termination clause needs three scenarios:<\/p>\n\n\n\n<p><strong>Termination for cause.<\/strong> Either party can end the agreement if the other side materially breaches the contract and doesn&#8217;t fix it within a cure period (10-15 business days is standard). Non-payment counts as a material breach.<\/p>\n\n\n\n<p><strong>Termination for convenience.<\/strong> Either party can walk away for any reason with 30 days&#8217; written notice. This protects both sides. Clients aren&#8217;t locked into an agency they&#8217;re unhappy with, and agencies aren&#8217;t stuck with a client who&#8217;s become toxic.<\/p>\n\n\n\n<p><strong>What happens after termination.<\/strong> The client pays for all work completed through the termination date. The agency delivers all completed and paid-for work. Both sides return each other&#8217;s confidential information. Pre-existing IP stays with the agency.<\/p>\n\n\n\n<p><strong>The clause that protects your team&#8217;s time:<\/strong> <em>&#8220;Upon termination, Client shall pay Provider for all Services performed and expenses incurred up to the effective date of termination.&#8221;<\/em><\/p>\n\n\n\n<p>Without this language, you risk eating the cost of work already done.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3-1024x559.png\" alt=\"\" class=\"wp-image-12343\" srcset=\"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3-1024x559.png 1024w, https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3-300x164.png 300w, https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3-768x419.png 768w, https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3.png 1408w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Clause 7: Liability and indemnification<\/h3>\n\n\n\n<p>This is the &#8220;what happens when things go wrong&#8221; clause. It&#8217;s not fun to write, but it&#8217;s critical.<\/p>\n\n\n\n<p><strong>Limitation of liability.<\/strong> Cap your total liability at the total fees paid under the agreement. Without this cap, a client could theoretically sue you for damages that far exceed what they paid you. <\/p>\n\n\n\n<p>For a $15,000 website project, you don&#8217;t want to be on the hook for $500,000 in &#8220;lost revenue&#8221; because the site went down for a day.<\/p>\n\n\n\n<p><strong>Indemnification.<\/strong> Each party agrees to cover the other&#8217;s losses if their own negligence or breach causes a problem. If the client gives you copyrighted images and you get sued, the client covers your legal costs. <\/p>\n\n\n\n<p>If you deliver code that infringes on a third party&#8217;s patent, you cover the client&#8217;s costs.<\/p>\n\n\n\n<p><strong>No indirect damages.<\/strong> Exclude consequential, incidental, and punitive damages. You&#8217;re responsible for delivering what you promised, not for every downstream business impact the client can imagine. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to write scope language that prevents scope creep<\/h2>\n\n\n\n<p>Scope creep doesn&#8217;t start when a client asks for extra work. It starts when your scope language leaves room for interpretation.<\/p>\n\n\n\n<svg width=\"100%\" viewBox=\"0 0 680 287.31\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<text x=\"340\" y=\"28\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">Weak scope vs. strong scope<\/text>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"50\" width=\"600\" height=\"80\" rx=\"10\" stroke-width=\"0.5\" style=\"fill:rgb(252, 235, 235);stroke:rgb(163, 45, 45);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"60\" y=\"76\" style=\"fill:rgb(121, 31, 31);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:auto\">\u2717  Weak<\/text>\n<text x=\"60\" y=\"98\" style=\"fill:rgb(163, 45, 45);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:auto\">&#8220;Provider will manage Client&#8217;s social media presence<\/text>\n<text x=\"60\" y=\"114\" style=\"fill:rgb(163, 45, 45);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:auto\">across relevant platforms.&#8221;<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"150\" width=\"600\" height=\"100\" rx=\"10\" stroke-width=\"0.5\" style=\"fill:rgb(234, 243, 222);stroke:rgb(59, 109, 17);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"60\" y=\"176\" style=\"fill:rgb(39, 80, 10);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:auto\">\u2713  Strong<\/text>\n<text x=\"60\" y=\"198\" style=\"fill:rgb(59, 109, 17);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:auto\">&#8220;Provider will create and publish 12 Instagram posts and 8 LinkedIn<\/text>\n<text x=\"60\" y=\"214\" style=\"fill:rgb(59, 109, 17);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:auto\">posts per month. Each post includes one custom graphic and a caption<\/text>\n<text x=\"60\" y=\"230\" style=\"fill:rgb(59, 109, 17);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:auto\">of up to 200 words. Community management and paid ads are excluded.&#8221;<\/text>\n<\/g>\n\n<text x=\"340\" y=\"274\" text-anchor=\"middle\" style=\"fill:rgb(61, 61, 58);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:middle;dominant-baseline:auto\">The weak version invites &#8220;Does that include responding to DMs?&#8221; The strong version already answered it.<\/text>\n<\/svg>\n\n\n\n<p>Here are three rules for writing scope that holds up:<\/p>\n\n\n\n<p><strong>Use quantities, not categories.<\/strong> &#8220;Social media management&#8221; can mean anything. &#8220;8 LinkedIn posts per month, each with a custom graphic and 150-word caption&#8221; cannot be misinterpreted.<\/p>\n\n\n\n<p><strong>Define the process, not just the output.<\/strong> If your process includes a discovery phase, wireframing, two rounds of feedback, and a launch checklist, write each step into the scope. <\/p>\n\n\n\n<p>When a client skips discovery and wants to jump straight to design, you can point to the contract and explain why the process exists.<\/p>\n\n\n\n<p><strong>List what&#8217;s excluded.<\/strong> For every deliverable you include, there&#8217;s an adjacent service clients assume is included. Website design projects attract requests for copywriting, SEO, ongoing hosting, and content updates. <\/p>\n\n\n\n<p>Call out each exclusion. <\/p>\n\n\n\n<p>It&#8217;s not negative. <\/p>\n\n\n\n<p>It&#8217;s clear.<\/p>\n\n\n\n<p>The best scope language answers this question: <strong>if a neutral third party read this clause, would they know exactly what&#8217;s included and what&#8217;s not?<\/strong><\/p>\n\n\n\n<p>If the answer is no, rewrite it.<\/p>\n\n\n\n<p>Here&#8217;s a before-and-after to show the difference:<\/p>\n\n\n\n<p><strong>Weak scope language:<\/strong> <em>&#8220;Provider will manage Client&#8217;s social media presence across relevant platforms.&#8221;<\/em><\/p>\n\n\n\n<p><strong>Strong scope language:<\/strong> <em>&#8220;Provider will create and publish 12 Instagram posts and 8 LinkedIn posts per month. Each post includes one custom graphic (1080x1080px for Instagram, 1200x627px for LinkedIn) and a caption of up to 200 words. Community management, paid advertising, influencer outreach, and platform analytics reporting are excluded.&#8221;<\/em><\/p>\n\n\n\n<p>The weak version invites the question &#8220;Does that include responding to DMs?&#8221; The strong version already answered it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Common PSA mistakes that cost agencies money<\/h2>\n\n\n\n<svg width=\"100%\" viewBox=\"0 0 680 340\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<text x=\"340\" y=\"28\" text-anchor=\"middle\" style=\"fill:rgb(20, 20, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:auto\">5 PSA mistakes that cost agencies money<\/text>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"50\" width=\"600\" height=\"44\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 236, 231);stroke:rgb(153, 60, 29);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"62\" y=\"76\" dominant-baseline=\"central\" style=\"fill:rgb(113, 43, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:central\">1<\/text>\n<text x=\"86\" y=\"76\" dominant-baseline=\"central\" style=\"fill:rgb(153, 60, 29);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:central\">Using the same contract for project work and retainer work<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"106\" width=\"600\" height=\"44\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 236, 231);stroke:rgb(153, 60, 29);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"62\" y=\"132\" dominant-baseline=\"central\" style=\"fill:rgb(113, 43, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:central\">2<\/text>\n<text x=\"86\" y=\"132\" dominant-baseline=\"central\" style=\"fill:rgb(153, 60, 29);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:central\">No cure period before termination \u2014 one missed deadline ends the deal<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"162\" width=\"600\" height=\"44\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 236, 231);stroke:rgb(153, 60, 29);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"62\" y=\"188\" dominant-baseline=\"central\" style=\"fill:rgb(113, 43, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:central\">3<\/text>\n<text x=\"86\" y=\"188\" dominant-baseline=\"central\" style=\"fill:rgb(153, 60, 29);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:central\">Vague IP language \u2014 client claims your pre-existing frameworks<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"218\" width=\"600\" height=\"44\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 236, 231);stroke:rgb(153, 60, 29);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"62\" y=\"244\" dominant-baseline=\"central\" style=\"fill:rgb(113, 43, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:central\">4<\/text>\n<text x=\"86\" y=\"244\" dominant-baseline=\"central\" style=\"fill:rgb(153, 60, 29);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:central\">No client obligations section \u2014 you absorb delays they cause<\/text>\n<\/g>\n\n<g style=\"fill:rgb(0, 0, 0);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\">\n<rect x=\"40\" y=\"274\" width=\"600\" height=\"44\" rx=\"8\" stroke-width=\"0.5\" style=\"fill:rgb(250, 236, 231);stroke:rgb(153, 60, 29);color:rgb(0, 0, 0);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto\"\/>\n<text x=\"62\" y=\"300\" dominant-baseline=\"central\" style=\"fill:rgb(113, 43, 19);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:14px;font-weight:500;text-anchor:start;dominant-baseline:central\">5<\/text>\n<text x=\"86\" y=\"300\" dominant-baseline=\"central\" style=\"fill:rgb(153, 60, 29);stroke:none;color:rgb(0, 0, 0);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, sans-serif;font-size:12px;font-weight:400;text-anchor:start;dominant-baseline:central\">Late payment clause with no teeth \u2014 interest, pause rights, or holdbacks<\/text>\n<\/g>\n<\/svg>\n\n\n\n<p><strong>Using the same contract for project work and retainer work.<\/strong> A project PSA and a retainer PSA need different payment structures, different scope definitions, and different termination terms. A project ends when deliverables are complete. A retainer renews monthly. Don&#8217;t force one structure to do both jobs.<\/p>\n\n\n\n<p><strong>No cure period before termination.<\/strong> If your contract allows immediate termination for any breach, a client could argue that a missed deadline (even by a day) is grounds to walk away without paying. <\/p>\n\n\n\n<p>Always include a cure period that gives both sides time to fix problems.<\/p>\n\n\n\n<p><strong>Vague IP language around pre-existing tools.<\/strong> If you use Figma templates, code libraries, or strategy frameworks across clients, your PSA must explicitly carve those out. <\/p>\n\n\n\n<p>Otherwise, a client could claim ownership of tools you use with every other client.<\/p>\n\n\n\n<p><strong>Forgetting the &#8220;client obligations&#8221; section.<\/strong> Your timeline depends on the client providing feedback, approvals, and materials on time. If your PSA doesn&#8217;t address what happens when the client goes silent for three weeks, you absorb the cost of the delay.<\/p>\n\n\n\n<p><strong>No late payment teeth.<\/strong> A late payment clause without consequences is decoration. Include interest charges, the right to pause work, and (for extreme cases) the right to withhold deliverables until payment is received.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tools for creating and managing your PSAs<\/h2>\n\n\n\n<p>You don&#8217;t need a lawyer to draft every contract from scratch. Start with a solid template, customize it to your engagement, and have a lawyer review your first version.<\/p>\n\n\n\n<p>Here&#8217;s what the typical agency stack looks like for contract management:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tool<\/th><th>What it does<\/th><th>Best for<\/th><\/tr><\/thead><tbody><tr><td>PandaDoc<\/td><td>Document creation, e-signatures, templates<\/td><td>Agencies that want signing workflows built in<\/td><\/tr><tr><td>DocuSign<\/td><td>E-signatures and contract tracking<\/td><td>Agencies focused on getting contracts signed fast<\/td><\/tr><tr><td>HelloSign (Dropbox Sign)<\/td><td>Simple e-signature workflows<\/td><td>Small teams that want something lightweight<\/td><\/tr><tr><td>Google Docs + template<\/td><td>Free, collaborative editing<\/td><td>Solo consultants and very early-stage agencies<\/td><\/tr><tr><td><a href=\"https:\/\/upbase.io\/features\/docs\">Upbase<\/a><\/td><td>Docs, tasks, and client management in one workspace<\/td><td>Agencies that want contracts linked to project delivery<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>The tool matters less than the habit. Pick one and use it for every engagement.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Stop managing contracts in one tool and projects in another.<\/strong> <a href=\"https:\/\/upbase.io\/features\/client-management\">Upbase<\/a> keeps your client agreements, project tasks, timelines, and communication in a single workspace. No more digging through email threads to find the SOW a client approved six months ago. <a href=\"https:\/\/upbase.io\/features\/client-management\">See how it works \u2192<\/a><\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-4-1024x559.png\" alt=\"\" class=\"wp-image-12344\" srcset=\"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-4-1024x559.png 1024w, https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-4-300x164.png 300w, https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-4-768x419.png 768w, https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-4.png 1408w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Free professional service agreement template<\/h2>\n\n\n\n<p>We built a fill-in-the-blank PSA template designed specifically for agencies and service teams. It covers all seven clauses in the agency PSA stack, with placeholder text you can customize in 15 minutes.<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/docs.google.com\/document\/d\/1G7-GMYOyWHGAKwbdinU58pdf86RfGO1h\/edit?usp=sharing&amp;ouid=113834963152940303637&amp;rtpof=true&amp;sd=true\" target=\"_blank\" rel=\"noreferrer noopener\">Download the free professional service agreement template \u2192<\/a><\/strong><\/p>\n\n\n\n<p>The template includes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Scope of work section with deliverables table, revision limits, and exclusions<\/li>\n\n\n\n<li>Change order clause with sign-off requirement<\/li>\n\n\n\n<li>Payment schedule with deposit, milestones, and late payment penalties<\/li>\n\n\n\n<li>IP ownership and pre-existing IP carve-out<\/li>\n\n\n\n<li>Confidentiality with defined duration<\/li>\n\n\n\n<li>Termination for cause and convenience with cure periods<\/li>\n\n\n\n<li>Liability cap and mutual indemnification<\/li>\n<\/ul>\n\n\n\n<p>Customize it to your engagement, then have a lawyer review your first version. After that, you can reuse it across clients with minor adjustments.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<p><strong>What is the difference between a professional service agreement and a contract?<\/strong><\/p>\n\n\n\n<p>A professional service agreement is a type of contract. The term &#8220;PSA&#8221; specifically refers to contracts that govern professional or specialized services, as opposed to product sales, employment, or real estate transactions. Every PSA is a contract, but not every contract is a PSA.<\/p>\n\n\n\n<p><strong>Do I need a lawyer to write a professional service agreement?<\/strong><\/p>\n\n\n\n<p>You don&#8217;t need a lawyer to draft the initial version. Start with a template, customize it to your agency&#8217;s services, and then have a lawyer review it once. That single review typically costs $500-1,500 and gives you a reusable document you can adapt for every future client.<\/p>\n\n\n\n<p><strong>How long should a professional service agreement be?<\/strong><\/p>\n\n\n\n<p>For most agency engagements, 4-8 pages is sufficient. Enterprise contracts with complex compliance requirements may run longer. The goal is completeness without unnecessary complexity. If your PSA is 20 pages, most clients won&#8217;t read it, which defeats the purpose.<\/p>\n\n\n\n<p><strong>Can I use one PSA for all my clients?<\/strong><\/p>\n\n\n\n<p>Use the same template, but customize the scope of work, deliverables, payment terms, and timeline for each engagement. The legal clauses (IP, confidentiality, liability, termination) can stay largely the same across clients. That&#8217;s the advantage of having a well-built template.<\/p>\n\n\n\n<p><strong>What happens if a client won&#8217;t sign a professional service agreement?<\/strong><\/p>\n\n\n\n<p>Don&#8217;t start work. A client who refuses to sign a contract is telling you they want the flexibility to change the rules mid-engagement. That&#8217;s a red flag, not a negotiation tactic. Every serious business expects contracts. If they push back on specific clauses, negotiate those clauses. If they refuse the concept of a contract entirely, walk away. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>A professional service agreement (PSA) defines the rules of engagement between your agency and every client you take on. Get it right, and you have a document that prevents scope creep, guarantees payment, and gives you legal ground to stand on when things go sideways. Most agencies use a generic contract they found online, swap &#8230; <a title=\"How to write a professional service agreement that actually protects your agency\" class=\"read-more\" href=\"https:\/\/upbase.io\/blog\/professional-service-agreement\/\" aria-label=\"More on How to write a professional service agreement that actually protects your agency\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":12343,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"generate_page_header":"","footnotes":""},"categories":[1],"tags":[47,30,46,48,49],"class_list":["post-12331","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-agency-contracts","tag-agency-profitability","tag-professional-service-agreement","tag-scope-creep","tag-statement-of-work"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Professional service agreement: the agency owner&#039;s guide<\/title>\n<meta name=\"description\" content=\"Fix your professional service agreement to stop scope creep and get paid on time. This is the guide for agency owners tired of losing money on bad contracts.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/upbase.io\/blog\/professional-service-agreement\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Professional service agreement: the agency owner&#039;s guide\" \/>\n<meta property=\"og:description\" content=\"Fix your professional service agreement to stop scope creep and get paid on time. This is the guide for agency owners tired of losing money on bad contracts.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/upbase.io\/blog\/professional-service-agreement\/\" \/>\n<meta property=\"og:site_name\" content=\"The Upbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-05T02:57:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-05T15:33:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1408\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Paul Wilson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paul Wilson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/\"},\"author\":{\"name\":\"Paul Wilson\",\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/#\\\/schema\\\/person\\\/52707528eb779a2887f172af09c4aa39\"},\"headline\":\"How to write a professional service agreement that actually protects your agency\",\"datePublished\":\"2026-04-05T02:57:33+00:00\",\"dateModified\":\"2026-04-05T15:33:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/\"},\"wordCount\":3525,\"publisher\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/upbase.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/PSA-3.png\",\"keywords\":[\"agency contracts\",\"agency profitability\",\"professional service agreement\",\"scope creep\",\"statement of work\"],\"articleSection\":[\"Software\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/\",\"url\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/\",\"name\":\"Professional service agreement: the agency owner's guide\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/upbase.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/PSA-3.png\",\"datePublished\":\"2026-04-05T02:57:33+00:00\",\"dateModified\":\"2026-04-05T15:33:40+00:00\",\"description\":\"Fix your professional service agreement to stop scope creep and get paid on time. This is the guide for agency owners tired of losing money on bad contracts.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/#primaryimage\",\"url\":\"https:\\\/\\\/upbase.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/PSA-3.png\",\"contentUrl\":\"https:\\\/\\\/upbase.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/PSA-3.png\",\"width\":1408,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/professional-service-agreement\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/upbase.io\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to write a professional service agreement that actually protects your agency\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/upbase.io\\\/blog\\\/\",\"name\":\"The Upbase Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/upbase.io\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/#organization\",\"name\":\"The Upbase Blog\",\"url\":\"https:\\\/\\\/upbase.io\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/upbase.io\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/Upbase_logo.png\",\"contentUrl\":\"https:\\\/\\\/upbase.io\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/Upbase_logo.png\",\"width\":830,\"height\":200,\"caption\":\"The Upbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/upbase.io\\\/blog\\\/#\\\/schema\\\/person\\\/52707528eb779a2887f172af09c4aa39\",\"name\":\"Paul Wilson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d72f05cc42ab68f0c6fdf4e567dd62345aa01dc2628d66e69643a56708cf685b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d72f05cc42ab68f0c6fdf4e567dd62345aa01dc2628d66e69643a56708cf685b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d72f05cc42ab68f0c6fdf4e567dd62345aa01dc2628d66e69643a56708cf685b?s=96&d=mm&r=g\",\"caption\":\"Paul Wilson\"},\"sameAs\":[\"https:\\\/\\\/upbase.io\\\/blog\"],\"url\":\"https:\\\/\\\/upbase.io\\\/blog\\\/author\\\/admin_upbase\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Professional service agreement: the agency owner's guide","description":"Fix your professional service agreement to stop scope creep and get paid on time. This is the guide for agency owners tired of losing money on bad contracts.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/upbase.io\/blog\/professional-service-agreement\/","og_locale":"en_US","og_type":"article","og_title":"Professional service agreement: the agency owner's guide","og_description":"Fix your professional service agreement to stop scope creep and get paid on time. This is the guide for agency owners tired of losing money on bad contracts.","og_url":"https:\/\/upbase.io\/blog\/professional-service-agreement\/","og_site_name":"The Upbase Blog","article_published_time":"2026-04-05T02:57:33+00:00","article_modified_time":"2026-04-05T15:33:40+00:00","og_image":[{"width":1408,"height":768,"url":"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3.png","type":"image\/png"}],"author":"Paul Wilson","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Paul Wilson","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/#article","isPartOf":{"@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/"},"author":{"name":"Paul Wilson","@id":"https:\/\/upbase.io\/blog\/#\/schema\/person\/52707528eb779a2887f172af09c4aa39"},"headline":"How to write a professional service agreement that actually protects your agency","datePublished":"2026-04-05T02:57:33+00:00","dateModified":"2026-04-05T15:33:40+00:00","mainEntityOfPage":{"@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/"},"wordCount":3525,"publisher":{"@id":"https:\/\/upbase.io\/blog\/#organization"},"image":{"@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/#primaryimage"},"thumbnailUrl":"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3.png","keywords":["agency contracts","agency profitability","professional service agreement","scope creep","statement of work"],"articleSection":["Software"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/","url":"https:\/\/upbase.io\/blog\/professional-service-agreement\/","name":"Professional service agreement: the agency owner's guide","isPartOf":{"@id":"https:\/\/upbase.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/#primaryimage"},"image":{"@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/#primaryimage"},"thumbnailUrl":"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3.png","datePublished":"2026-04-05T02:57:33+00:00","dateModified":"2026-04-05T15:33:40+00:00","description":"Fix your professional service agreement to stop scope creep and get paid on time. This is the guide for agency owners tired of losing money on bad contracts.","breadcrumb":{"@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/upbase.io\/blog\/professional-service-agreement\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/#primaryimage","url":"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3.png","contentUrl":"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2026\/04\/PSA-3.png","width":1408,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/upbase.io\/blog\/professional-service-agreement\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/upbase.io\/blog\/"},{"@type":"ListItem","position":2,"name":"How to write a professional service agreement that actually protects your agency"}]},{"@type":"WebSite","@id":"https:\/\/upbase.io\/blog\/#website","url":"https:\/\/upbase.io\/blog\/","name":"The Upbase Blog","description":"","publisher":{"@id":"https:\/\/upbase.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/upbase.io\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/upbase.io\/blog\/#organization","name":"The Upbase Blog","url":"https:\/\/upbase.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/upbase.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2021\/04\/Upbase_logo.png","contentUrl":"https:\/\/upbase.io\/blog\/wp-content\/uploads\/2021\/04\/Upbase_logo.png","width":830,"height":200,"caption":"The Upbase Blog"},"image":{"@id":"https:\/\/upbase.io\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/upbase.io\/blog\/#\/schema\/person\/52707528eb779a2887f172af09c4aa39","name":"Paul Wilson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d72f05cc42ab68f0c6fdf4e567dd62345aa01dc2628d66e69643a56708cf685b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d72f05cc42ab68f0c6fdf4e567dd62345aa01dc2628d66e69643a56708cf685b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d72f05cc42ab68f0c6fdf4e567dd62345aa01dc2628d66e69643a56708cf685b?s=96&d=mm&r=g","caption":"Paul Wilson"},"sameAs":["https:\/\/upbase.io\/blog"],"url":"https:\/\/upbase.io\/blog\/author\/admin_upbase\/"}]}},"_links":{"self":[{"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/posts\/12331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/comments?post=12331"}],"version-history":[{"count":0,"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/posts\/12331\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/media\/12343"}],"wp:attachment":[{"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/media?parent=12331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/categories?post=12331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/upbase.io\/blog\/wp-json\/wp\/v2\/tags?post=12331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}