先给结论:合同防的不是坏人,是"说不清"
软件开发项目闹到翻脸,绝大多数不是因为谁想坑谁,而是因为当初没有把话说清楚。"功能做好一点""上线能用就行""有问题随时找我"——这三句话在签的时候听着都很舒服,三个月后全是纠纷源头。
这篇文章不聊法条,只讲实操。我们把一份能用的软件开发合同拆成 12 个必填字段,每个字段告诉你该怎么写、写漏了会发生什么,并给出可以直接抄进合同的句式。你可以拿这份清单对着任何一家公司的合同逐条核。
12 个必填字段,一条一条核对
下表是这份清单的核心。左列是字段名,中列是合格的写法,右列是写漏之后最常见的后果。
| 字段 | 合格写法 | 写漏了会怎样 |
|---|---|---|
| 功能范围 | 附《功能清单》作为合同附件,逐条编号 | "做个商城"到底含不含分销,各说各话 |
| 页面与端数量 | 写明几个页面、几端(小程序/H5/后台) | 做完 8 个页面,甲方以为应该有 20 个 |
| 设计稿确认方式 | 原型或设计稿签字确认后不得整体推翻 | 做到一半推倒重来,工期和成本全乱 |
| 工期与起算日 | 写"自资料齐备之日起 X 个工作日" | 甲方资料拖一个月,工期仍算开发方头上 |
| 付款节点 | 分期并写明每期触发条件 | 催款与拒付的拉锯战 |
| 需求变更规则 | 免费变更额度 + 超出后的计价方式 | 变更无底洞,或者改一点就被加价 |
| 验收标准 | Bug 分级 + 各级数量阈值 + 验收时限 | 尾款永远收不回 / 永远付不出 |
| 源码交付 | 写明"完整未加密源码"及交付方式 | 只拿到使用权,二次开发受限 |
| 知识产权 | 写明著作权归甲方、开发方不得复用 | 你的业务逻辑被做成模板卖给别人 |
| 服务器与域名 | 写明账号归属、谁付费、到期提醒义务 | 服务器在开发方手里,续费时被卡 |
| 维护期与范围 | 免费几个月、含什么、响应时效 | 上线后 bug 没人管,或者什么都要收费 |
| 违约责任 | 延迟每日按合同总额万分之几计,逾期多少天可解约 | 写"按合同法执行",等于没写 |
付款节点:三种模型,按项目规模选
付款是合同里最容易谈崩的一条。常见的三种模型适用情况完全不同,选错就会有一方吃亏。
| 模型 | 比例 | 适合的项目 | 风险点 |
|---|---|---|---|
| 三段式(3-4-3) | 签约 30% / 上线 40% / 验收 30% | 1 万以下、工期 1 个月内 | 中间没有节点,甲方对进度没抓手 |
| 四段式(3-3-3-1) | 签约 30% / 原型 30% / 上线 30% / 维护期满 10% | 1 万-5 万、工期 1-3 个月 | 尾款 10% 要等维护期结束,需写明时限 |
| 里程碑制 | 按模块交付逐笔结算 | 5 万以上、分期交付 | 每个里程碑的验收标准必须单独写清 |
把三种模型落到具体金额上,是这样拆的:
| 合同总额 | 签约(30%) | 原型确认(30%) | 上线(30%) | 维护期满(10%) |
|---|---|---|---|---|
| 6,000 元 | 1,800 元 | 1,800 元 | 1,800 元 | 600 元 |
| 12,000 元 | 3,600 元 | 3,600 元 | 3,600 元 | 1,200 元 |
| 30,000 元 | 9,000 元 | 9,000 元 | 9,000 元 | 3,000 元 |
可以直接抄的句式:"甲方于本合同签订之日起 3 个工作日内支付合同总额的 30%,即人民币 XXXX 元;原型设计经甲方书面确认后 3 个工作日内支付 30%;系统部署至生产环境并可正常访问后 3 个工作日内支付 30%;免费维护期届满后 3 个工作日内支付剩余 10%。"
需求变更:把"免费额度"和"超出单价"都写死
需求一定会变,这是软件项目的常态。问题不在于能不能改,而在于改到什么程度开始算钱。合同里必须同时写两个数字:免费变更额度、超出后的单价。
常见的约定方式有两种。一种是按次数:含 3 次免费变更(每次不超过 2 个工作日的工作量),超出部分按 800-1200 元/人天计。一种是按工时:每月累计免费变更不超过 8 个工时,超出按 150-200 元/小时计。
两种都可以,但必须配一个变更单流程:任何变更都要写清楚改什么、影响多少工期、多少钱,双方签字后才开工。没有书面变更单的口头要求,做完了对方不认账,这是最常见的纠纷。
可以直接抄的句式:"本合同含 3 次免费需求变更,单次变更工作量不超过 2 个工作日。超出部分按人民币 1000 元/人天计算,变更需经双方签署《需求变更确认单》后方可执行,工期相应顺延。"
验收标准:Bug 分四级,每级给数量阈值
"开发完成"这四个字不能出现在合同里,因为它没有定义。可执行的做法是把 Bug 分级,规定每级允许残留多少个。
| 级别 | 定义 | 验收时允许残留 | 修复时限 |
|---|---|---|---|
| 致命 | 系统无法运行、数据丢失、支付错误 | 0 个 | 4 小时内响应 |
| 严重 | 主流程走不通、核心功能不可用 | 0 个 | 1 个工作日内 |
| 一般 | 功能可用但有瑕疵、显示错位 | 不超过 5 个 | 3 个工作日内 |
| 建议 | 体验优化、文案调整 | 不限,列入二期 | 维护期内处理 |
同时必须写验收时限:甲方在收到验收通知后 5 个工作日内反馈,逾期未反馈视为验收通过。这一条保护的是双方——既防止甲方无限期拖延压着尾款,也防止开发方交付半成品就催款。
违约条款:写"按合同法执行"等于没写
这是最常被忽略、真出事时最要命的一条。可执行的违约条款必须带三个数字:每日违约金比例、累计上限、解约触发天数。
| 情形 | 常见约定 | 示例(合同 12,000 元) |
|---|---|---|
| 开发方延迟交付 | 每日按合同总额万分之五 | 每日 6 元,累计不超过总额 10%(1,200 元) |
| 延迟超过 30 天 | 甲方有权解除合同,开发方退还已付款 | 退已付款项 |
| 甲方逾期付款 | 每日按应付金额万分之五 | 逾期 3,600 元时每日 1.8 元 |
| 甲方逾期付款超 15 天 | 开发方有权暂停开发,工期顺延 | —— |
注意违约金的比例是双向对等的。只约束一方的违约条款,谈的时候就要提出来改。另外,因甲方未及时提供资料、未及时确认设计稿导致的延误,要在合同里写明工期顺延,这一条和违约金同等重要。
源码与知识产权:三种写法差别巨大
同样的"源码交付",措辞不同,你拿到的东西完全不同:
| 写法 | 你实际拿到的 | 能不能二次开发 |
|---|---|---|
| "甲方享有使用权" | 部署好的一套运行程序 | 不能,改一行都要找原开发方 |
| "交付源码" | 代码文件,但可能不含部署脚本和文档 | 能,但换人接手要重新摸索 |
| "交付完整未加密源码及部署文档,著作权归甲方,开发方不得向第三方提供含甲方业务逻辑的代码" | 全部 | 能,可自行或委托他人维护 |
可以直接抄的句式:"乙方应于验收通过后 3 个工作日内,向甲方交付本项目完整未加密源代码、数据库结构说明及部署文档。本项目成果的著作权自交付之日起归甲方所有,乙方不得将包含甲方业务逻辑的代码用于其他客户项目。"
合同里出现这 5 句话,当场提出来改
上面讲的是该写什么,这一节反过来讲:看到下面这五句话,不要签,先谈。
| 原话 | 问题在哪 | 改成什么 |
|---|---|---|
| "功能按需开发" | 没有范围,做多少全凭理解 | 附《功能清单》,逐条编号 |
| "验收以甲方满意为准" | "满意"无法量化,尾款拿不回来 | Bug 分级表 + 5 个工作日验收时限 |
| "技术支持另行收费" | 没写范围和单价,等于空白支票 | 写明免费维护几个月、超出如何计价 |
| "不含第三方费用" | 没说清有哪些第三方、各多少钱 | 列出服务器、域名、认证、短信、支付费率明细 |
| "最终解释权归乙方" | 这一条本身就不具效力,出现即警示 | 删除;争议条款改为双方协商或仲裁 |
其中"不含第三方费用"这一条要单独说:它本身不是坑,坑在没有列清单。一份规范的做法是把它展开成一张表——服务器 800-2000 元/年、域名 60-120 元/年、企业认证 300 元/年、短信 300-800 元/年起、微信支付费率 0.6%、SSL 证书 0-1000 元/年。这些是甲方实打实要付的钱,列清楚反而显得开发方坦诚。不列,等上线时一项项冒出来,信任就没了。
三个真实纠纷,都栽在同一件事上
以下案例已做脱敏处理,不出现客户名称与项目名。
案例一:12,000 元的项目,尾款 3,600 元压了半年
合同只写了"验收合格后付尾款",没写验收时限,也没写 Bug 分级。开发方认为已完成,甲方认为"还有小问题"一直不验收。最后双方各让一步,甲方扣了 1,200 元了事。如果合同里写了"5 个工作日内反馈,逾期视为验收通过",这 3,600 元一分都不会少。
案例二:改了 11 版,开发方亏了 8,000 元
合同写的是"按需开发",没写变更规则。甲方陆续提了 11 次修改,从 3 个页面加到 14 个页面,工期从 20 天拖到 3 个月。开发方不好意思开口加钱,最后算下来人工成本多出 8,000 元。反过来,如果甲方遇到的是按次加价的团队,同样的改动可能被收 2 万元。
案例三:换团队时发现拿不到源码
合同写"甲方享有本系统使用权",项目上线两年后甲方想加功能,原开发方报价 2 万元。甲方找别的团队评估,对方说需要源码,这时才发现合同里没有源码交付条款,手上只有一套正在运行的程序。最后按新项目重做,花了 15,800 元。
签之前,花 10 分钟做这 7 件事
- 要一份《功能清单》附件——逐条编号、可作为验收依据,没有这份附件其他条款都立不住
- 页面上数字——几个页面、几端、几个后台角色,全部写进附件
- 核付款节点——对照上面三张表,看比例和触发条件是否合理
- 问变更怎么算——免费几次?超出多少钱一天?没有数字就补上
- 把"开发完成"换成 Bug 分级——四个级别、三级阈值、5 个工作日验收时限
- 源码那句话一个字都别改——必须是"完整未加密源码",不能是"使用权"
- 违约条款要双向——双方都有每日比例和可解约天数
总结
软件开发合同要注意的东西,本质上就这么几件:范围清单化、节点金额化、变更计价化、验收分级化、源码写死、违约双向。这六件事做到了,剩下的是信任问题,不是条款问题。
好的合同不是不信任对方,而是让双方都清楚自己要交付什么、什么时候能拿到钱。我们这边签合同,会把《功能清单》《需求变更确认单》《验收报告》三份模板一并给到甲方,这些模板本身就是上面 12 个字段的落地产物——你看不懂条款没关系,看得懂清单就行。
如果你手上已经有一份待签的软件开发合同,可以发给我们,按上面 12 个字段逐条帮你过一遍,标出哪些条款需要补、哪些写法对你不利。
