앱·ERP 외주 개발이 기한 안에 끝나지 않았다면 — 완성으로 볼 수 있나, 검수 거부와 해제, 기성 정산과 선급금 반환까지
2026. 10. 17.
앱·웹·ERP 외주 개발이 기한을 넘기거나 검수에서 막혔다면 완성 여부부터 따져야 합니다. 검수 거부의 정당성, 해제와 기성 정산, 선급금 반환과 지체상금, 소스코드 인도와 집행까지 실제 판결로 대응 순서를 짚었습니다. 수원 광교 법무법인 도모.
목차
- 핵심만 먼저 정리하면
- 외주 개발 계약은 도급입니다 — '완성'이 모든 계산의 출발점
- 완성인가 미완성인가 — 주요 기능과 최후 공정을 보는 기준
- 완성을 인정한 판결과 부정한 판결
- 검수확인서에 서명했어도, 검수를 거부했어도 — 검수가 갖는 진짜 의미
- 해제할 수 있는 때와 해제 통지의 방식
- 기성 정산 — 만든 만큼 줄 것인가, 전부 돌려받을 것인가
- 선급금·중도금 반환과 손해배상 — 돌려받는 돈의 범위
- 지체상금 — 계약서대로 다 받을 수 있나
- 소스코드 인도와 저작권 — 계약서에 없어도 받을 수 있나
- 동업처럼 맺은 공동개발 계약은 해제·반환의 틀이 달라집니다
- 개발사 쪽이라면 — 잔금을 받으려면 무엇을 증명해야 하나
- 개발사에 돈이 없을 때 — 가압류에서 압류·추심까지
- 이 경우는 선임 실익이 없습니다
- 분쟁 초기에 피해야 할 대응 다섯 가지
- 자주 묻는 질문
- 앱 개발 외주가 미완성인데 선금 돌려받을 수 있나요?
- 검수확인서에 서명했는데 나중에 미완성이라고 다툴 수 있나요?
- 발주자가 검수를 안 해 주면 개발사는 잔금을 못 받나요?
- 외주 개발 기성고는 어떻게 계산하나요?
- 소스코드를 안 넘겨주는데 받을 방법이 있나요?
- 개발 지연 지체상금은 계약서 금액대로 다 받나요?
- 개발사가 외주를 다시 줬는데 실제 개발자에게도 청구할 수 있나요?
- 개발사가 폐업하면 판결을 받아도 소용없지 않나요?
- 이 글에서 인용한 판결과 법령
- 법무법인 도모는 이 사건을 이렇게 진행합니다
- 첫 상담에서 확인하는 것
- 김강희 변호사의 대응 방식
- 함께할 때 결과가 달라지는 이유
- 법무법인 도모가 함께하겠습니다
- 수원·경기 남부에서 상담이 필요하시다면
약속한 오픈일이 몇 달 지났는데 앱은 로그인부터 오류가 나고, 개발사는 남은 잔금을 주면 마무리하겠다고 합니다. 반대로 개발사 쪽에서는 다 만들어 넘겼는데 발주자가 검수를 미루며 잔금을 주지 않는다고 찾아옵니다. 외주 개발 분쟁은 이렇게 같은 결과물을 두고 한쪽은 미완성이라 하고, 다른 쪽은 완성됐다고 말하는 데서 시작합니다. 결론부터 말씀드리면, 소프트웨어 외주 개발은 도급이므로 결과물이 완성되었는지가 잔금, 해제, 선급금 반환, 지체상금을 모두 정하고, 완성 여부는 검수확인서의 서명이 아니라 약정한 주요 기능이 실제로 작동하는지로 판단됩니다. 소프트웨어 개발 도급이란, 민법 제664조에 따라 개발사가 약정한 프로그램을 완성할 것을 약속하고 발주자가 그 결과에 대하여 보수를 지급하기로 하는 계약을 말합니다. 실무에서 결론이 갈리는 지점은 다섯입니다. 완성과 하자를 어디서 나누는지, 검수를 받았거나 거부했다는 사실이 무슨 의미인지, 해제를 적법하게 했는지, 미완성이라도 만든 만큼 대금을 줘야 하는지, 그리고 이긴 뒤 개발사에게서 실제로 돈과 소스코드를 받아낼 수 있는지입니다. 아래에서는 완성 판단 기준, 검수의 의미, 해제와 기성 정산, 선급금 반환과 지체상금, 소스코드와 저작권, 개발사가 돈이 없을 때의 집행까지 실제 판결을 근거로 차례로 짚어 보겠습니다.
핵심만 먼저 정리하면
외주 개발이 덜 끝났으면 선급금을 전부 돌려받을 수 있나요 — 원칙적으로 가능합니다. 완성 전에 계약이 해제되면 개발사는 보수를 청구할 수 없는 것이 원칙이고(대법원 2023. 3. 30. 선고 2022다289174 판결), 서울고등법원 2021. 6. 24. 선고 2020나2016875 판결은 완성률이 66퍼센트에 못 미친 ERP 대체 시스템에 대해 기성대금을 인정하지 않고 계약금·착수금 1억 3,620만 원 반환을 명했습니다.
검수확인서에 서명했으면 완성된 것인가요 — 그렇지 않을 수 있습니다. 서울고등법원 2014. 11. 20. 선고 2014나1203 판결은 납품되지 않은 검색엔진까지 포함된 검수결과서가 있어도 이행이 완료되었다고 볼 수 없다며 해제를 인정했고, 대법원 2015다5569 판결로 그 결론이 유지되었습니다.
개발사가 거의 다 만들었는데도 전부 반환인가요 — 예외가 있습니다. 대법원 1996. 7. 30. 선고 95다7932 판결은 완성도 87.87퍼센트로 약간 보완하면 쓸 수 있는 소프트웨어에 대해 그때까지의 보수를 인정했고, 서울중앙지방법원 2020. 1. 15. 선고 2019나27283 판결은 기성고 78.6퍼센트만큼 대금을 인정했습니다(민법 제665조, 제673조).
외주 개발 계약은 도급입니다 — '완성'이 모든 계산의 출발점
앱이든 쇼핑몰이든 ERP든, 주문받아 새로 만드는 소프트웨어 개발 계약은 원칙적으로 도급으로 다뤄집니다. 대법원 95다7932 판결은 소프트웨어 개발·공급계약을 일종의 도급계약으로 보고, 개발사는 원칙적으로 일을 완성해야 보수를 청구할 수 있다고 했습니다. 도급에서 보수는 완성된 목적물의 인도와 동시에 지급하는 것이 원칙이므로(민법 제665조 제1항), 완성 여부를 다투는 순간 잔금 청구, 해제, 선급금 반환, 지체상금의 계산이 한꺼번에 흔들립니다.
다만 계약서가 정한 보수 방식은 따로 봐야 합니다. 대법원 1998. 3. 13. 선고 97다45259 판결은 소프트웨어 개발·공급계약이 통상 정액 보수의 도급이지만 실제 투입한 인력의 실적에 따라 대가를 지급하기로 약정할 수도 있다고 보았고, 고속도로 교통관리시스템 기술용역에서 공정현황을 부풀려 받은 해외기술자 용역대가 6억 2,412만여 원의 반환채무를 인정한 원심을 유지했습니다. 저희가 사건을 맡으면 먼저 계약서가 '결과물 완성에 대한 대가'인지 '투입 인력에 대한 대가'인지부터 확인합니다. 투입형이라면 미완성 주장만으로는 돈을 돌려받기 어렵고, 투입 실적이 허위인지를 다퉈야 합니다.
계약 구조도 함께 봐야 합니다. 계약한 개발자가 다른 개발자들을 데려와 함께 작업한 경우, 발주자의 상대방은 계약서에 이름이 적힌 사람입니다. 서울중앙지방법원 2018. 11. 1. 선고 2017가단5073071 판결은 계약 상대방인 개발자가 고용한 개발자들은 수정계약서에 서명하지 않았고 감독 대상으로만 적혀 있었다며, 그들에 대한 원상회복·지체상금 청구를 기각했습니다.
완성인가 미완성인가 — 주요 기능과 최후 공정을 보는 기준
완성과 하자는 '예정된 최후의 공정을 마쳤는가'와 '주요 구조 부분이 약정대로 만들어졌는가'로 나뉩니다. 대법원 1994. 9. 30. 선고 94다32986 판결은 공사가 도중에 중단되어 최후의 공정을 마치지 못했으면 미완성이고, 최후 공정까지 일단 마치고 주요 구조 부분이 약정대로 시공되었는데 불완전한 부분이 있으면 완성된 목적물의 하자라고 했습니다. 대법원 2019. 9. 10. 선고 2017다272486, 272493 판결은 여기에 '사회통념상 일반적으로 요구되는 성능을 갖추었을 것'을 더하고, 완성되었다면 하자는 하자담보책임 규정으로 처리하는 것이 당사자 의사와 법률 취지에 맞는다고 했습니다. 최후 공정을 마쳤는지는 당사자 주장에 얽매이지 않고 계약 내용과 신의칙에 비추어 객관적으로 판단합니다.
이 구별은 소송의 방향을 바꿉니다. 미완성이면 발주자는 이행지체를 이유로 해제하고 지급한 돈을 돌려받는 길로 갑니다. 완성되었다면 발주자는 잔금을 내야 하고, 남은 문제는 하자보수나 그에 갈음한 손해배상(민법 제667조)이며, 계약을 해제하려면 하자 때문에 계약 목적을 달성할 수 없어야 합니다(제668조). 하자보수·손해배상·해제는 목적물을 인도받은 날부터 1년 안에 해야 한다는 점(제670조)도 놓치기 쉽습니다. 대법원 95다7932 판결이 미완성 부분은 하자가 아니므로 하자보수청구권을 내세워 보수 지급을 거절할 수 없다고 한 것도 같은 논리입니다.
소프트웨어에서는 '주요 기능'이 무엇인지가 핵심입니다. 그래서 제안요청서, 요구사항정의서, 기능명세서, 화면설계서가 판단 기준이 되고, 법원은 감정인을 통해 기능별 작동 여부를 확인합니다. 소프트웨어 감정 실무를 다룬 한국소프트웨어감정평가학회 논문(2021)은 서울중앙지방법원 2006가합85902, 2006가합90072, 2008가합27771 판결 등을 기능별 완성도 감정 사례로 소개합니다. 앞의 두 건은 ERP 구축, 뒤의 한 건은 웹사이트 구축 하도급을 둘러싼 사건입니다. 그 사건들의 주문을 보면, 용역대금반환 청구에서 1억 4,150만 원 반환을 명한 판결(2008. 10. 23. 선고 2006가합85902), 용역비 청구에서 원고와 승계참가인에게 합계 6억 9,859만여 원 지급을 명한 판결(2009. 5. 7. 선고 2006가합90072), 손해배상 청구를 기각한 판결(2011. 3. 16. 선고 2008가합27771)로 결론이 갈렸습니다. 감정에서 무엇을 기준 문서로 삼느냐가 승패와 직결된다는 뜻입니다.
완성을 인정한 판결과 부정한 판결
같은 '오류가 많다'는 주장도 개발이 어디까지 진행되었느냐에 따라 결론이 정반대로 갑니다. 먼저 완성을 인정한 쪽입니다. 서울중앙지방법원 2020. 9. 25. 선고 2019가단5110653 판결은 웹·앱 개발에서 늦어도 고객사가 프로그램에 접속해 사용성 테스트를 시작한 무렵 개발과 검수가 완료되었다고 보고, 남은 것은 하자(버그) 보수뿐이라며 이행지체·이행불능을 이유로 한 해제를 받아들이지 않았습니다. 홈페이지가 해킹되어 데이터베이스가 일시 소실되었지만 백업되어 있어 복구할 수 있으므로 해제 사유가 되지 않는다고 보아, 원상회복 2,650만 원을 포함한 6,537만여 원 청구를 전부 기각했습니다. 대법원 2017다272486 판결도 장비 하도급에서 주요 구조 부분이 약정대로 만들어졌다면 견적서와 다른 부품은 하자담보로 처리하면 되고, 수급인은 잔금을 청구할 수 있다고 했습니다.
반대로 미완성으로 본 판결도 분명합니다. 서울고등법원 2020나2016875 판결은 기존 ERP를 대체하는 시스템을 4억 5,400만 원(부가세 별도)에 개발하기로 한 사건에서, 납기 2018. 1. 15.을 넘기고 2018년 4월 오픈도 지키지 못하자 발주자가 2018. 4. 2. 한 해제를 적법하다고 보았습니다. 1심인 서울남부지방법원 2018가합109425 판결은 개발사의 대금 청구를 일부 받아들였지만, 항소심은 1심 감정의 완성률 66퍼센트에 데이터 이관 프로그램이 빠져 있어 실제 완성률은 그보다 낮고 다른 업체가 이어서 완성하기도 어려워 지금 상태가 발주자에게 이익이 된다고 볼 수 없다고 판단했고, 대법원 2021다255808 판결로 확정되었습니다. 서울고등법원 2022. 12. 8. 선고 2021나2009805 판결도 해군 통합 훈련체계 개발에서 다섯 차례 개발시험을 거치고도 끝내 합격하지 못하고 운용시험 814개 절차 중 165개가 실패한 사정을 들어, 하위 체계가 하나의 통합 체계로 작동해야 하므로 일부만 떼어 완성을 인정할 수 없다고 했습니다(대법원 2023다212225 판결로 상고기각).
두 갈래를 가른 것은 '쓸 수 있는 상태였는가'였습니다. 실제 사용자가 접속해 쓰기 시작했다면 완성 쪽으로, 통합 테스트를 통과하지 못했거나 핵심 기능이 빠졌다면 미완성 쪽으로 기웁니다. 발주자라면 오류 목록을 '하자'가 아니라 '미구현 기능'으로 정리해 두는 것이, 개발사라면 실제 운영·사용 사실을 기록해 두는 것이 출발점입니다.
검수확인서에 서명했어도, 검수를 거부했어도 — 검수가 갖는 진짜 의미
검수는 완성을 확인하는 절차일 뿐, 서명 한 장이 완성을 만들어 주지도 않고 거부 한 번이 완성을 없애지도 않습니다. 서울고등법원 2014나1203 판결은 지하철 역사 쇼핑몰(e-shop) 시스템을 8억 9,076만여 원에 공급하기로 한 사건에서, 검수결과서의 소프트웨어 목록에 실제로는 납품되지 않은 검색엔진까지 들어 있었고 검수도 개발사 대표 측 사람이 했으며(개발사 대표가 당시 발주사 대표이사를 겸하던 사안입니다), 계약 조건상 이행을 완료한 뒤 검수를 받아야 하는데 이행 완료 전에 검수가 먼저 이루어졌다는 점을 들어 이행 완료를 부정했습니다. 그 결과 발주자의 해제가 적법하고, 이미 지급한 4억 6,200만 원은 원상회복 대상이 되었습니다.
반대 방향도 있습니다. 대법원 2017다272486 판결은 민법 제665조의 '인도'에는 도급인이 목적물을 검사하고 계약대로 완성되었음을 시인하는 것까지 포함된다고 하면서도, '검사에 합격하면 대금을 지급한다'는 약정은 조건이 아니라 지급 시기에 관한 불확정기한이라고 보았습니다. 그래서 수급인이 최후 공정을 마쳤는데 도급인이 최종 검수를 거부하고 해제를 통보해 검수 합격이 불가능해지면 그때 잔금 청구권의 기한이 도래합니다. 원심인 서울고등법원 2015나2021866 판결은 수급인에게 24억 6,400만 원 지급을 명했고, 이 결론이 유지되었습니다. 발주자가 '검수를 안 해 줬으니 잔금도 없다'고 버티는 전략은 완성이 인정되는 순간 무너집니다.
계약서의 '검수 간주' 조항도 만능이 아닙니다. 서울고등법원 2018. 9. 6. 선고 2017나2059124 판결은 인도일부터 10일 안에 검수 결과를 통지하지 않으면 검수가 완료된 것으로 본다는 조항을 근거로 한 개발사의 항변을, 발주자가 소스코드 없이는 검수가 성립하지 않는다고 이의하며 내용증명을 주고받던 상황이었다는 이유로 받아들이지 않았습니다. 발주자라면 검수 기한 안에 '무엇이 왜 불합격인지'를 서면으로 남기는 것이 가장 중요한 방어입니다.
해제할 수 있는 때와 해제 통지의 방식
납기를 넘겼다고 곧바로 해제가 되는 것은 아니고, 상당한 기간을 정해 이행을 최고한 뒤 그 기간 안에도 이행하지 않아야 해제할 수 있는 것이 원칙입니다(민법 제544조). 서울고등법원 2020나2016875 판결은 납기 이후 양측이 협의한 2018년 4월 오픈 일정을 이행기 연장 합의가 아니라 발주자가 이행지체를 바로잡을 시정기한을 준 것으로 보고, 그 기간이 지난 뒤의 해제를 적법하다고 했습니다. 개발사가 요구사항 변경 때문에 늦어졌다고 주장했지만 증명이 부족하다고 보았습니다. 납기 이후의 협의 메일이 '연장 합의'로 읽힐지 '시정 요구'로 읽힐지는 문구 하나로 갈리므로, 저희는 기한을 다시 정할 때 반드시 '최고'라는 취지를 명시하도록 권합니다.
개발사가 일방적으로 손을 떼는 경우도 있습니다. 서울중앙지방법원 2019나27283 판결은 스마트창구 시스템의 기획·디자인·퍼블리싱을 맡은 업체가 발주사의 프로젝트 관리 미흡을 이유로 해지 공문을 보내고 인력을 철수한 사건에서, 그 해지 자체는 적법하지 않다고 보았습니다. 다만 발주사가 철수를 받아들이고 남은 작업을 직접 마쳤으므로 묵시적 합의해지로 계약이 끝났다고 보았습니다. 해제 사유가 부족해도 계약이 끝났다고 인정될 수 있지만, 그때는 정산과 손해배상을 다시 따지게 됩니다.
완성 전이라면 발주자는 손해를 배상하고 언제든 해제할 수도 있습니다(민법 제673조). 다만 이 해제는 개발사의 잘못을 묻는 해제가 아니어서 선급금 반환보다 배상 문제가 커지므로, 채무불이행 해제 요건을 갖출 수 있는지부터 따져 보는 것이 순서입니다.
기성 정산 — 만든 만큼 줄 것인가, 전부 돌려받을 것인가
미완성 상태에서 해제되면 보수를 청구할 수 없는 것이 원칙이고, 기성고 정산은 예외입니다. 대법원 2022다289174 판결은 완성 전에 해제되면 수급인이 보수를 청구할 수 없음이 원칙이라고 하면서, 전부 원상회복하는 것이 신의칙상 공평하지 않은 특별한 경우에만 이미 완성된 부분의 보수를 인정할 수 있다고 했습니다. 판단 요소로는 당사자 관계, 계약의 목적과 내용, 도급인의 관여 정도, 이행 결과의 정도와 그로 인해 도급인이 얻는 실질적 이익, 원상회복에 따른 사회적·경제적 손실을 들었습니다. 이 판결은 수행한 용역 대가만큼 반환액에서 공제한 원심(서울고등법원 2021나10676 판결)을 파기했습니다.
기성을 인정한 판결은 '발주자가 실제로 그 결과물을 썼다'는 공통점이 있습니다. 대법원 95다7932 판결은 이미 설치된 소프트웨어의 완성도가 87.87퍼센트에 이르러 약간 보완하면 업무에 쓸 수 있었고, 발주자가 개발사의 수정·보완 제의를 거부하고 해제를 통보한 사안이었습니다. 서울중앙지방법원 2019나27283 판결도 발주사가 철수한 업체의 결과물을 넘겨받아 나머지 작업을 마치고 앱을 오픈한 사건에서, 주간보고서를 바탕으로 기획 93.6퍼센트, 디자인 70.7퍼센트, 퍼블리싱 70.5퍼센트의 진척률을 각 비중으로 합산해 기성고를 78.6퍼센트로 보았습니다. 계약금액 1억 8,480만 원에 이 비율을 곱한 1억 4,525만여 원에서 기지급액 1억 1,088만 원을 뺀 3,437만여 원이 미지급 대금이 되었습니다. 양쪽 모두 감정을 신청하지 않아 개발사가 낸 보고서가 기준이 되었다는 점은 발주자 쪽에서 눈여겨볼 대목입니다.
기성을 부정한 판결은 '그 상태로는 쓸 수 없다'는 데서 출발합니다. 서울고등법원 2020나2016875 판결은 다른 업체가 남은 부분을 완성하기도 어렵다는 점을 들었고, 서울고등법원 2021나2009805 판결은 계약상 기성금으로 승인해 지급한 것이 아니라며 공제 없이 받은 돈 전부의 반환을 명했습니다. 정리하면 발주자는 '쓸 수 없고, 이어서 완성할 수도 없다'를, 개발사는 '발주자가 이미 쓰고 있거나 조금만 고치면 쓸 수 있다'를 증명해야 합니다. 그래서 제 견해로는 이 국면에서 감정 사항을 누가 먼저, 어떤 문서를 기준으로 짜느냐가 사실상 승부를 가릅니다.
선급금·중도금 반환과 손해배상 — 돌려받는 돈의 범위
해제가 인정되면 개발사는 받은 돈을 받은 날부터의 이자를 붙여 돌려줘야 합니다(민법 제548조). 다만 실제 판결은 부가가치세와 이자율에서 금액이 달라집니다. 서울고등법원 2020나2016875 판결은 부가세 포함 1억 4,982만 원을 지급했어도 부가세 상당액은 원상회복 대상이 아니라며 1억 3,620만 원 반환을 명했고, 서울고등법원 2017나2059124 판결도 지급액 6,325만 원에서 발주자가 매입세액으로 환급받은 부가세 575만 원을 뺀 5,750만 원을 반환액으로 보았습니다.
손해배상은 '헛돈이 된 비용'을 중심으로 인정됩니다. 서울고등법원 2020나2016875 판결은 프로젝트용 사무실 임차료·관리비 1억 567만여 원은 배상 대상으로 보지 않았지만, 연결결산·주석 시스템 구축비 1억 6,500만 원과 운영체제·데이터베이스 라이선스 비용 2,271만여 원은 손해로 보면서 여러 사정을 고려해 배상액을 3,000만 원으로 제한했습니다. 하도급 개발에서 원청에 물어 준 지체상금도 손해가 됩니다. 서울고등법원 2017나2059124 판결은 하도급 개발사의 소스코드 미제공 때문에 원청 개발사가 발주처에 지급한 지체상금 2,605만여 원을 손해로 인정했지만, 추가 개발에 들인 인건비와 체류비는 인과관계 증명이 부족하다며 받아들이지 않았습니다.
다른 업체에 다시 맡긴 비용을 청구할 때도 마찬가지입니다. 서울중앙지방법원 2019나27283 판결은 업체 철수 뒤 다른 외주사에 맡긴 디자인·퍼블리싱 비용 3,036만여 원은 손해로 보았지만, 발주사 측 관리 미흡도 계약 종료의 원인이었다며 책임을 50퍼센트로 제한했습니다. 영수증과 세금계산서가 '이 프로젝트 때문에' 지출된 것임을 보여 줘야 인정됩니다.
지체상금 — 계약서대로 다 받을 수 있나
지체상금 약정이 있으면 손해를 따로 증명하지 않아도 되지만, 법원은 부당히 과다하면 감액합니다(민법 제398조 제2항). 서울중앙지방법원 2017가단5073071 판결은 웹서비스 개발 지연 사건에서 총 계약금 4,992만여 원에 하루 0.5퍼센트를 곱하고, 새 개발자들이 마무리하는 데 걸릴 기간으로 본 120일을 곱한 2,995만여 원을 산정한 뒤 70퍼센트인 2,096만여 원으로 줄였고, 개발자가 받은 착수금·중도금 등 1,392만여 원의 반환과 합해 3,489만여 원을 인정했습니다. 별도로 맡긴 디자인 계약금 800만 원은 개발 계약과 무관한 별도 손해로 보기 어렵고, 손해라 하더라도 예정액에 포함된다며 따로 인정하지 않았습니다.
금액이 커질수록 감액 폭도 큽니다. 서울고등법원 2021나2009805 판결은 583일 지체로 계산된 지체상금 109억 6,526만여 원을 30퍼센트인 32억 8,958만여 원으로 줄이고, 계약보증금 18억 8,083만 5,000원을 뺀 14억 874만여 원을 인정했습니다. 지체상금의 끝나는 날은 '완성한 날' 또는 '해제한 날'이므로, 앞서 본 완성과 미완성의 구별이 여기서도 그대로 쓰입니다(대법원 94다32986 판결). 발주자는 하루라도 빨리 시정 최고와 해제 시점을 정해야 지체상금이 해제일에 멈춘다는 점, 개발사는 발주자 측 자료 제공 지연이나 요구사항 변경을 증거로 남겨 두어야 지체 일수를 줄일 수 있다는 점을 기억해야 합니다.
소스코드 인도와 저작권 — 계약서에 없어도 받을 수 있나
주문 개발이라면 계약서에 소스코드가 적혀 있지 않아도 인도 의무가 인정될 수 있습니다. 서울고등법원 2017나2059124 판결은 하도급 개발사가 컴파일된 결과물만 주고 소스코드는 줄 수 없다고 버틴 사건에서, 이 계약이 시스템 구매가 아니라 개발용역 계약이고 개발용역에서는 소스코드를 제공하는 것이 업계 관행이며 원청 계약상으로도 산출물이라는 점을 들어 제공 의무를 인정했습니다. 계약서에 산출물 기재가 없는 것은 제외 합의가 아니라 단순한 생략이라고 보았고, 유지보수 의무와 소스코드 제공 의무가 필연적으로 연결되는 것은 아니라며 노하우 보호나 유지보수 수익을 이유로 한 거절 주장도 받아들이지 않았습니다. 이 판결은 대법원 2018다274984 판결로 상고가 기각되었습니다. 서울고등법원 2021나2009805 판결에서도 핵심 엔진의 소스코드 인도 거부가 미완성과 함께 해제 사유로 다뤄졌습니다.
그러나 소스코드를 받는 것과 저작권을 갖는 것은 다른 문제입니다. 저작자는 저작물을 창작한 자이고(저작권법 제2조 제2호), 외주 개발자는 발주자의 업무에 종사하는 사람이 아니므로 업무상저작물 규정(제9조)으로 발주자가 저작자가 되지는 않는 것이 원칙입니다. 제 견해로는 계약서에 '결과물의 소유권은 발주자에게 귀속한다'고만 적어 두면, 그 문구가 저작재산권 양도인지 이용 허락인지를 두고 해석 다툼이 생기기 쉽습니다. 저작재산권은 양도할 수 있고(제45조 제1항), 프로그램은 특약이 없으면 2차적저작물작성권도 함께 양도된 것으로 추정되므로(제45조 제2항 단서), 발주자라면 '소유권' 대신 '저작재산권 일체의 양도'와 '소스코드·설계서 인도'를 계약서에 명시해야 합니다.
해제 뒤에는 반대 방향의 문제도 생깁니다. 서울고등법원 2021나2009805 판결은 발주자의 선급금 반환청구와 결과물 반환이 동시이행 관계라고 보았습니다. 돈을 돌려받으려면 받은 결과물을 돌려줄 준비를 해야 하고, 해제된 결과물을 계속 운영하면 그 자체가 새로운 분쟁이 될 수 있습니다.
동업처럼 맺은 공동개발 계약은 해제·반환의 틀이 달라집니다
개발비를 '출자'라고 부르며 수익과 결과물을 나누기로 했다면, 도급이 아니라 동업(조합)으로 판단될 수 있고 그러면 선금을 돌려받는 길 자체가 달라집니다. 대법원 2024. 9. 27. 선고 2024다224645 판결은 동업계약과 같은 조합계약에서는 해산청구·탈퇴·제명을 할 수 있을 뿐 일반 계약처럼 해제하고 상대방에게 원상회복 의무를 지울 수는 없다는 법리를 다시 확인했습니다. 블록체인 기반 부동산 임대관리 시스템을 함께 개발하기로 한 공동사업 계약이 문제된 사건이었습니다. 원심인 서울중앙지방법원 2024. 1. 26. 선고 2022나63876 판결은 이 계약을 조합계약으로 보고, 개발사의 미지급 개발인건비 6,000만 원 청구와 발주 측의 기지급 개발인건비 1억 4,000만 원 반환 청구를 모두 기각했습니다. 그러나 대법원은 양쪽 모두 해제·해지를 전제로 다투었을 뿐 조합의 해산이나 탈퇴를 두고 공방한 적이 없는데도 법원이 그 점을 묻지 않고 조합으로 결론 낸 것은 석명의무 위반이라며 원심을 파기환송했습니다. 환송 후의 결론은 확인하지 못했습니다. 계약의 성격을 어떻게 보느냐가 반환 청구의 성패를 가르고, 그 쟁점을 소송 초기에 정면으로 다퉈야 한다는 점을 보여 주는 사건입니다.
스타트업이 지분이나 수익배분을 조건으로 개발사와 손잡는 경우가 많은데, 이때 계약서 제목과 문구 하나가 반환 가능성을 좌우합니다. 저희는 공동사업 형태라도 개발 부분만큼은 별도의 개발용역 계약으로 떼어 내 완성 기준과 반환 조항을 두라고 권합니다.
개발사 쪽이라면 — 잔금을 받으려면 무엇을 증명해야 하나
개발사가 잔금을 받으려면 '다 만들었다'는 말이 아니라 '약정한 주요 기능이 작동하고 마지막 공정까지 마쳤다'는 사실을 증명해야 합니다. 보수는 완성된 목적물과 맞바꾸는 것이므로(민법 제665조), 실무에서는 잔금을 청구하는 쪽이 완성을 증명해야 하는 부담을 안게 됩니다. 서울중앙지방법원 2019가단5110653 판결에서 개발사 쪽이 이길 수 있었던 것은 고객사가 실제로 프로그램에 접속해 사용성 테스트를 시작했다는 사실이 확인되었기 때문입니다. 운영 서버 이관 기록, 사용자 접속 로그, 앱 마켓 배포 이력, 발주자가 보낸 수정 요청이 '버그 수정' 수준이었다는 메일이 가장 강한 증거가 됩니다.
완성까지 가지 못했다면 기성 정산을 노려야 하는데, 이때는 발주자가 그 결과물로 실제 이익을 얻었다는 점이 핵심입니다. 대법원 95다7932 판결은 발주자가 개발사의 수정·보완 제의를 거부하고 해제를 통보한 사정을, 서울중앙지방법원 2019나27283 판결은 발주사가 철수 때 결과물을 인도받아 나머지 작업을 마친 사건이었습니다. 반대로 서울고등법원 2020나2016875 판결처럼 1심에서 대금 일부를 인정받았더라도 항소심에서 '다른 업체가 이어서 완성하기도 어려운 상태'로 평가되면 기성 청구 전체가 무너질 수 있습니다. 개발사라면 해지나 해제 직전에 산출물을 정리해 인계하고, 인계 목록에 발주자의 확인을 받아 두는 것이 이후 정산의 근거가 됩니다.
일방적으로 인력을 철수하는 것은 피해야 합니다. 서울중앙지방법원 2019나27283 판결은 기성 대금 3,437만여 원을 인정하면서도, 개발 업체가 인력을 철수해 발주사가 다른 업체에 맡긴 비용 3,036만여 원의 절반을 손해배상으로 공제해 최종 지급액을 1,918만여 원으로 줄였습니다. 대금이 밀려 작업을 멈추고 싶다면 철수 대신 서면으로 지급을 최고하고, 동시이행을 이유로 다음 단계 산출물의 인도를 보류하겠다고 통지하는 편이 안전합니다.
개발사에 돈이 없을 때 — 가압류에서 압류·추심까지
외주 개발 분쟁에서 가장 아픈 결말은 판결을 받고도 돈을 못 받는 것입니다. 개발사는 사무실과 서버 외에 재산이 거의 없는 경우가 많고, 분쟁이 길어지면 인력이 빠져나가며 폐업하기도 합니다. 서울고등법원 2014나1203 판결의 사안에서도 개발사가 하도급 대금을 못 내자 하도급업체가 지급명령으로 데이터센터에 있던 서버를 압류해 1,040만 원에 매각했습니다. 반환채권이 확인될 무렵에는 남은 재산이 거의 없었던 셈입니다.
그래서 순서가 중요합니다. 해제 통지를 보내는 시점에 개발사가 다른 발주처에서 받을 용역대금 채권이나 예금을 가압류해 두는 것을 검토합니다(민사집행법 제276조). 판결이나 화해조서를 받은 뒤에는 재산명시를 신청하고(제61조), 확인된 채권을 압류해 추심명령이나 전부명령을 받습니다(제229조). 개발사가 가진 프로그램 저작권도 그 밖의 재산권으로서 압류할 수 있는데(제251조), 이 방법은 별도의 글에서 자세히 다뤘습니다. 다만 판결 주문이 '결과물 반환과 동시에' 돈을 지급하라는 형태라면, 결과물을 돌려주었거나 돌려줄 준비를 했다는 점을 증명해야 집행을 시작할 수 있습니다(제41조 제1항).
개발사가 거꾸로 잔금을 받으러 오는 경우에도 같은 원리가 적용됩니다. 대법원 2017다272486 사건(장비 제작 하도급)처럼 검수 거부로 잔금이 묶인 수급인이라면, 발주자의 매출채권이나 예금에 대한 가압류가 협상의 지렛대가 됩니다.
이 경우는 선임 실익이 없습니다
솔직하게 말씀드리면 변호사 비용이 회수액을 넘기 쉬운 사건이 있습니다. 첫째, 계약금액이 수백만 원대인 랜딩페이지나 간단한 홈페이지 제작이라 선급금도 소액인 경우입니다. 이런 사건은 감정 비용만으로도 회수액을 넘길 수 있습니다. 둘째, 상대가 1인 프리랜서이고 이미 연락이 끊겼으며 압류할 재산이 보이지 않는 경우입니다. 셋째, 이미 결과물을 받아 서비스를 운영하고 있고 남은 문제가 몇 가지 버그 수정뿐인 경우입니다. 서울중앙지방법원 2019가단5110653 판결처럼 완성으로 판단될 가능성이 커서, 해제와 전액 반환을 구하는 소송은 이기기 어렵습니다.
선임을 검토할 사건은 계약금액이 수천만 원 이상이고 선급금·중도금이 크게 나간 경우, 통합 테스트나 오픈을 끝내 통과하지 못한 경우, 개발사가 소스코드나 결과물 인도를 거부하는 경우, 검수 거부나 지체상금을 두고 쌍방이 청구를 주고받는 경우, 개발사의 자금 사정이 나빠 보여 보전처분이 급한 경우입니다. 이런 사건은 해제 통지 문구, 감정 사항, 가압류 시점 중 하나만 어긋나도 결과가 달라집니다. 반대로 결과물이 이미 쓸 만한 수준이라면, 하자보수 일정과 잔금 일부 감액으로 합의하는 편이 시간과 비용 면에서 나을 수 있고 상담에서도 그렇게 말씀드립니다.
분쟁 초기에 피해야 할 대응 다섯 가지
검수 기한을 그냥 넘기는 것. 검수 간주 조항이 있으면 침묵이 합격으로 읽힐 수 있으므로, 불합격 사유를 항목별로 서면 통지해야 합니다.
오류 목록을 '하자'라고만 부르는 것. 미구현 기능과 하자를 나눠 적어야 미완성 주장이 살아납니다.
납기 이후 '언제까지 되나요' 식의 메일만 보내는 것. 이행기 연장 합의로 해석되지 않도록 최고 기한과 해제 예고를 명시해야 합니다.
해제하면서 결과물과 서버 접근권을 그대로 쓰는 것. 원상회복과 동시이행 문제, 저작권 문제가 새로 생깁니다.
개발사 인력이 빠져나가는데도 소송부터 준비하는 것. 소스코드와 산출물 확보, 채권 가압류가 먼저입니다.
자주 묻는 질문
앱 개발 외주가 미완성인데 선금 돌려받을 수 있나요?
받을 수 있는 경우가 많습니다. 개발사의 이행지체로 계약을 적법하게 해제하면 받은 돈에 이자를 붙여 돌려받는 것이 원칙입니다(민법 제548조, 대법원 2022다289174 판결). 다만 결과물을 이미 서비스에 쓰고 있거나 조금만 고치면 쓸 수 있는 상태라면 기성 부분만큼 공제될 수 있습니다(대법원 95다7932 판결).
검수확인서에 서명했는데 나중에 미완성이라고 다툴 수 있나요?
다툴 수 있습니다. 서울고등법원 2014나1203 판결은 납품되지 않은 기능까지 포함된 검수결과서가 있어도 이행 완료로 볼 수 없다고 했습니다. 다만 서명 경위와 당시 실제 작동 상태를 보여 줄 자료가 있어야 하므로 화면 녹화와 테스트 기록을 남겨 두십시오.
발주자가 검수를 안 해 주면 개발사는 잔금을 못 받나요?
그렇지 않습니다. 검수 합격은 대금 지급의 조건이 아니라 지급 시기에 관한 불확정기한이어서, 일을 완성했는데 발주자가 검수를 거부하고 해제를 통보하면 잔금을 청구할 수 있습니다(대법원 2017다272486 판결). 완성했다는 점은 개발사가 증명해야 합니다.
외주 개발 기성고는 어떻게 계산하나요?
보통 법원 감정으로 기능별 구현 여부를 확인해 비율을 냅니다. 감정이 없으면 주간보고서 같은 진척 자료가 기준이 되기도 하는데, 서울중앙지방법원 2019나27283 판결은 업무별 진척률에 비중을 곱해 78.6퍼센트를 인정했습니다. 어떤 문서를 기준으로 삼느냐가 결과를 크게 바꿉니다.
소스코드를 안 넘겨주는데 받을 방법이 있나요?
있습니다. 주문 개발 용역이라면 계약서에 명시가 없어도 소스코드 제공 의무가 인정될 수 있고, 거부하면 채무불이행으로 해제와 손해배상을 청구할 수 있습니다(서울고등법원 2017나2059124 판결). 저작권까지 넘겨받으려면 저작재산권 양도 특약이 따로 필요합니다(저작권법 제45조).
개발 지연 지체상금은 계약서 금액대로 다 받나요?
감액될 가능성이 큽니다. 법원은 부당히 과다한 예정액을 줄일 수 있고(민법 제398조 제2항), 실제로 70퍼센트(서울중앙지방법원 2017가단5073071 판결), 30퍼센트(서울고등법원 2021나2009805 판결)로 줄인 판결이 있습니다. 계약보증금을 몰취했다면 그 금액도 공제됩니다.
개발사가 외주를 다시 줬는데 실제 개발자에게도 청구할 수 있나요?
어렵습니다. 계약 당사자가 아닌 개발자에게는 계약상 책임을 물을 수 없다는 판결이 있습니다(서울중앙지방법원 2017가단5073071 판결). 계약서에 적힌 상대방과 대금을 받은 계좌 명의를 먼저 확인하십시오.
개발사가 폐업하면 판결을 받아도 소용없지 않나요?
미리 대비하면 회수 가능성을 높일 수 있습니다. 해제 무렵 개발사의 다른 용역대금 채권이나 예금을 가압류하고(민사집행법 제276조), 판결 뒤 재산명시와 채권 압류·추심으로 이어 가는 것이 기본입니다(제61조, 제229조). 프로그램 저작권도 압류 대상이 될 수 있습니다(제251조).
이 글에서 인용한 판결과 법령
대법원 1996. 7. 30. 선고 95다7932 판결 — 소프트웨어 개발·공급계약은 도급, 완성도 87.87퍼센트 소프트웨어의 중도 해소와 그때까지의 보수, 미완성 부분은 하자 아님
대법원 1998. 3. 13. 선고 97다45259 판결(원심 서울고등법원 96나7153) — 소프트웨어 용역의 투입 실적 기준 대가 약정, 과다지급 용역대가 반환
대법원 1994. 9. 30. 선고 94다32986 판결(원심 대전고등법원 93나4142 판결 파기환송) — 미완성과 하자의 구별 기준, 지체상금 종기
대법원 2019. 9. 10. 선고 2017다272486, 272493 판결과 원심 서울고등법원 2017. 9. 8. 선고 2015나2021866, 2021873 판결 — 완성 기준, 인도의 의미, 검사 합격은 불확정기한, 검수 거부 시 잔금 청구
대법원 2023. 3. 30. 선고 2022다289174 판결 — 완성 전 해제 시 보수 청구 불가 원칙과 예외 판단 요소(원심 서울고등법원 2021나10676 판결 파기환송)
서울고등법원 2014. 11. 20. 선고 2014나1203 판결(1심 서울동부지방법원 2012가합13239), 대법원 2017. 8. 18. 선고 2015다5569 판결(상고기각) — 쇼핑몰 시스템 검수결과서와 이행 완료 부정, 해제와 4억 6,200만 원 원상회복
서울고등법원 2021. 6. 24. 선고 2020나2016875, 2020나2016882 판결(1심 서울남부지방법원 2018가합109425, 2018가합111206), 대법원 2021. 10. 28. 선고 2021다255808, 255815 판결(상고기각) — ERP 대체 시스템 완성률 66퍼센트 미만, 기성 부정, 원상회복과 신뢰이익 배상 1억 6,620만 원
서울고등법원 2022. 12. 8. 선고 2021나2009805, 2021나2009812 판결(1심 서울중앙지방법원 2017가합570703, 2018가합501063), 대법원 2023. 5. 18. 선고 2023다212225, 212232 판결(상고기각) — 통합 훈련체계 미완성·소스코드 미인도 해제, 전액 원상회복, 지체상금 30퍼센트 감액
서울중앙지방법원 2020. 1. 15. 선고 2019나27283, 2019나27290 판결(1심 서울중앙지방법원 2016가단5252631, 2017가단5039248, 확정) — 묵시적 합의해지, 기성고 78.6퍼센트, 대체 외주비 배상과 50퍼센트 책임 제한
서울고등법원 2018. 9. 6. 선고 2017나2059124 판결(1심 서울중앙지방법원 2017가합512936), 대법원 2019. 1. 17. 선고 2018다274984 판결(상고기각) — 소스코드 제공 의무, 검수 간주 조항 배척, 원청 지체상금 손해
서울중앙지방법원 2018. 11. 1. 선고 2017가단5073071 판결(확정) — 웹서비스 개발 해제, 원상회복과 지체상금 70퍼센트 감액, 재하도급 개발자 책임 부정
서울중앙지방법원 2020. 9. 25. 선고 2019가단5110653 판결(확정) — 웹·앱 개발·검수 완료 후 버그는 하자, 해킹으로 인한 데이터베이스 소실과 백업 복구 가능성, 해제 부정
대법원 2024. 9. 27. 선고 2024다224645 판결(원심 서울중앙지방법원 2024. 1. 26. 선고 2022나63876, 2022나63883 판결 파기환송, 환송 후 결론 미확인) — 조합계약은 해제·원상회복 불가, 해지통고와 해산청구, 조합 성격을 두고 석명 없이 결론 낸 원심 파기
서울중앙지방법원 2008. 10. 23. 선고 2006가합85902, 2007가합52244 판결, 2009. 5. 7. 선고 2006가합90072 판결, 2011. 3. 16. 선고 2008가합27771 판결(각 상급심 확인 안 됨) — 소프트웨어 감정 사례로 소개된 판결들, 반환 인용·대금 인용·청구 기각의 주문
법령 — 민법 제398조, 제544조, 제548조, 제664조, 제665조, 제667조, 제668조, 제670조, 제673조 / 저작권법 제2조 제2호·제16호·제31호, 제9조, 제45조 / 민사집행법 제41조, 제61조, 제229조, 제251조, 제276조 (2026. 10. 17. 조회)
법무법인 도모는 이 사건을 이렇게 진행합니다
외주 개발 분쟁은 코드 싸움처럼 보이지만 실제로는 문서 싸움입니다. 제안요청서와 계약서가 약속한 기능, 개발사가 실제로 구현한 기능, 그 사이를 오간 메일과 회의록을 한 줄로 세우면 완성인지 미완성인지, 누가 먼저 계약을 어겼는지가 대부분 드러납니다. 그래서 첫 작업은 요구사항과 구현 상태를 대조하는 표를 만드는 일입니다.
첫 상담에서 확인하는 것
먼저 계약서와 견적서, 제안서, 요구사항정의서를 받아 보수가 결과물 완성에 대한 대가인지 투입 인력에 대한 대가인지, 검수 절차와 검수 간주 조항, 지체상금률, 산출물과 소스코드 인도 조항, 저작권 귀속 문구를 확인합니다. 다음으로 계약금·중도금·잔금의 지급 일자와 금액, 세금계산서를 정리합니다. 세 번째로 납기 이후 주고받은 메일과 메신저 대화를 시간순으로 읽으며, 그것이 연장 합의로 읽힐지 시정 요구로 읽힐지를 봅니다. 네 번째로 테스트 서버나 앱 설치 파일, 화면 녹화처럼 현재 작동 상태를 보여 줄 자료가 남아 있는지, 결과물을 이미 운영에 쓰고 있는지 묻습니다. 마지막으로 상대 개발사의 규모와 다른 거래처, 최근 인력 이탈이나 체불 소식처럼 회수 가능성을 가늠할 정보를 확인합니다.
김강희 변호사의 대응 방식
김강희 변호사는 발주자 사건이라면 먼저 시정 최고와 해제 예고를 담은 서면을 보내 이행기 연장 합의로 해석될 여지를 없애고, 검수 불합격 사유를 미구현 기능과 하자로 나눠 정리합니다. 해제 무렵에는 개발사의 다른 매출채권이나 예금에 대한 가압류를 함께 검토하고, 소스코드와 산출물 인도를 요구해 기록을 남깁니다. 소송에서는 감정인이 무엇을 기준으로 완성도를 볼지 감정 사항을 구체적으로 정해 신청하고, 기성 정산 주장에 대해서는 발주자가 그 결과물로 얻은 실질적 이익이 없다는 점을 다른 업체의 견적이나 재개발 경위로 보여 줍니다. 개발사 사건이라면 반대로 실제 운영 사실, 사용자 접속 기록, 검수 요청과 무응답의 경과를 모아 완성을 증명하고, 발주자 측 자료 제공 지연과 요구사항 변경을 지체 일수에서 빼도록 다툽니다.
함께할 때 결과가 달라지는 이유
위에서 본 판결들에서 결론을 가른 것은 화려한 기술 논쟁이 아니었습니다. 납기 뒤 보낸 메일이 시정기간으로 읽혔는지, 검수결과서에 무엇이 들어 있었는지, 검수 기한 안에 이의를 남겼는지, 계약서가 '출자'라고 적었는지, 감정을 누가 신청했는지 같은 문서 한 장이 수천만 원에서 수억 원의 차이를 만들었습니다. 저희는 영업관리 시스템 구축이 실패한 사건에서 발주사를 대리해 기지급 대금 반환과 지체상금을 인정받은 경험이 있고, 그 과정에서 이런 문서의 순서가 얼마나 중요한지 확인했습니다. 첫 상담에서 이 사건이 해제와 반환으로 갈 사건인지, 기성 정산을 전제로 협상할 사건인지, 하자보수로 정리하는 편이 나은 사건인지를 구분해 말씀드립니다.
법무법인 도모가 함께하겠습니다
외주 개발이 멈추면 돈보다 시간이 먼저 사라집니다. 오픈 일정은 밀리고, 이미 낸 돈은 묶이고, 개발사와의 대화는 점점 짧아집니다. 법은 완성되지 않은 일에 대가를 줄 필요가 없다는 원칙과, 이미 쓸 수 있는 결과물에는 대가를 주어야 한다는 예외를 함께 두고 있습니다. 내 사건이 어느 쪽인지는 계약서와 구현 상태를 나란히 놓고 보아야 알 수 있습니다.
계약서와 제안서, 요구사항정의서, 검수 관련 메일, 지급 내역과 세금계산서, 현재 결과물의 화면 녹화를 모아 두시기 바랍니다. 개발사 인력이 빠져나가고 있다면 소스코드와 산출물부터 확보하셔야 합니다. 비슷한 상황에 계시다면 자료를 정리해 법무법인 도모로 문의해 주시기 바랍니다.
수원·경기 남부에서 상담이 필요하시다면
법무법인 도모는 수원 광교에 사무소를 둔 로펌입니다. 수원지방법원·수원지방검찰청과 가까운 광교중앙로에 자리하고 있으며, 수원·용인·화성·성남·오산·평택 등 경기 남부 전역의 손해배상·대여금·계약 분쟁 등 민사 사건을 맡고 있습니다. 대표변호사를 포함한 8인의 변호사가 사건을 직접 담당합니다.
수원지방법원에 소송을 제기하시거나 소장을 받으셨다면 첫 서면이 사건의 틀을 정합니다. 자료를 정리해 오시면 첫 상담에서 사건의 방향과 다음 단계를 함께 짚어 드립니다. 수원 법무법인 도모로 문의해 주시기 바랍니다.