上海市高级人民法院
民 事 判 决 书
（2017）沪民终114号
上诉人(原审被告)：上海黑弧数码传媒股份有限公司，住所地上海市宝山区。
法定代表人：刘萨莎，该公司董事长。
委托诉讼代理人：ＸＸ中，上海市纵横律师事务所律师。
被上诉人(原审原告)：福瑞博德软件开发(深圳)有限公司，住所地广东省深圳市。
法定代表人：徐嘉(JACOBJAHHSU)，该公司董事长。
委托诉讼代理人：张映雪，女。
委托诉讼代理人：卞晓蕾，女。
上诉人上海黑弧数码传媒股份有限公司(以下简称黑弧公司)因与被上诉人福瑞博德软件开发(深圳)有限公司(以下简称福瑞博德公司)计算机软件开发合同纠纷一案，不服上海知识产权法院(2016)沪73民初721号民事判决，向本院提起上诉。本院于2017年4月10日立案后，依法组成合议庭，于同年5月18日公开开庭进行了审理。上诉人委托诉讼代理人ＸＸ中，被上诉人委托诉讼代理人张映雪、卞晓蕾到庭参加诉讼。本案现已审理终结。
黑弧公司上诉请求：撤销(2016)沪73民初721号民事判决，改判驳回福瑞博德公司原审诉讼请求。事实和理由：1、涉案软件未完成开发并通过验收。双方的邮件往来表明福瑞博德公司已将涉案软件部署到黑弧公司提供的服务器，并对涉案软件进行了测试，但测试不代表正式验收。涉案软件的开发一直在进行中，并未完成开发，福瑞博德公司在一审中提供的涉案软件光盘无法打开，其内容无法辨识。2、黑弧公司所称安排资金尽快支付以及收取发票并不代表验收通过，这仅是黑弧公司诚信履约的行为。
福瑞博德公司辩称：一审法院适用法律正确，请求二审法院驳回上诉，维持原判。理由：1、福瑞博德公司按合同约定提供了服务并交付了完整的软件源代码及软件文档。2、福瑞博德公司以书面形式向黑弧公司提交了验收报告，之后又多次按照黑弧公司要求重新提交验收报告。3、黑弧公司告知福瑞博德公司其正在尽力安排资金，并要求福瑞博德公司开具尾款发票，福瑞博德公司多次催款均未收到黑弧公司关于验收报告的任何问题，根据合同约定应视为验收已通过。
福瑞博德公司向一审法院起诉请求：判令黑弧公司支付拖欠的服务费用人民币521,000元(以下币种均为人民币)及逾期付款违约金，每月按应付款项的0.3%计算，计算至实际支付日止。
一审法院认定事实：
福瑞博德公司、黑弧公司于2014年3月24日签订涉案合同，约定甲方为黑弧公司，乙方为福瑞博德公司。项目实施内容以附件一“黑弧云销平台系统功能列表”和附件二“黑弧云销平台系统工作量评估与报价表”为准。甲方负责提供业务需求资料、软件运行所依赖的基础环境、在约定时间内支付软件开发费用等，乙方负责根据甲方具体需求进行设计、软件代码的编写并确保软件质量、培训甲方人员、提供操作说明文档等，甲乙双方共同对项目实施结果进行验收，甲方出具验收结论性报告。合同约定90天内完成软件开发工作，投入试运行，项目开发费用为1,102,000元。涉案合同第7条约定：“7.1.验收标准：乙方需在内部测试合格后提交甲方进行验收，甲方在生产系统环境中进行功能和性能验收测试。需完全符合相关附件所提供的功能和性能要求；相关软件文档清晰准确便于阅读与后期维护并经甲方或甲方授权代表签收确认。7.2.验收由双方人员共同参与。系统开发或配置完成后，经乙方内部测试通过，即可按照项目进度配合甲方进行系统验收，所有系统功能模块符合本协议要求，能够正常运行。……7.4.甲方验收不合格，应出具书面的结论书，明确列出需要修改的内容；甲方怠于通知或者自验收开始之日起15个工作日内未通知乙方验收结果的，视为甲方验收合格。”涉案合同第8条约定：“1.项目首付款：合同一经签订，乙方将向甲方开具增值税发票，自甲方收到乙方发票后的10个工作日内，甲方向乙方支付开发费用的30%，即￥330,600元……2.系统发布：合同附件约定主要功能(标注优先级为1、2的功能)，确认开发完成后，乙方将向甲方开具增值税发票，自甲方收到乙方发票后的10个工作日内，甲方向乙方支付开发费用的20%，即￥220,400元……3.验收款：乙方通知甲方开始整体功能验收书面确认后，乙方将向甲方开具增值税发票，自甲方收到乙方发票后的15个工作日内，甲方向乙方支付开发费用的20%，即￥220,400元……4.质量款：甲方验收通过书面确认的三个月后，乙方将向甲方开具增值税发票，自甲方收到乙方发票后的10个工作日内，甲方向乙方支付开发费用的15%，即￥165,300元……5.维护款：项目经甲方验收合格书面确认并且经过半年免费维护期后，乙方将向甲方开具增值税发票，自甲方收到乙方发票后的15个工作日内，甲方向乙方支付开发费用的15%，即￥165,300元。”涉案合同第9条约定：“……9.3.如甲方拖欠乙方的开发费或维护费，从应付款截止日起，10日后开始计收违约金，每月按应付款的0.3%加收违约金。”
2014年5月27日，双方签署了涉案合同《补充协议》，约定项目开发费用变更为1,072,000元。涉案合同第8条约定的“5.维护款”内容变更为“项目验收合格并且经过半年免费维护期后，乙方将向甲方开具增值税发票，自甲方收到乙方发票后的15个工作日内，甲方向乙方支付剩余开发费用，即￥135,300元……”
2014年3月25日至4月15日，双方之间曾以电子邮件的方式就黑弧云销平台系统软件的需求、功能设计等进行多次沟通。
2014年5月15日，黑弧公司员工苏杰发邮件给福瑞博德公司，告知考虑福瑞博德公司的测试环境过于艰苦，会影响路演，故提供一台linux服务器供使用，并提供IP地址、操作版本和服务器硬件信息、密码等。福瑞博德公司回复会尽快安装起来。
2014年12月30日，福瑞博德公司将测试报告随邮件发送给黑弧公司员工颜文涛。
2015年1月8日，福瑞博德公司发邮件给颜文涛，告知关于项目中的两个问题，黑弧公司这边暂时还没回复，福瑞博德公司按照邮件中列举的两种方式：通过“活动归属”去关联某个项目以及页面上加一个下拉框根据项目名称去查找对涉及的问题进行修改。
2015年1月21日，福瑞博德公司发邮件给颜文涛，告知黑弧一期的项目目前都已经上了UAT环境，根据公司流程，项目验收确认需要客户的确认邮件，并问黑弧公司如果验收成功，是否可以回复一封项目验收确认邮件。
2015年8月27日，福瑞博德公司发给黑弧公司的员工毛哲媛(邮箱地址：teresa.mao@blackarcgroup.com)一封邮件，告知项目已经结束，并随附件发送了《项目验收申请》，毛哲媛于2015年8月27日答复收到该份邮件。《项目验收申请》上写明：“我方福瑞博德软件开发(深圳)有限公司已经按照合同约定于2014年12月31日完成贵公司委托开发的黑弧云销平台项目的所有开发任务(详细功能请参考附件清单)。该项目也于2015年6月30日结束了项目的质保期。现请求贵方尽快完成项目的最终验收确认流程，进而完成项目尾款发票的开出以及完成所有未付项目款项的付款流程。”
2015年9月6日，福瑞博德公司向毛哲媛发送邮件，询问：请问现在状态如何？有没有需要我们协助的呢？
2015年9月16日，福瑞博德公司发给黑弧公司陈总(邮箱地址：xiaosong.chen@blackarcgroup.com)的邮件，表示“我司已经按照合同约定，于2014年12月31日完成贵公司委托开发的黑弧云销平台项目的所有开发任务，该项目也于2015年6月30日结束了项目的质保期。目前，该项目的两笔款已经开出发票(分别为220400与165300)贵司都没有付款”。
2015年10月10日，毛哲媛发邮件回复福瑞博德公司：“感谢贵司提供的项目验收申请，我们在尽力安排资金，希望可以尽快支付，能否请贵司将所有发票先开出给我们，谢谢！”同日，福瑞博德公司回复：“到目前为止，我们还有135300RMB金额没有开出。我们可以将这笔金额开出。请告知贵司的发票邮寄地址”。毛哲媛回复：“发票抬头：上海黑弧数码传媒有限公司”。
2015年10月15日，对于当日福瑞博德公司发来的邮件，毛哲媛回复：“验收内容还在调整，待确定后再回复”。
2015年10月20日，毛哲媛邮件答复原告已经收到福瑞博德公司寄出的发票。
2015年12月1日，福瑞博德公司向毛哲媛发送邮件，内容为：“迟迟未收到贵司关于验收调整具体问题的报告，早已过了验收默认通过的时间了，请问验收内容具体有哪些调整呢，请在十日内给我们具体的问题报告，以便我方调整……”
2016年1月12日，毛哲媛回复邮件，内容为：“抱歉，现在才回复，感谢您的配合，之前贵司提供的验收报告，因没有贵司的盖章，审计这边无法通过，再麻烦您帮忙安排盖章后的验收报告，快递给我们可以吗，我们也会尽快安排，非常感谢!”
2016年1月18日，福瑞博德公司发邮件告知毛哲媛已根据贵司最新的盖章要求将验收报告加盖公章，以顺丰快递寄出，并提供了快递单号：XXXXXXXXXXXX，随附件发送了第四次催款函扫描件。当日，毛哲媛邮件回复收到。
2016年2月3日，福瑞博德公司发邮件给毛哲媛，表示仍未收到服务费共计521,000元，并向毛哲媛发送第五次催款函件。
2016年3月17日，福瑞博德公司发邮件给毛哲媛，表示将发出第六次催款函件，并再次顺丰快递寄出验收报告复印件和根据当初交付软件时已提供的所有相关软件文档重新刻制的光盘，快递单号为：XXXXXXXXXXXX。
2016年11月2日，黑弧公司员工王小虎发给福瑞博德公司一封邮件，告知由于之前的验收环境有问题，无法测试。请福瑞博德公司搭建好合适的系统环境通知黑弧公司，以方便验收。
2014年4月11日，福瑞博德公司向黑弧公司开具了发票号码为XXXXXXXX的增值税普通发票，金额为330,600元。2014年5月28日，黑弧公司向福瑞博德公司支付了该笔款项。
2014年6月19日，福瑞博德公司向黑弧公司开具了发票号码为XXXXXXXX的增值税普通发票，金额为220,400元。2014年10月21日，黑弧公司向福瑞博德公司支付了该笔款项。
2014年12月31日，福瑞博德公司向黑弧公司开具了发票号码为XXXXXXXX的增值税普通发票，金额为220,400元。2015年3月30日，福瑞博德公司向黑弧公司开具了发票号码为XXXXXXXX的增值税普通发票，金额为165,300元。2015年10月16日，福瑞博德公司向黑弧公司开具了发票号码为XXXXXXXX的增值税普通发票，金额为135,300元。以上三笔款项的发票，福瑞博德公司均寄送给了黑弧公司，迄今为止，黑弧公司未支付上述三笔款项。
2015年6月2日、2015年9月30日、2015年12月1日、2016年1月15日、2016年2月3日，福瑞博德公司通过顺丰快递向黑弧公司员工颜文涛、毛哲媛寄送了催款函，快递单号分别为：XXXXXXXXXXXX、XXXXXXXXXXXX、XXXXXXXXXXXX、XXXXXXXXXXXX、XXXXXXXXXXXX。2016年3月16日，福瑞博德公司通过顺丰快递向黑弧公司员工毛哲媛寄送了催款函、验收申请和包含涉案软件源代码、软件文档的光盘，快递单号为XXXXXXXXXXXX。2016年3月16日寄送的催款函包含如下内容：“我司已依据开发合同于2014年12月31日完成贵司委托开发的所有任务，贵司收到我司验收申请后未提供关于验收通过与否或列明待修改问题的结论书，我司依据开发合同提供的开发服务应视为验收通过，该项目也于2015年6月30日结束了质保期，且我司于2016年1月18日配合贵司再次寄送了加盖公章的验收报告。鉴于我司已向贵司提供验收款、质量款及维护款发票(发票号码为XXXXXXXX、XXXXXXXX、XXXXXXXX)，发票金额共计人民币伍拾贰万壹仟元整(RMB521,000)，贵司于2015年10月10日告知我司已安排资金并于2016年1月18日确认收到我司加盖公章的《项目验收申请》，但我司至今仍未收到前述款项，该笔费用已产生滞纳金。本次再次附送在交付软件时已提供的所有相关文档及验收申请，含文档的光盘及验收申请复印件附后，为免讼累，请贵司收到本函件后立即安排款项支付。”XXXXXXXXXXXX、XXXXXXXXXXXX、XXXXXXXXXXXX快递单号签收情况网上查询结果均显示已签收。
一审法院认为，涉案合同及《补充协议》系双方当事人的真实意思表示，依法成立并生效。涉案合同及《补充协议》的约定对当事人双方均有拘束力。本案的争议焦点为：一、涉案软件是否开发完成并通过验收；二、黑弧公司应向福瑞博德公司支付的开发费用及违约金数额。
一、涉案软件是否开发完成并通过验收
综合现有证据，可以证明福瑞博德公司已经完成涉案软件的开发，并通过验收。首先，双方于2014年5月15日、12月30日以及2015年1月8日、1月21日的邮件表明福瑞博德公司已经将涉案软件部署到黑弧公司提供的服务器，并对涉案软件进行了测试。且涉案软件及相关文档亦于2016年3月16日通过快递交付至黑弧公司。其次，涉案合同7.4条约定：甲方验收不合格，应出具书面的结论书，明确列出需要修改的内容；甲方怠于通知或者自验收开始之日起15个工作日内未通知乙方验收结果的，视为验收合格。本案中，在福瑞博德公司于2015年1月21日、8月27日请求黑弧公司出具验收确认书后，黑弧公司并未对涉案软件存在的问题提出修改意见，并于2015年10月10日表示会尽快安排付款，并要求福瑞博德公司开具所有未付款项的发票。故应当视为黑弧公司怠于通知涉案软件的验收结果，涉案软件应视为验收合格。黑弧公司认为福瑞博德公司没有提交符合合同要求且验收合格的软件的抗辩意见缺乏事实和法律依据，一审法院对此不予采信。
关于涉案软件验收通过的时间，一审法院认为，黑弧公司于2015年10月10日回复“感谢贵司提供的项目验收申请，我们在尽力安排资金，希望可以尽快支付，能否请贵司将所有发票先开出给我们”。从上述邮件来看，黑弧公司于2015年10月10日要求福瑞博德公司将所有发票开出，可以推定其已经认可福瑞博德公司完成了涉案合同包括维护在内的所有义务。根据涉案合同第8条的约定，项目经甲方验收合格书面确认并且经过半年免费维护期后，乙方将向甲方开具最后一笔维护款的增值税发票，故可以推定涉案软件于2015年4月10日通过验收，2015年10月10日维护期到期。
二、黑弧公司应向福瑞博德公司支付的开发费用及违约金数额
根据涉案合同第8条付款条件的约定，甲方在涉案软件验收通过后应当向乙方支付验收款、质量款以及维护款，共计521,000元。本案中，由于涉案软件已经通过验收且维护期亦于2015年10月10日到期，故黑弧公司应当按照合同约定支付合同剩余款项共计521,000元，福瑞博德公司的相关诉讼请求，具有合同和事实依据，一审法院予以支持。
根据涉案合同9.3条的约定，如甲方拖欠乙方开发费或维护费，从应付款截止日起，10日后开始计收违约金，每月按应付款的0.3%加收违约金。故福瑞博德公司要求黑弧公司每月按应付款0.3%支付违约金的诉请，并无不当，一审法院予以支持。关于违约金的起算日期。根据涉案合同8.3、8.4、8.5的约定，验收款、质量款以及维护款分别在验收通过且收到发票后的15个工作日、验收通过三个月后且收到发票10个工作日以及验收通过后半年且收到发票后15个工作日支付。本案中，验收款220,400元、质量款165,300元的发票开具日期分别为2014年12月31日、2015年3月30日，虽然并无证据证明黑弧公司收到验收款以及质量款发票的确切时间，但在福瑞博德公司告知验收款、质量款发票已经寄出并要求黑弧公司付款时，黑弧公司并未表示其未收到发票，故可以认定黑弧公司于2015年4月10日、2015年7月10日均已收到验收款和质量款的发票。现有证据表明黑弧公司已于2015年10月20日收到维护款135,300元的发票。故黑弧公司在涉案软件整体功能验收通过后的15个工作日内即2015年5月4日前、验收通过三个月后10个工作日内即2015年7月24日前、验收通过经过半年免费维护期且收到维护款发票15个工作日内即2015年11月10日前应当分别向福瑞博德公司支付验收款、质量款以及维护款。现黑弧公司未按期支付上述费用，故黑弧公司应于2015年5月15日起支付验收款的逾期付款违约金、应于2015年8月4日起支付质量款的逾期付款违约金、应于2015年11月21日起支付维护款的逾期付款违约金，上述违约金均应支付至黑弧公司实际付款日止。
综上，一审法院判决：一、黑弧公司应支付福瑞博德公司开发费用521,000元；二、黑弧公司应支付福瑞博德公司延期付款违约金(按每月千分之三计算，以220,400元为基数，自2015年5月15日起计算至实际支付日止；以165,300元为基数，自2015年8月4日起计算至实际支付日止；以135,300元为基数，自2015年11月21日起计算至实际支付日止)。一审案件受理费9,183元，由黑弧公司负担。
二审中，双方当事人均未提交新证据。
本院经审理查明，一审查明的事实属实，本院予以确认。
本院认为，本案二审的争议焦点为涉案软件是否开发完成并通过验收。
涉案合同第7条约定了软件开发完成和验收的标准，即“7.1.验收标准：乙方需在内部测试合格后提交甲方进行验收，甲方在生产系统环境中进行功能和性能验收测试。……7.2.验收由双方人员共同参与。系统开发或配置完成后，经乙方内部测试通过，即可按照项目进度配合甲方进行系统验收，……7.4.甲方验收不合格，应出具书面的结论书，明确列出需要修改的内容；甲方怠于通知或者自验收开始之日起15个工作日内未通知乙方验收结果的，视为甲方验收合格。”根据上述约定，涉案软件进行验收的前提是，软件开发或配置完成，并由福瑞博德公司进行内部测试；验收义务主要由黑弧公司承担，福瑞博德公司负有配合验收的义务。
合同履行过程中，福瑞博德公司于2014年12月30日和2015年1月21日发送邮件给黑弧公司，表示其已经将涉案软件部署到黑弧公司提供的服务器并完成了对涉案软件的内部测试，请黑弧公司对软件进行验收。对此，黑弧公司未表示异议。故涉案软件的开发和内部测试流程均已完成，软件验收的前提条件成就，黑弧公司应当依照合同约定对涉案软件进行验收。
2015年1月21日和8月27日，福瑞博德公司两次发送邮件给黑弧公司，要求对方尽快进行验收确认，但黑弧公司始终未回复验收结果。直至2016年8月福瑞博德公司向一审法院提起本案诉讼，黑弧公司才于同年11月2日发邮件告知验收环境有问题，无法测试。在此期间，针对福瑞博德公司的催款，黑弧公司分别于2015年10月10日、10月15日和2016年1月12日发邮件要求福瑞博德公司开具所有发票、调整验收内容、提供加盖公章的验收报告；福瑞博德公司按其要求开具了发票并邮寄了验收报告，并询问调整验收内容的具体要求，但黑弧公司再无提及调整验收内容的事宜。上述事实表明，黑弧公司在验收开始后怠于履行其验收义务，而福瑞博德公司则始终积极配合履行合同。根据合同第7.4条约定，黑弧公司怠于履行验收义务，涉案软件应视为验收合格。
综上所述，黑弧公司的上诉请求不能成立，应予驳回；一审判决认定事实清楚，适用法律正确，应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项规定，判决如下：
驳回上诉，维持原判。
二审案件受理费人民币9,010元，由上诉人上海黑弧数码传媒股份有限公司负担。
本判决为终审判决。
审判长 唐 震
审判员 张 莹
审判员 朱佳平
二〇一七年六月二十四日
书记员 陈健淋
附：相关法律条文
《中华人民共和国民事诉讼法》
第一百七十条第二审人民法院对上诉案件，经过审理，按照下列情形，分别处理：
（一）原判决认定事实清楚，适用法律正确的，判决驳回上诉，维持原判决；
……