×

打开微信,扫一扫二维码
订阅我们的微信公众号

×

打开手机,扫一扫二维码
即可通过手机访问网站并分享给朋友

首页 > 发现研究 > 专业文章

代码交了就算完?——软件“交付”迷局与司法裁判拆解 | 发现原创

2026-06-0224

image.png

作者:王学伟



一个扎心的问题:你说交付了,他说没收到,到底谁说了算?

图片


在软件定制开发领域,一个看似简单的问题常引发尖锐争议:开发方坚称已经完成交付,委托方却声称从未收到过合格成果。这类分歧的背后,是软件作为无形智力成果的特殊属性——它无法像普通商品那样通过“手对手”的转移来宣告交付完成。


在现实纠纷中,双方的对抗往往十分激烈。例如,有开发方主张已将软件管理系统完整安装并移交,而委托方却声称系统无法正常运转、存在功能缺失等问题,构成根本违约。又如,在补充协议中明确约定了源代码签收后不再追责,并且委托方也签署了源代码移交确认书,但在事后却又以“代码不合格”“存在欺诈”为由提起反诉。这些矛盾揭示出一个核心问题:在软件开发的语境下,究竟什么才算“交付”?是文档的传输,还是功能的实现,抑或知识产权的完整转移?只有厘清这个问题,才能合理认定开发方的履行是否到位,委托方能否以此为由拒付余款甚至解除合同。


穿透“交付”:看得见的代码与看不见的权利

图片


计算机软件开发合同是以智力劳动换取特定功能成果的典型交易。这类合同兼具承揽和技术开发的双重特征:它既要求开发方完成特定工作并交付成果,又常常涉及技术方案的定制与创新。根据《民法典》第八百五十一条,技术开发合同是当事人之间就新技术、新产品、新工艺、新品种或者新材料及其系统的研究开发所订立的合同。最高人民法院《关于审理技术合同纠纷案件适用法律若干问题的解释》(2020年修正)第一条,进一步将“计算机软件”明确列为技术成果的一种。这意味着,软件委托开发合同受技术合同规则调整,同时也可参照承揽合同的法理。需要明确的是,此类合同的最终目标是交付一套符合需求、能够运行的软件系统,而非单纯售卖开发过程或工时。因此,合同的核心更看重结果,而并非过程本身。


正是在这个前提下,“交付”的概念变得复杂起来。在传统交易中,交付意味着标的物占有的物理移转;但软件交付则包含至少三个层次的内涵:第一,载体交付,即源代码、可执行程序或开发文档等有形载体的提交;第二,功能交付,即软件能够在约定环境中正常安装、运行并支撑核心业务,实现合同目的;第三,权利交付,在合同约定著作权归属于委托方的情况下,开发方还须保证所交付的代码未侵犯第三方权益,确保委托方能够无负担地取得完整的知识产权。实践中,以下几种情形常被认定为“交付”或“视为交付”:委托方签署了正式的验收确认书;委托方虽然未出具书面验收文件,但已将软件投入商业使用并支付了部分款项;软件已成功上线,委托方获取了后台管理权限及源代码;在云端部署模式下,开发方向委托方移交了服务器控制权限及访问凭证。


案例揭秘:法院凭什么认(或不认)交付?

图片


(一)签了验收单又想反悔?法院:没门!


在深圳某技术公司委托北京某科技公司开发“智某大厦软件系统”一案中【(2023)最高法知民终187号】,深圳公司未付清尾款,北京公司起诉索款及违约金。深圳公司提出反诉,称软件交付延迟、代码质量不合格、存在欺诈,要求解除合同并索赔。然而,双方后续签订了《补充协议》,明确约定“深圳公司签收源代码后不得追溯责任”,且正式签署了《源代码移交确认书》。法院一致认为,根据《民法典》第五百零九条规定的全面履行原则,当事人应当按照约定全面履行自己的义务。补充协议已变更原合同,北京公司依约交付源代码并通过验收,不构成迟延;书面确认文件充分证明了交付合格,深圳公司单方制作的测试视频无法推翻该书面证据。最高法院最终判令深圳公司支付尾款7万余元及违约金3.2万元。


这一案例确立了以下裁判规则:经双方签署的《源代码移交确认书》或《验收报告》具有强力证据效力。法院对当事人事先约定和事后书面确认给予高度尊重,一旦签署确认,任何一方再行反悔都将面临极高的举证门槛。但需注意,成果交付单的签收仅产生形式上的推定效力,若存在完整证据链证明开发方实际并未完成核心义务,法院仍将穿透签收文件,审查合同是否得到了实质履行——签收不等于验收合格。


(二)需求变了,交付期限还能不变?法院:以实际履行为准


山东博远重工有限公司委托浪潮世科(山东)信息技术有限公司开发“博远集团基建在线互联网平台”一案【(2020)最高法知民终848号】中,合同总额50万元,约定2019年2月18日完成安装调试并验收。博远公司支付首付款15万元后未再付款,博远公司起诉世科公司要求返还15万元预付款并支付违约金,世科公司则主张已完成交付。法院查明,第三期项目需求直到2019年1月17日才由双方最终确认,此时距原定交付日仅一个月。法院认为,计算机软件开发过程中需求变更频繁,若双方以实际行为变更了原定计划,则不应再机械适用合同最初的时间节点和功能清单——交付期限因需求确认延迟而相应顺延。2019年3月15日,世科公司提交代码供验收,应视为按期交付。


在交付质量的认定上,法院对软件存在的问题进行了细致甄别:支付功能暂不可用,属于影响功能的实质缺陷;而委托方提出的其他问题,多属于界面美化或新增需求的优化建议。法院区分了“缺陷”与“优化需求”,前者可能构成违约,后者即便未实现也不影响对交付合格的认定。鉴于仅有支付功能一项属于缺陷且已修复,法院认定交付符合初验标准,判决了驳回博远公司的诉讼请求。


(三)软件有Bug就是违约?法院:核心功能能用就够


在上海希泽国际贸易有限公司与深圳市斯高投资有限公司仓储管理软件开发合同纠纷案【(2020)最高法知民终1064号】中,合同总价36万元。希泽公司支付25.2万元后,斯高公司进行了软件交付。希泽公司声称软件无法正常使用,存在9项功能问题,要求解除合同、返还已付款。斯高公司则反诉请求支付尾款10.8万元。法院现场勘验后发现,部分功能确有瑕疵或缺失,部分功能不属于合同约定范围之内的开发功能,还有部分功能无法当场验证。


法院在此案中确立了关键裁判标准:只要软件主要功能能够运行,合同目的即基本实现,局部瑕疵或优化需求不应轻易触发根本违约。根据《民法典》第五百六十三条,只有当一方违约致使合同目的无法实现时,另一方才能行使法定解除权。现有证据无法证明斯高公司交付的软件存在足以影响主要功能运行的缺陷,其行为尚未达到根本违约程度;由于软件的主要功能已经完成,委托方的合同目的基本实现。最终,因希泽公司坚决不同意继续履行,法院判决合同解除,但驳回了双方的其他诉讼请求——这意味着,委托方既无法追回已付款,开发方也无法获得尾款,双方各负其责。


此外,委托方将软件投入经营、获得商业收益、甚至承诺过支付尾款等实际使用行为,也常被法院作为认定交付已发生的辅助依据,有助于防止委托方利用验收程序模糊而获取不当利益、破坏交易诚信。


(四)代码能跑就安全了?当心“权利瑕疵”炸雷


在某环保科技公司委托济南某信息科技公司开发网络平台软件一案【(2021)最高法知民终677号】中,合同明确约定源代码著作权归委托方所有。交付后,某环保科技公司发现该软件与案外人的“某商城shopnc”软件高度雷同,内含“33hao”等来自第三方的标识,主张开发方侵害他人著作权,导致自己无法获得完整知识产权,构成根本违约。


最高人民法院生效裁判在此案中创新性地拓展了交付义务的内涵。根据《民法典》第八百五十九条,委托开发完成的发明创造,当事人对权利归属有约定的,从其约定。本案合同明确约定著作权归委托方,则开发方不仅负有开发合格软件的义务,还应就其交付的源代码承担权利瑕疵担保责任,即保证第三人不对该源代码享有任何权利。开发方擅自使用第三方源代码,导致委托方无法在约定期限内稳定、无争议地使用软件,即便软件功能上可用且已移交,交付依然存在实质性瑕疵,影响委托方取得软件著作权的合同目的,可以构成根本违约,委托方有权解除合同。


这一裁判规则将交付义务从“功能层面的交付”扩展至“权利层面的交付”,确立了“清洁交付”的标准,对于遏制软件开发行业中擅自使用第三方源代码的乱象具有重要意义。


终极避险指南:让交付不再“扯皮”的实战策略

图片


软件开发的交付认定,已从简单的文件传输判断,演变为涵盖功能实现、权利转移和合同目的达成的综合评估。综观上述案例与裁判规则,可以提炼出几条明确的实践指引:


第一,“可用的结果”高于“完美的过程”。 法院并不苛求软件毫无瑕疵,只要核心功能能够满足业务需求,交付即告成立,委托方便不能以此为由拒绝付款。局部缺陷与优化需求属于合同履行瑕疵范畴,可通过修复或协商解决,不应轻易触发根本违约。


第二,书面确认是“压舱石”。 签署移交或验收文件后,任何一方再行反悔都将面临极高的举证门槛,这要求交易双方对签署行为高度谨慎。当然,签收仅具形式推定效力,若有确凿反证仍可推翻,但举证难度极大。


第三,交付义务已延伸至“权利清洁”。开发方擅自使用第三方受版权保护的代码,即便功能正常,也可能因权利瑕疵而构成根本违约,这给开发行业敲响了警钟——交付的不仅是能运行的代码,更是无权利负担的完整知识产权。


第四,合同约定的精确性是定分止争的根源。为避免争议,合同中应对交付物清单、验收方法与标准、异议提出期限、需求变更流程、知识产权归属及权利担保责任等作出清晰界定。唯有合同文本足够周密,纠纷发生时才有坚实的裁判依据,真正实现风险的有效防控。


委托方必读:避开四大深坑,守住你的钱和权

图片


委托方在软件定制开发中往往处于信息和技术弱势,但上述案例表明,法律对善意的委托人提供了充分保护。关键是要将这种保护落实在合同条款和履约管理之中。


(一)验收标准别再用“流畅运行”这种玄学词汇


不少纠纷的根源在于合同仅笼统约定“开发某某系统”,对具体功能、性能指标、兼容性要求等只字未提,给日后争议埋下隐患。建议将核心功能需求以附件形式逐一列明,并设定可客观验证的验收用例。例如,“系统需支持日均1000笔订单并发处理,响应时间不超过2秒”,这比“系统运行流畅”更具可验证性。


(二)知识产权是核心资产,别等被诉侵权才后悔


环保科技公司案的教训深刻:即使软件功能可用,若源代码存在权利瑕疵,委托方不仅可能面临侵权诉讼,更可能丧失对软件的排他性权利。因此,合同中应明确约定著作权归属委托方,并要求开发方承诺交付的代码系自主开发或已取得合法授权,同时约定权利瑕疵担保条款及相应违约责任。必要时,可借助第三方代码溯源工具对交付的源代码进行合规扫描。


(三)验收文件不是走过场,落笔之前先“真刀真枪”测一遍


深圳公司案说明,一旦签署源代码移交确认书或验收报告,事后反悔的成功概率极低。因此,签署任何验收文件前,应组织技术人员进行实质性测试,发现的问题应以书面形式固定并随附保留,切忌因项目进度压力而草率签收。同时,在合同中设定合理的验收期和异议提出期限,形成清晰的履约节奏。


(四)发现问题别只打电话,留个邮件才算数


当发现软件存在问题时,千万不要只在电话或微信群里口头交涉,而应通过邮件等书面方式明确提出异议,留存完整记录。司法实践中,委托方长期沉默后又主张对方根本违约,很难获得法院支持。


开发方必看:五招锁定交付证据,远离收款困局

图片


对开发方而言,上述判例既划定了风险红线,也提供了保护自身权益的有力工具。关键在于将开发过程中的每一步都转化为可证明的证据。


(一)需求变更别靠“嘴皮子”,书面确认才是护身符。博远公司案表明,需求变更是开发过程中的常态,法院也会尊重双方的实际履行行为。但这要求开发方养成“有变更、必确认”的工作习惯——每一次需求调整、功能增减,都应通过书面方式由双方确认,哪怕是一封回邮、一条可追溯的工作群消息,都比口头沟通后的自行发挥更能保护自己。切勿在未获书面确认的情况下,仅凭对方口头指示就投入大量开发资源。


(二)别干等着对方验收,把“交付”动作做足做透。开发方不应被动等待委托方组织验收,而应按合同约定在完成阶段性成果后主动提交验收申请,并附上清晰的交付物清单和测试说明。若委托方在约定期限内既不签收也不提出书面异议,则依法可主张视为验收通过。深圳公司案也说明,取得对方签署的书面确认文件是保障自身权利的最佳方式。


(三)“借”来的代码可能引爆整个项目。环保科技公司案给整个开发行业敲响了警钟。在开发过程中如需引入开源代码或第三方组件,务必审查其许可协议是否与合同约定的著作权归属相冲突——某些开源许可证(如GPL)可能具有“传染性”,要求衍生作品同样以开源方式发布,这与委托方取得独占著作权的合同目的直接矛盾。建议将所用第三方代码清单及其许可证类型作为合同附件如实披露,征得委托方书面同意后再行使用。这是避免构成根本违约的基本防线。


(四)收款节奏绑定交付里程碑,别让回款“裸奔”。建议将合同款项与明确的交付里程碑挂钩,如“需求文档确认后支付20%”“初验通过后支付30%”“终验合格后支付40%”等,使每一笔款项都有对应的交付物支撑,既降低委托方的预付压力,也保障开发方在履约各阶段都能获得对价。


(五)过程证据就是你的“时间胶囊”,关键时刻能救命。在诉讼中,开发方不仅要证明“我交付了”,更要证明“我交付了什么”“何时交付的”“交付的内容是否符合约定”。因此,日常开发中的设计文档、版本迭代记录、测试报告、会议纪要等过程文件都具有重要的证据价值,应当系统留存。即便没有正式的验收签署文件,完整的过程证据链也可以帮助法院综合认定履约情况,避免因形式证据缺失而陷入被动。


图片

声 明

本文仅代表作者观点,不得视为发现律师事务所或其律师出具的正式法律意见或建议。如需转载或引用,请注明出处。