中华人民共和国最高人民法院民 事 判 决 书（2021）最高法知民终906号上诉人（原审被告、反诉原告）：成都七奕网络科技有限公司。住所地：四川省成都市高新区天府三街218号2栋6层608号。法定代表人：田建，该公司执行董事兼总经理。委托诉讼代理人：郑洁，泰和泰律师事务所律师。被上诉人（原审原告、反诉被告）：嵩格科技（成都）有限公司。住所地：中国（四川）自由贸易试验区成都高新区天仁路388号4栋8层801号。法定代表人：TANSERSIONG，该公司总经理。委托诉讼代理人：赖李勇，北京市竞天公诚（成都）律师事务所律师。上诉人成都七奕网络科技有限公司（以下简称七奕公司）因与被上诉人嵩格科技（成都）有限公司（以下简称嵩格公司）计算机软件开发合同纠纷一案，不服四川省成都市中级人民法院于2020年12月9日作出的（2019）川01知民初666号民事判决，向本院提起上诉。本院于2021年4月26日立案后，依法组成合议庭并于2021年6月23日询问当事人，七奕公司的法定代表人田建及其委托诉讼代理人郑洁，嵩格公司的委托诉讼代理人赖李勇到庭参加诉讼。本案现已审理终结。七奕公司上诉请求：撤销原审判决，改判支持七奕公司的反诉请求；判令嵩格公司向七奕公司支付第二笔合同费用5万元；判令嵩格公司承担本案一、二审的案件受理费、保全费等费用。事实与理由：（一）原审判决认定事实不清。1.原审法院对于七奕公司未按照《软件外包（委托）合同》（以下简称涉案合同）约定的模块功能及期限交付直播社交APP（以下简称涉案软件）的认定错误。本案中，双方约定合同完成时间为项目启动后的120日内以及软件分三阶段进行交付的分阶段交付时间。但软件开发合同不同于一般的物品买卖合同，过程中存在诸多的软件需求变更。合同签订时嵩格公司的需求不明确，从软件原型、设计确认、美术UI确认、程序开发功能、甚至细化到字体、字体间距、排版等需求，以及在开发软件过程中产生的bug的修复，都是嵩格公司临时与七奕公司商讨后确定最终方案。涉案软件也是经过上述阶段才最终制作出来的，是七奕公司全力以赴配合完成嵩格公司临时提出的需求，开发出的成果。对于软件开发的过程，在一方交付后，对方依据交付的软件会提出相应的功能修改及bug修复，因此，双方在合同中才约定了项目整体的完成期限及提供6个月的免费维护服务（维护主要工作内容为bug维护）。七奕公司在交付软件后，双方对于软件开发的数次沟通也证明了上述观点。2.嵩格公司曾多次增加或修改涉案软件的交付标准，应当对七奕公司完成合同交付义务的期限进行延展。合同履行过程中，嵩格公司于2019年9月19日、9月20日、9月30日、10月4日、10月6日、10月10日、10月16日、10月18日、10月19日、10月20日、10月21日、10月22日曾多次提出对软件模块及功能的修改、增加要求。嵩格公司提出的附近、匹配、家族聊天、游客模式、定位、push功能等均未在合同约定的第一阶段的交付功能内，属于对合同内容的变更。而依据双方的合同约定及平等诚信原则，嵩格公司的增改行为理应对上诉人完成软件交付的期限进行延展。3.嵩格公司对项目消极处理，中途故意拖延时间，也曾表示第一阶段期间沟通时间过长，嵩格公司存在更大的过错和对接上时间延迟。4.双方约定使用ReactNative技术（https://www.react-native.cn），此技术的优点就是写一套代码，同时可以发布安卓版和IOS版，在判决中提到的IOS版，是双方口头约定先出安卓稳定版。依据合同约定，如确因嵩格公司原因，造成七奕公司未能按时交付，则七奕公司不承担由此给嵩格公司造成的损失。5.嵩格公司在项目停止以后，私自将原接入的第三方SDK更换或停止使用，才导致软件无法正常使用。因此，原审法院基于此也错误的认为七奕公司制作的软件无法正常使用。6.原审中，七奕公司提交了原始版本的录像文件作为证据，用以证实七奕公司开发的软件在交付时是能够正常使用并且符合合同要求的。七奕公司请求法院利用专业手段进行甄别，将上述录像证据作为认定软件在交付时能否正常使用的依据。七奕公司愿承担由此产生的费用。(二)原审判决适用法律错误。即使七奕公司的行为构成违约，应当承担违约责任，但原审法院判决的违约责任过高。七奕公司与嵩格公司签订的合同中虽然约定了“七奕公司未能按约交付，则每延期一天，嵩格公司可以扣除七奕公司总费用的0.2%作为补偿。”但原审中嵩格公司并未提交其实际损失的证据，原审法院判决七奕公司支付资金占用损失的同时还需支付违约金，明显属于违约金过高。其次，原审法院认定七奕公司每逾期一天，应当按照合同总金额的0.2%承担违约责任，明显不当。本案中，嵩格公司合计只向七奕公司支付了100000合同款，原审法院却要求七奕公司按照合同总金额250000元为基数承担违约责任，违约金明显过高，属于适用法律错误。嵩格公司辩称：（一）关于交付迟延问题。涉案合同第四条第3款第2项约定七奕公司需按期交付源代码和软件安装包，否则，延期30日，视为七奕公司严重违约，嵩格公司有权解约。合同第二条虽然约定整体项目的交付时间为120日，但整体项目分为三个阶段子项目，分别为：基础社交版APP、语聊版APP、直播视频版APP，每个子项目对应有独立的源代码和软件安装包，比如基础社交版，只有七奕公司将该第一阶段子项目的基础社交版对应的软件安装包和源代码交付给嵩格公司，嵩格公司才能上线运营，而非等到三个子项目APP版本完成后，统一提交对应的三个源代码和三个软件安装包。若这样，七奕公司就无需将安卓版本的软件安装包交付给嵩格公司进行验收，现七奕公司自2019年9月19日、9月20日、9月30日以及10月22日交付的均是安卓系统下的基础社交版的APP软件安装包，但并未交付源代码，亦未交付苹果版的APP软件安装包和源代码。每个版本对应有独立的软件安装包和独立的源代码，而非一个软件安装包和源代码，若无源代码，则意味着嵩格公司无法操作、管理、控制该APP的客户端以及服务器端。所以涉案合同第二条第2款第3项约定：“版本交付按照阶段性进行交付，具体版本交付计划见下表”。而非七奕公司所述的，待120日以后再计算迟延交付的违约责任，若按此理解，则该条款约定的每个阶段子项目要求的交付时间就无任何意义。这显然跟双方的真实合意相违背，双方约定的第一个子项目基础社交版交付的时间为2019年9月20日，七奕公司就应该按此约定的时间将基础社交版的软件安装包和源代码交付给嵩格公司，但七奕公司逾期交付该第一阶段子项目的软件安装包和源代码，嵩格公司多次催告整改并尽快提交，但七奕公司一直拖延交付30日以上，从而导致嵩格公司不得不依合同约定进行解约。另即使完成总时间有约定，亦不能否认阶段性完成开发内容并有明确的阶段性交付成果、交付时间的约定事实，且三个阶段匹配三个子项目，三个子项目中对应的三个APP分别有独立的软件安装包和独立的源代码。七奕公司每次重新提交的成果验收，均存在严重问题，无法通过验收，七奕公司不专业、不严谨的表现导致若合同继续履行下去，则嵩格公司将损失惨重。（二）关于七奕公司提及的SDK修改权限事宜。在原审庭审中，双方已经确定按照各自手机上安装的2019年10月22日软件版本为准进行对比、核查，原审法院也要求双方对自身以及对方的前述软件版本对比、核查并提交书面意见，对此，嵩格公司在七奕公司法定代表人田建和代理人面前，进行演示操作并录像，核查结果最终显示首页模块功能尚不能实现，包括首页、广场、消息、个人等版块均无体现及不能使用。关于SDK权限问题，七奕公司所提的应为第三方账号登录问题，但是第三方账号登录只是辅助用户登录，并不影响主账号的注册与登录，而且第三方账号登录SDK，七奕公司也能去注册申请。软件开发是由七奕公司负责执行，至于是否修改、使用也只有七奕公司才知晓。由于基础社交版的软件安装包和源代码均为七奕公司持有，七奕公司仅交付软件安装包，该版本所对应的SDK，其修改权限在于七奕公司，嵩格公司并无源代码，亦无后台管理权限，对于SDK无权限进行修改或者关闭。（三）关于第二阶段开发事宜。双方并未展开第二阶段的开发工作，七奕公司法定代表人田建与嵩格公司副总陈灿仅对第二阶段工作开展的初步沟通，并未具体落实相应的要求及工作，更不存在七奕公司在原审庭审中所述的已完成第二阶段80%的开发任务。因第二阶段子项目语聊版是在第一阶段子项目基础社交版延期后才开始对接需求，七奕公司并未告知嵩格公司在开发，因为第一阶段子项目基础社交版未完成情况下第二阶段子项目语聊版是无法启动开发的，很多语聊版的功能需要依附基础社交版的功能才能进行，基础社交版未完成，语聊版功能开发根本无法启动。由于七奕公司第一阶段交付成果存在严重瑕疵，在基础社交版成果均未验收合格时，语聊版不可能完成80%的开发任务。根据涉案合同第四条第2款约定，嵩格公司支付第二笔费用50000元的前提条件为基础社交版成果交付并验收通过后才支付，显然，该支付条件并不成就。因此，嵩格公司有权不予支付该第二笔款项50000元。原审判决认定事实清楚，适用法律正确，请求驳回上诉，维持原判。嵩格公司向原审法院提起诉讼，原审法院于2019年12月9日立案受理。嵩格公司起诉请求：1.确认双方签署的涉案合同于2019年10月23日解除；2.七奕公司退还嵩格公司已付合同款100000元并支付逾期退款的违约金（违约金以本金100000元为基数，暂计自2019年10月23日起，按中国人民银行同期贷款年利率6%计算，实际金额以七奕公司清偿完毕之日确定）；3.七奕公司向嵩格公司支付迟延交付的补偿费16000元；4.七奕公司向嵩格公司赔偿损失20000元。原审庭审中，嵩格公司明确第2项诉请中有关违约金的计算标准按照同期全国银行间同业拆借中心公布的贷款市场报价利率计算。事实与理由：2019年8月12日，双方签署涉案合同，约定由嵩格公司委托七奕公司进行涉案软件研发工作，研发工作分三个阶段开展，其中第一阶段为基础社交版，七奕公司需于2019年9月20日向嵩格公司交付符合要求的研发成果，包括交付基础社交版APP的安卓、苹果系统的软件包及其源代码；第二阶段为语聊版，交付时间为2019年10月20日；第三阶段为直播视频版，交付时间为2019年11月30日。据此，嵩格公司于2019年8月14日向七奕公司支付首期合同款100000元。之后，七奕公司一直未能交付符合要求的第一阶段基础社交版APP，嵩格公司多次要求其整改并按期交付，但截至2019年10月22日嵩格公司向七奕公司发出解约通知时，其仍未交付符合要求的第一阶段研发成果，严重损害了嵩格公司的合法权益，因此提起诉讼，望判如所请。七奕公司针对本诉辩称：七奕公司并未延期交付，2019年9月20日前就已经提交软件安装包，且有关安卓版本或苹果系统版本，本来也是双方协商确认应当先提交安卓版本；关于源代码的提交，按照合同约定以及行业惯例，应当是整个项目完成后才一并提交，并非需要按阶段提交；同时，根据双方合同明确约定，项目总时间为120天（需扣除国家法定的大假日），阶段性时间在合同中仅作为参考计划，并非确定的时间标准，因此，七奕公司在合同履行期内已多次提交第一阶段基础社交版本的软件，并无任何违约行为；针对七奕公司提交的研发成果，嵩格公司也予以接受，且软件功能全部实现，嵩格公司单方解除合同并主张违约责任，不能成立。但鉴于双方已没有合作基础，本案诉讼中，七奕公司亦同意解除合同。七奕公司在法定期限内向原审法院提起反诉，原审法院于2020年3月20日受理。七奕公司反诉请求：1.解除双方于2019年8月12日签订的涉案合同；2.判令嵩格公司支付第二笔合同费用50000元（即前述合同第四条第二款第（2）项约定的费用）。事实与理由：2019年8月12日双方签订涉案合同，双方约定进行手机APP软件的开发。2019年8月14日嵩格公司按照约定将第一笔款项100000元转入七奕公司指定账户，同时，七奕公司于2019年8月15日开工。合同履行期间，七奕公司按照约定，于2019年9月20日将涉案合同委托开发的软件技术成果通过QQ、微信等途径，向嵩格公司提交，交付内容包括第一阶段开发的基础社交版。嵩格公司对于第一阶段开发的软件成果并无异议且已经接受。因软件开发工作具有连续性，七奕公司已经开始第二阶段的相关开发，并告知嵩格公司应当按照约定支付第二笔合同约定费用，但截至诉讼纠纷发生，嵩格公司并未按约支付。七奕公司没有任何违约行为，而嵩格公司违约发送解除通知，没有事实和法律依据。鉴于嵩格公司未按期付款的违约行为，且双方没有合作基础，则本案合同应当予以解除，并应当由嵩格公司支付拖欠的费用。嵩格公司针对反诉辩称：七奕公司主张的延迟付款不属实，因七奕公司已经提交的软件开发成果并不符合合同约定，且有关源代码以及苹果系统软件包均未按期提交，因此，目前尚不具备支付第二笔款项的付款条件；而七奕公司基于延迟付款所主张的违约事实显然不能成立，也无权就此行使法定解除权。相反，七奕公司还应当就自身的延期交付承担相应的合同责任。原审法院查明：(一)涉案合同的签约情况嵩格公司作为甲方与七奕公司作为乙方曾签订《软件外包（委托）合同》，合同记载的签订日期为2019年8月8日，合同编号为QY20190803D。合同约定：嵩格公司委托七奕公司进行“直播社交APP”手机软件的开发工作。合同第二条内容及要求中约定，根据甲方要求，乙方在规定时间内完成软件开发的主要功能需求文档（见附件），根据需求设计进行项目的开发以及测试工作，具体工作由甲方分配。项目启动日期为甲乙双方签字盖章，乙方账户收到本合同规定的第一次款项第二天即为项目正式启动日期；完成时间为自项目启动后，120日（除国家规定大假日，如国庆、中秋、元旦等）内完成；版本交付约定为按照阶段性进行交付，具体版本交付计划包括：第一阶段交付基础社交版，版本包含模块（首页：附近朋友推荐，关注用户动态，用户新动态，国家地区、搜索；广场：国家地区、匹配用户、1对1语聊、推荐动态、发布动态；消息：消息推送、家族、好友；我的：个人信息……个人主页、关注列表、粉丝、送出礼物、二维码、等级、家族、背包道具、任务、钱包……排行……设置……；相关后台功能），交付时间为2019年9月20日；第二阶段交付语聊版，版本包含模块是在基础社交版上增加（首页：附近语聊房、推荐语聊房；创建房间……；我的……；语聊房房主模块；语聊房用户模块；相关后台功能），交付时间为2019年10月20日；第三阶段为直播视频版，版本包含模块是在语聊版的基础上再增加合同记载的相关内容，交付时间为2019年11月30日。备注：模块具体需求详见（附件）。合同第三条双方权利义务中约定，甲方：有权利督促乙方按规定时间完成项目开发，有增加或修改内容双方需另行协商解决，在不影响进程的情况下，对于甲方的小规模变动需求，乙方必须满足，若出现大幅度的变更，则甲乙双方商议延长开发周期；完全拥有“直播社交APP”软件相关的所有权，包括使用权、著作权等所有权利；应当按照协议，按时向乙方支付开发费用……；乙方：有责任按甲方要求在规定时间内完成项目开发，完成需要开发的内容；有责任自行准备软件开发所需的硬件设备、开发资料……。合同第四条费用和支付方式中约定，此项目费用合计250000元人民币（不含发票），若乙方在规定时间内完成。支付方式分为五次，第一次是在合同签订之后3个工作日内支付乙方100000元；第二次是在项目完成上述版本交付的第一阶段后，甲方在3个工作日内支付乙方50000元。违约责任条款中约定，甲方有责任按期支付乙方费用，如因甲方自身原因，未能按时支付，则每延期一天，甲方将额外支付乙方总费用的0.2%作为补偿；乙方有责任按期向甲方交付源代码和软件安装包，实现项目中的所有功能，如因乙方自身原因，未能按时交付，则每延期一天，甲方将扣除乙方总费用的0.2%作为补偿，若因乙方延期三十日，视为乙方严重违约，对此甲方有权解除合同，并要求乙方承担相关赔偿，如确因甲方原因造成乙方未能按时交付，则乙方不承担由此造成的甲方的损失。另，合同附件为产品功能简述，包括平台功能、房间功能、后台相关模块，以及具体平台版块、房间类型、后台基础数据及功能需求的功能简述等内容。其中，“平台版块”中包括首页、广场、开播、消息、个人等版块及其对应的具体功能，且针对每一版块中对应的具体功能，均有功能简述的文字记载，如“首页”版块中地区功能简述为“显示目前开通或准备开通平台的国家和地区列表，并以地区玩家状态进行排序，用户可以选择不同国家或地区进行房间赛选”，关注功能简述为“关注的主播直播间或动态，正在直播点击后进入直播间，没直播进入个人主页”，附近功能简述为“根据玩家坐标定位，为其展示附近房间列表，若没授权定位，则显示玩家设置地区或国家的房间列表，排序按照热门权重”；“广场”版块中匹配功能简述为“为用户快速匹配匹配度高的社交对象，用户可以选择匹配条件或自动，用户可以直接选择与匹配对象进行1对1语音或视频”，活动功能简述为“平台发布各项活动汇总，并有规则说明和参与连接等”，发布动态功能简述为“内容描述、标签、坐标、@好友、可见权限、视频&图片&语音”等等。后台相关模块中包括“基础数据”对应的下载数（ios、android）、注册数、充值、付费道具礼物数据、日活、留存、在线用户、兑换记录等，还包括“功能需求”记载的频道管理、道具管理、兑换比例管理、任务管理、用户日志动态管理、客服管理等。（二）涉案合同的履行情况前述合同签订后，嵩格公司于2019年8月14日向七奕公司支付第一笔合同款项100000元。七奕公司确认收到上述款项。自此之后，嵩格公司未进行任何付款。合同签订后，七奕公司陈述于收款后3个工作日，即2019年8月15日启动项目开发工作。围绕项目开发、软件包交付、反馈意见及修改等事项双方工作人员之间以微信或电子邮件方式进行多次沟通。包括以下内容：1．针对软件开发的基础社交版七奕公司先后进行多次交付，其中四次交付分别是2019年9月19日、9月20日、9月30日、10月22日；交付均是以微信聊天记录中发送链接的方式提交，链接网址为××／ｄｆｕｓｅ／ｄｆｕｓｅ.ａｐｋ。七奕公司主张上述版本均是安卓版ａｐｋ，并均是按照嵩格公司的反馈意见予以修改调整的。2．针对前述交付，双方通过微信群的沟通及反馈意见包括：（1）针对9月19日发送版本嵩格公司指出：“登陆验证码正常吗？如果不正常就发几个号过来。不能登陆。换了号可以了。登陆流程的问题我们会以文档反馈给你们，流程问题比较多。等你们稳定版出来，我们统一整理。不是原型流程，是逻辑流程。昵称呢？”；“现在我注册不起，获取不到验证码，直接填123456以后点下一步就一直转圈加载状态”，七奕公司答“稍等，我们在调试”；（2）9月20日11时22分开始，嵩格公司询问“下午你们几点发包”“以后反馈用文档形式以邮箱方式反馈”“把你们的邮箱发一个出来”；“暂时能看到的功能需要修改的地方，已经通过邮件发送”，七奕公司答“收到”；嵩格公司继续询问“你们什么时候能发包”，七奕公司回复“可能要在8-9点左右”；（3）针对9月20日晚上发送的版本嵩格公司指出：“问题很多除了能看到一点数据，基本功能都有问题。比如关注、发布动态、附近、匹配，基本不能用”“我们这边需要你们每两天提供一个版本”“他们会对产品进行反馈。开发计划他们是知晓的”，七奕公司回复：“这边也在整理进度”；（4）针对9月30日晚上发送的版本嵩格公司指出：“需要卸掉之前的版本吗”，七奕公司答：“需要”；嵩格公司指出：“登陆注册流程还是有问题”“通跑一遍，汇总文档给他们”；嵩格公司问：“这次版本是否有新的功能完成”，七奕公司答：“家族动态都做完了，送礼我们在自己加一些礼物数据测试。首页、广场、消息里面涉及的内容都完成了的”；嵩格公司问：“家族聊天怎么进”，七奕公司答复：“消息栏置顶的”，嵩格公司回复“没有”，七奕公司答：“我的第一个就是。创建家族后就应该在消息栏显示出来的呀，我们的都是这样”，嵩格公司回复“我这边没有显示”，七奕公司答：“你试一下再加一个人进来”；（5）2019年10月4日9时05分，嵩格公司告知七奕公司“一阶段第二次整改需求反馈已经发送的邮箱”，七奕公司回复“好的，收到。原型图我们8号左右就给你”；10月6日12时52分，嵩格公司再次告知“反馈重新发了一份到邮箱了，新增了游客模式的修改说明”；10月10日00时51分，嵩格公司称“游客模式的部分功能没做登陆判断，比如消息，发布，搜索，明天我们文档发给你们”；10月10日16时19分，嵩格公司发送文档“第一阶段第三次反馈说明.docx”；10月10日，七奕公司又通过链接发送软件，嵩格公司发送“需要删除老版安装吗”，七奕公司答“不用，应该可以覆盖安装”；嵩格公司问“定位还是没有解决”，七奕公司答“定位这个现在还需要装服务”“这个定位后面会处理”；嵩格公司指出“个人信息等级没更新。匹配的动效还是一张图。id还是搜不到用户，而且资料id和复制id不一样，复制id的前会多一个1”，之后，嵩格公司发送文档“第一阶段最终版本功能验收反馈”；10月16日，嵩格公司发送“注册的验证码没有收到”、“个人资料里面，拍照预览界面是正的，上传以后还是倒置的”，并发送文档“反馈2019.10.16.docx”；七奕公司发送“注册可以收到验证码啊”，嵩格公司回复“我们这边都不行，试了好几个手机了”，七奕公司答“我刚才试了，都收到了”，嵩格公司回复“奇怪”；10月18日，七奕公司再次发送链接并称“下载链接”，嵩格公司发送“关注无效，无法注册，个人建议你们还是把老数据清掉，不然会很多问题”，七奕公司回复“因为没有找到在哪清除im里面的数据，要是清除了app的数据的话，会有问题的。这个找到方法后会第一时间清除数据”，嵩格公司回复“明天会给你们问题反馈”、“问题还是和之前的一样的单摄三星”，七奕公司答复“好的”；10月19日，嵩格公司发送“权限全开了，还是匹配不到，这个版本很多无端报错”，七奕公司回复“要同一个城市的才能匹配到了”，嵩格公司回复“我们是一个城市啊”，之后，嵩格公司发送文档“反馈（10.19）.docx”；10月20日嵩格公司询问“文档的内容什么时候能搞定”，10月21日七奕公司发送“反馈的文档今天可以改完，除了最后通知的push功能，因为里面也还有开播的通知，还需要你们给我们华为、vivo等等这些手机的开发者账号才可以，所以我们建议可以放在二期语聊直播一块完成。通知里app里面的通知都是已经完成了”，嵩格公司回复“push不是用第三方吗”，七奕公司答复“也需要开发者的账号，因为不同机型不一样的”；10月22日，七奕公司发送文档“10.21修改反馈内容.docx”，并再次发送链接供嵩格公司下载软件版本。3．双方电子邮件往来显示：（1）10月4日嵩格公司向七奕公司发送附件为“Dfuse整改需求说明.docx”的电子邮件，文档反馈了有关“登录注册”“首页”“发布”“我的”“全局”五部分模块的具体问题；（2）10月6日嵩格公司向七奕公司发送附件为“Dfuse整改需求说明2.docx”的电子邮件，亦针对已交付版本的模块功能梳理多项具体问题，并指出“以上问题请认真阅读需求文档描述修改；本反馈内容仅为一阶段需求功能流程问题反馈，关于体验优化与界面ui优化将另提文档进行反馈”；（3）10月8日，七奕公司向嵩格公司发送邮件及附件，称“以上文档是对项目情况的一个大概总结和进度的反馈”，嵩格公司回复“谢谢你把项目的实际情况与正式文件方式进行记录，而且我也强调文档中提到‘9月30日发送的包，除了部分细节功能，已完成合同规定的功能模块’此说明还是和事实有出入，这个版本除了修正一些在9月20日版本的一些bug之外，一些第一阶段的功能并没有完成，其中包括用户地位、附近的人匹配、背包和排行等功能，这些并非细节问题......后续我方会陆续监督项目情况是否改善且10月11号版本是否能达到我方预期”；（4）10月9日，七奕公司向嵩格公司发送项目进度安排表的电子邮件，嵩格公司回复“对甲方而言功能不完整和需求不符就是没有完成此功能并不存在‘完成，细节优化’这个说法。请在规定时间完成承诺的功能。”；（5）10月18日，嵩格公司向七奕公司发送电子邮件“告知函”，称“请贵公司于收到本函件后3日内将第一阶段的成果交付”；（6）10月19日，嵩格公司向七奕公司发送附件为“反馈10.19.docx”的电子邮件，针对已交付版本的模块功能梳理了多项具体问题，并指出“由于部分功能无法跑通，所以验收测试未完成”“请你们自己把每个功能跑通，没问题后再提交，不然浪费大家时间”；（7）10月23日，嵩格公司通过向七奕公司发送电子邮件且附件为“解约函”，嵩格公司称“我公司项目组在2019年10月22日晚20点30分收到贵公司提交的一阶段社交基础版app，经过项目组验收测试，发现此版本仍然存在诸多问题，无法满足双方最初达成的要求，介于该版本已逾期32天......即刻起双方的合同关系解除......”。诉讼中双方陈述，涉案合同所约定软件开发内容，包括安卓和苹果两个系统的软件版本；涉案合同所约定的三个阶段交付版本都有对应的软件包，也有对应的源代码，每一个阶段所需交付的开发内容，都可以独立实现约定的模块功能。合同履行中，针对苹果IOS版本软件包，以及安卓、苹果版本的源代码，七奕公司均未提交。嵩格公司主张2019年10月10日通过微信群向七奕公司催问“苹果版本呢”，七奕公司回答“苹果需要SDK，咱们先出安卓版本吧”，原审庭审中七奕公司确认有关催要苹果版本属实。2019年10月22日晚，七奕公司针对开发内容涉及的基础社交安卓版软件进行最后一次交付。原审庭审中，双方确认以该版本的软件（名称为DFUSE）进行界面、模块及功能的核对、比对。根据对软件“DFUSE”的具体比对，可以看出有关软件模块的功能尚不能实现，包括首页、广场、消息、个人等版块出现无法注册、无法验证、无法获取附近定位用户、无法搜索用户、无法搜索家族、操作无法验证等。（三）其他与案件争议相关的情况嵩格公司于2019年10月23日通过电子邮件向七奕公司发送“解约函”，七奕公司确认收到该函。解约函中载明：“《软件外包（委托）合同》第四条3款2项已明确约定迟延交付成果达三十日，则嵩格公司有权解除合同，现函告七奕公司，自收到本函件之日起，双方签署的合同立即解除；请七奕公司立即退还合同首期款100000元，并赔偿违约损失”。另，七奕公司主张于2019年10月23日通过电子邮件向嵩格公司发送告知函，要求嵩格公司积极沟通并交流项目中存在的问题，希望双方友好沟通协商顺利完成并交付软件的使用，而不是针对某一阶段的问题对合作予以否定，并针对已经提交第一阶段版本向嵩格公司催要第二笔合同款项。嵩格公司系有限责任公司（外国法人独资），成立于2016年11月23日，注册资本1500万元人民币，经营范围包括软件开发、软件外包服务、软件技术服务。七奕公司系有限责任公司，成立于2015年10月19日，注册资本100万元人民币，经营范围包括计算机硬件开发销售、计算机系统集成等。原审法院认为，本案的争议焦点为：双方主张的违约行为是否成立，涉案合同是否应当被解除，以及合同责任的承担。关于违约行为的认定。《中华人民共和国合同法》（以下简称合同法）第八条第一款规定：“依法成立的合同，对当事人具有法律约束力。当事人应当按照约定履行自己的义务，不得擅自变更或者解除合同。”合同法第六十条第一款规定：“当事人应当按照约定全面履行自己的义务。”本案中，双方合同约定的开发事项围绕手机APP社交类软件，约定交付开发内容是按照阶段性进行交付，且明确了每一阶段版本的交付时间及具体包含的模块功能。根据查明事实，七奕公司曾于2019年9月19日至10月22日期间多次交付安卓版软件，并就该交付内容双方还进行多次沟通反馈以及软件模块功能的修改等，但原审庭审中针对安装于2019年10月22日的软件进行查看，依然存在无法注册、无法获取附近定位用户、无法搜索用户、无法搜索家族等问题，因此，就安卓版本的交付行为而言，并未在约定的期限内达到相关需求功能，嵩格公司就此主张七奕公司违约，原审法院予以支持。七奕公司抗辩认为其交付符合约定，并举示有关软件操作查看的视频，但该视频的形成时间并无印证材料，亦无法据此判断视频所反映的软件及其功能内容是否与双方一致确认作为比对核对的“Dfuse”软件一致且未经修改和篡改，故七奕公司所举示的证据材料原审法院无法采信，对其抗辩亦不予支持。至于七奕公司认为，合同约定的阶段性交付时间系参考时间，应当依据约定的项目完成时间120日作为交付时限的判断标准，原审法院认为，即使存在完成总时间的约定，亦不能否认阶段性完成开发内容并有明确的阶段性交付时间的约定事实，且基于双方的履约行为来看也无任何新的协商一致意见表明双方对该交付时间点予以变更。至于七奕公司还认为，因嵩格公司接收安卓版软件，且双方已进行了有关第二阶段开发事项的沟通，足以表明第一阶段开发完成，不存在未按期交付的情形，原审法院认为，现有证据并不能证明双方就第一阶段的交付行为乃至交付内容达成一致意见，则无论双方是否进行第二阶段开发内容的沟通，均不影响七奕公司应当首先按照约定时间及需求内容交付第一阶段基础社交版本的认定。因此，七奕公司的上述抗辩均不能成立，原审法院不予支持。本案中，双方一致确认交付的软件应当包含安卓和苹果版，且每一阶段的交付版本都有对应的软件包，也有对应的源代码，每一个阶段所需交付的开发内容，都可以独立实现约定的模块功能，则结合合同条款，依照有利于实现合同目的的方式来判断，七奕公司应当按期交付的开发内容包括安卓版与苹果版，以及两个版本对应的源代码。现针对苹果版本软件包，以及安卓、苹果版本的源代码，七奕公司均未提交，因此其行为构成违约。原审法院对嵩格公司的违约主张予以支持，对七奕公司的相反主张则不予支持。合同法第六十七条规定：“当事人互负债务，有先后履行顺序，先履行一方未履行的，后履行一方有权拒绝其履行要求。先履行一方履行债务不符合约定的，后履行一方有权拒绝其相应的履行要求。”鉴于上述分析已经认定七奕公司的行为存在违约，而双方合同约定的第二次付款是基于开发方按期完成基础社交版本的交付，包括软件安装包及源代码的交付，因此，就七奕公司要求的该笔付款，嵩格公司有权表示拒绝，而七奕公司就嵩格公司的未支付行为主张构成违约，则缺乏事实和法律依据，原审法院亦不予支持。综上，原审法院认为，七奕公司未按期交付开发内容的行为构成违约，而嵩格公司未支付第二笔合同费用的行为不构成违约。关于合同解除的问题。合同法第九十三条第二款规定：“当事人可以约定一方解除合同的条件。解除合同的条件成就时，解除权人可以解除合同。”合同法第九十六条第一款规定：“当事人一方依照本法第九十三条第二款、第九十四条的规定主张解除合同的，应当通知对方，合同自通知到达对方时解除。对方有异议的，可以请求人民法院或者仲裁机构确认解除合同的效力。”涉案合同中双方约定，七奕公司应当按期交付，若因其自身原因延期30日，则嵩格公司有权解除合同。本案中，七奕公司未按期交付且超过30日，则嵩格公司有权依约行使合同解除权，其于2019年10月23日向七奕公司发出解约函，通知合同解除事项，七奕公司亦确认收到该函，因此，解约函已经发生法律效力。故，原审法院确认涉案合同于2019年10月23日解除。针对嵩格公司要求确认合同解除的诉请主张，原审法院予以支持；对七奕公司的相反主张则不予支持。因涉案合同系嵩格公司行使约定解除权予以解除，而七奕公司反诉请求判令嵩格公司构成违约而解除合同，则不能成立，原审法院不予支持。关于合同责任的承担。合同法第九十七条规定：“合同解除后，尚未履行的，终止履行；已经履行的，根据履行情况和合同性质，当事人可以要求恢复原状、采取其他补救措施，并有权要求赔偿损失。”合同法第一百零七条规定：“当事人一方不履行合同义务或者履行合同义务不符合约定的，应当承担继续履行、采取补救措施或者赔偿损失等违约责任。”如前所述，涉案合同解除系因七奕公司违约行为导致嵩格公司行使合同解除权，则嵩格公司有权要求七奕公司退款并承担违约责任。鉴于本案涉及计算机软件开发，现有事实表明，七奕公司曾提交部分开发版本，虽然并未达到合同约定的功能需求，但就工作量及其劳动付出而言，也不宜全部否定，故就嵩格公司所主张的退还全部已付款项，结合合同性质、履行情况、当事人的过错程度等，原审法院酌情确定予以退还60000元，对嵩格公司的该项诉请予以部分支持，嵩格公司主张七奕公司逾期退款的违约责任及违约金计算方式，符合法律规定，原审法院亦予以支持。嵩格公司还主张，基于合同约定，因七奕公司未按期交付，则每延期一天，应当按照约定的计算方式承担补偿费16000元的违约责任。原审法院认为，合同法第一百一十四条规定：“当事人可以约定一方违约时应当根据违约情况向对方支付一定数额的违约金，也可以约定因违约产生的损失赔偿额的计算方法。约定的违约金低于造成的损失的，当事人可以请求人民法院或者仲裁机构予以增加；约定的违约金过分高于造成的损失的，当事人可以请求人民法院或者仲裁机构予以适当减少。当事人就迟延履行约定违约金的，违约方支付违约金后，还应当履行债务。”本案中，就补偿费的违约责任，双方不仅约定若每延期一天则嵩格公司将扣除七奕公司总费用的0.2%作为补偿，也约定了若嵩格公司未能按时付款，则每延期一天，嵩格公司将额外支付七奕公司总费用的0.2%作为补偿，即双方就违约行为所引发的补偿费支付责任是对等的、公平的。现因七奕公司违约，自2019年9月20日应当交付之日的次日起计算，至嵩格公司发送解约函之日，已经延期32日，则应当依照前述计算方式承担相应违约责任。故，嵩格公司要求七奕公司支付迟延交付的补偿费16000元，具有事实和法律依据，原审法院予以支持。至于嵩格公司还主张七奕公司应赔偿其员工工资及律师费的损失共20000元，其并未举证证实工资支出系唯一对应合同履行行为，双方也并未明确诉讼纠纷乃至律师费的支出系合同直接损失的范畴，同时，就迟延履行行为已经判令七奕公司承担补偿费支付的违约责任，而就确认涉案合同解除后的退款责任亦判令七奕公司承担逾期退款的资金占用损失，则在嵩格公司并未明确举证证实其主张的该部分损失大小仍明显超过本案已经判令的违约责任承担金额大小时，不宜再针对该部分主张金额计算损失赔偿的数额。故，原审法院对其该项诉请主张不再予以支持。综上，原审法院对嵩格公司的本诉请求予以部分支持，对七奕公司的反诉请求不予支持。据此，原审法院依照《中华人民共和国合同法》第八条、第六十条第一款、第六十七条、第九十三条第二款、第九十六条第一款、第九十七条、第一百零七条、第一百一十四条，《中华人民共和国民事诉讼法》第一百四十八条第一款、第二款、第三款之规定，判决：一、确认嵩格公司与七奕公司签订的《软件外包（委托）合同》（合同编号为QY20190803D）于2019年10月23日解除；二、自原审判决生效之日起十日内，七奕公司退还嵩格公司合同款项60000元，并承担逾期退款的资金占用损失（以前述60000元为基数，自2019年10月23日起至实际清偿之日止，按照同期全国银行间同业拆借中心公布的贷款市场报价利率计算）；三、自原审判决生效之日起十日内，七奕公司向嵩格公司支付违约金16000元；四、驳回嵩格公司的其他诉讼请求；五、驳回七奕公司的反诉请求。如七奕公司未在指定的期间履行上述金钱给付义务，则应当按照《中华人民共和国民事诉讼法》第二百五十三条之规定，加倍支付迟延履行期间的债务利息。本案本诉案件受理费3026元，由嵩格公司负担1026元，七奕公司负担2000元；反诉案件受理费1050元，由七奕公司负担。二审中，双方当事人均未提交新证据。原审查明的事实属实，本院予以确认。本院认为，结合七奕公司的上诉意见及案件事实，本案二审的争议焦点问题为：（一）七奕公司是否存在违约行为，即七奕公司第一阶段交付软件的内容与时间是否符合合同约定；（二）若构成违约，原审判决对于违约责任的认定是否正确。《中华人民共和国民法典》（以下简称民法典）自2021年1月1日起施行，合同法同时废止。根据《最高人民法院关于适用时间效力的若干规定》第一条第二款的规定：“民法典施行前的法律事实引起的民事纠纷案件，适用当时的法律、司法解释的规定，但是法律、司法解释另有规定的除外”。因本案合同订立、履行等相关法律事实均发生于民法典施行前，故本案应适用合同法的相关规定进行审理，但是法律、司法解释另有规定的除外。（一）关于七奕公司是否存在违约行为合同法第八条第一款规定：“依法成立的合同，对当事人具有法律约束力。当事人应当按照约定履行自己的义务，不得擅自变更或者解除合同”。合同法第六十条第一款规定：“当事人应当按照约定全面履行自己的义务。”七奕公司主张附近、匹配、家族聊天、游客模式、定位、push功能等均为嵩格公司临时增加、修改的要求，非合同约定的第一阶段交付内容。根据涉案合同记载，第一阶段交付的基础社交版功能包括匹配聊天、家族等，因此，上述功能不属于嵩格公司临时增改的要求。另外，从2019年9月19日、9月20日、9月30日、10月22日四次交付对应的微信聊天记录及邮件往来来看，双方就该交付内容进行了多次沟通反馈并进行软件模块功能修改。经审查，原审法院对安装于2019年10月22日的软件进行查看比对后发现，依然存在无法注册、无法获取附近定位用户、无法搜索用户、无法搜索家族等问题，且七奕公司也未按合同约定交付安卓版、苹果版以及相对应的源代码。因此，应当认定七奕公司所交付的第一阶段成果并未满足合同约定的要求。至于七奕公司上诉主张软件无法使用是由于嵩格公司私自更换或停用原接入的第三方SDK，由于七奕公司负责涉案软件开发，在开发过程中，相关软件开发工具包的权限通常由开发方掌握，且在案证据证明七奕公司仅交付了软件安装包，并未交付所对应的源代码，在相关权限设置仍由七奕公司掌握的情况下，七奕公司主张嵩格公司私自更换或停用原接入的SDK，应当提交证据加以证明，因七奕公司未能提供相关证据，本院对其该项主张不予支持。针对交付时间，七奕公司上诉主张，软件开发过程中存在诸多需求变更，应对交付期间进行延展。本院认为，涉案合同不仅约定了120日的整体项目完成时间，还明确约定了各阶段成果的交付时间。在双方当事人未明确表示或以履约行为表明更改交付时间，且根据现有证据双方对第一阶段交付内容并未作出变更的情况下，七奕公司多次交付的软件成果仍无法实现登录注册等基础功能，应当认定七奕公司未按期按约履行义务。至于七奕公司主张是因嵩格公司故意拖延时间、不诚信合作导致的交付迟延，由于其未提供相应证据证明，本院亦不予支持。综上，原审法院认定七奕公司构成违约，并无不当，应予维持。（二）关于原审判决对于违约责任的认定是否正确合同法第一百一十四条规定：“当事人可以约定一方违约时应当根据违约情况向对方支付一定数额的违约金，也可以约定因违约产生的损失赔偿额的计算方法。约定的违约金低于造成的损失的，当事人可以请求人民法院或者仲裁机构予以增加；约定的违约金过分高于造成的损失的，当事人可以请求人民法院或者仲裁机构予以适当减少。当事人就迟延履行约定违约金的，违约方支付违约金后，还应当履行债务。”七奕公司上诉主张，原审判决以合同总金额为基数计算补偿费属违约金明显过高，且不应当在要求七奕公司支付资金占用损失的同时支付违约金。对此，本院认为，首先，就补偿费这一违约责任，双方在涉案合同中已经明确约定：如因七奕公司自身原因，未能按时交付，则每延期一天，嵩格公司将扣除七奕公司总费用的0.2%作为补偿。对违约金的约定系合同双方当事人的意思自治，除明显过高或过低外，人民法院不作干预。同时，判断违约金是否过高或过低的比较标准是守约方的实际损失，包括直接损失和履行利益。从涉案合同对违约金约定的内容来看，双方就违约行为所引发的补偿费支付责任是对等、公平的，如七奕公司主张违约金明显过高，应当就此承担相应的证明责任。其次，原审判决所认定的资金占用损失系针对逾期退款的利息，即自合同解除之日起七奕公司未向嵩格公司退款而给后者造成的损失，而补偿费则属于双方当事人在订立合同时针对延期交付所造成损失约定的违约金，两笔款项的性质不同，两者并不冲突，因此，七奕公司的上述主张不能成立。综上，原审判决七奕公司向嵩格公司支付违约金16000元、退还合同款项60000元并承担逾期退款的资金占用损失并无不当，本院予以支持。综上所述，七奕公司的上诉请求不能成立，应予驳回。原审判决认定事实清楚，适用法律正确，应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项之规定，判决如下：驳回上诉，维持原判。二审案件受理费5762元，由上诉人成都七奕网络科技有限公司负担。本判决为终审判决。审 判 长 原晓爽审 判 员 何 隽审 判 员 薛 淼二〇二一年七月二十二日法官助理 刘清启书 记 员 汪 妮裁判要点案号（2021）最高法知民终906号案由计算机软件开发合同纠纷合议庭审判长：原晓爽审判员：何隽、薛淼法官助理：刘清启书记员：汪妮裁判日期2021年7月22日涉案合同《软件外包（委托）合同》关键词软件著作权；合同履行；违约责任；违约金当事人上诉人（原审被告、反诉原告）：成都七奕网络科技有限公司；被上诉人（原审原告、反诉被告）：嵩格科技（成都）有限公司。裁判结果驳回上诉，维持原判。原判主文：一、确认嵩格科技（成都）有限公司与成都七奕网络科技有限公司签订的《软件外包（委托）合同》（合同编号为QY20190803D）于2019年10月23日解除；二、自本判决生效之日起十日内，成都七奕网络科技有限公司退还嵩格科技（成都）有限公司合同款项60000元，并承担逾期退款的资金占用损失（以前述60000元为基数，自2019年10月23日起至实际清偿之日止，按照同期全国银行间同业拆借中心公布的贷款市场报价利率计算）；三、自本判决生效之日起十日内，成都七奕网络科技有限公司向嵩格科技（成都）有限公司支付违约金16000元；四、驳回嵩格科技（成都）有限公司的其他诉讼请求；五、驳回成都七奕网络科技有限公司的反诉请求。涉案法条《中华人民共和国合同法》第八条第一款、第六十条第一款、第一百一十四条。法律问题约定违约金裁判观点对违约金的约定系合同双方当事人的意思自治，除明显过高或过低外，人民法院不作干预。同时，判断违约金是否过高或过低的比较标准是守约方的实际损失，包括直接损失和履行利益。如违约方主张违约金过高，应当就此承担相应的证明责任。注：本摘要并非判决书之组成部分，不具有法律效力。