Skip to main content
GullySystem
A practical guide

How Source-Code Ownership Works in Custom Software Projects

Ganesh HSStrategy and Technology, GullySystem
Practical advice · 5 min read

In this guide 6 sections
The short answer

The contract decides ownership. Many agreements only license the software, leaving intellectual property with the vendor unless a clause assigns it to you, so read the actual wording. Files alone prove nothing. Also confirm that the repository, hosting account and domain are registered to your organisation, because practical control decides disputes more often than legal theory does.

Ownership, licences and third-party code

Holding the files is not owning them. Ownership is a legal status set by the contract, and unless an IP-assignment or work-for-hire clause transfers it, the vendor may keep ownership after delivering every file. A licence is different. It grants the right to use the software on stated terms without moving ownership, which can still be workable but leaves the vendor holding the real asset.

Third-party code complicates this. Almost every build includes open-source libraries, paid interface kits and commercial APIs, and each carries its own licence terms that travel with the code whatever your contract says. Neither side owns those parts.

Ask for the list. Request a bill of materials naming every open-source package and paid component with its licence, because some licences restrict what you may do with the finished product.

Contract terms worth a lawyer’s time

Three clauses matter most. The first is the assignment language: does ownership transfer, and when, at final payment or progressively as each milestone is paid for? The second is a licence-back term, where the vendor assigns the work but keeps the right to reuse general components, which is normal for frameworks. The third covers early termination. It should say who owns the partly finished work if the contract ends early or a payment is disputed, because that is when vague wording gets tested.

Wording beats general principle. This article describes what to look for, but have your own lawyer read the actual clauses before you sign anything significant, because the rules differ by jurisdiction.

Ask about reuse too. If the vendor intends to reuse code written for you in another project, the contract should say whether that is allowed, because silence often favours whoever wrote the code.

Who controls the repository, deployment and accounts

Legal ownership and practical control differ. Practical control means knowing whose account holds the code repository, the hosting login, the domain registrar and any payment gateway or SMS provider the software depends on.

Suppose an online shop reached handover. It received a zip file, assumed that settled everything, and later found the hosting account, the domain and a paid interface licence still registered in the developer’s name. The accounts were the pressure point, not the code files, and the developer suddenly held all the bargaining power in the conversation that followed.

Check the domain separately. A domain registered by the developer under a personal email can lapse unnoticed, taking the website and every address on it offline until someone with the login renews it.

What a proper handover includes

A handover covers more than the codebase. It includes the commit history, not a final snapshot, every environment setting, the credentials needed to run the system, and each dependency with its licence terms. Accounts must move too. The repository, hosting, domain and related accounts should be transferred into your organisation’s ownership, not merely shared with you as a guest of the vendor’s.

Put this in the contract. Negotiating handover as a favour at the end is a weak position, because the vendor then holds the bargaining power and has little reason to make it smooth.

Test the handover once. Ask a colleague to clone the repository, build the project on a clean machine and deploy to staging using only the documents supplied. A missing step shows within an afternoon.

A verification checklist before sign-off

Check each item yourself. Do not take a vendor’s word that everything is yours now, and run the checks while the relationship is still active and cooperative.

Gaps are easy to fix now. Months later, once you need something the vendor still controls, the same gap becomes a hard conversation held on the vendor’s terms.

  • Repository sits under your organisation’s account
  • Vendor access removed or downgraded
  • Hosting, domain and gateway accounts yours
  • Every third-party licence documented
  • IP assignment clause reviewed by a lawyer
  • Full history and configuration received

Code-and-account handover checklist

A verification checklist covering repository access, hosting and domain accounts, third-party licences, IP-assignment wording, and commit history, with a column showing who currently controls each item. Gaps show up at a glance.

Open a blank worksheet to print

Questions owners ask

Does receiving code prove ownership?

No, it proves access. Ownership depends on the contract’s assignment language, and unless that language transfers it to you, the vendor may keep legal ownership after a full file handover.

What happens to third-party licences?

They stay in force. Open-source libraries, paid interface kits and commercial APIs each keep their terms, so your right to use each one depends on its licence, not on your contract.

Can we get ownership after the project ends?

It is possible but harder. A signed assignment can be added later, but the vendor has no incentive to agree cheaply, so settle ownership in the contract and have a lawyer confirm the wording.

Who should hold the repository?

Your organisation should hold it. Create the account in the company’s name with two administrators, and give the vendor’s developers invited access that you can remove the day the project ends.

Browse all guidesBack to top ↑
Next step

Have a specific situation to work through?

This article covers the general case. Tell us what you’re actually dealing with and we’ll respond directly.

Discuss Your Requirement