Who Owns Your Code? IP, Accounts and the Handover Checklist
Who owns app source code when you hire a developer? What U.S. copyright law says, which accounts must be yours, and a handover checklist to use before you pay.
Key takeaways
- U.S. copyright belongs to the author by default. If a contractor writes your code, they own it unless ownership is transferred in a signed writing.
- "Work made for hire" covers employees automatically, but software from an independent contractor is not one of the statute's listed commissioned-work categories, so use a written assignment.
- Legal ownership means little if a developer controls the accounts. Put GitHub, cloud, domain, and Apple and Google developer accounts in your name from day one.
- Some no-code platforms cannot export your app as code, so "owning" it means owning a configuration on their platform.
- Use a handover checklist: code, credentials, documentation and store accounts, all verified before final payment.
You paid for the app, so you own it. That is what most founders assume, and under U.S. law it is not automatically true. Who owns app source code depends on who wrote it, whether they were your employee, and what you both signed. Ownership of the code is also only half the story: the GitHub repository, cloud hosting, domain and app store listings are separate accounts, and whoever controls them controls your product in practice. This guide explains the rules in plain English, shows the common traps, and gives you a checklist to use before you pay a deposit and again at handover.
This is general information, not legal advice. For contracts that matter, have a lawyer review them.
What the law says, in plain English
Three parts of the U.S. Copyright Act matter here.
The author owns it first. Section 201(a): "Copyright in a work protected under this title vests initially in the author or authors of the work." The person who writes the code is the author unless an exception applies.
The work-made-for-hire exception. Section 101 defines a work made for hire in two ways. The first is "a work prepared by an employee within the scope of his or her employment." If your salaried employee writes code as part of their job, the company is the author.
The second covers specially commissioned works, but only if they fall into listed categories, such as a contribution to a collective work, part of a motion picture, a translation, a compilation, an instructional text, a test or an atlas, and only if the parties agree in a signed written instrument. Custom software is not on that list. That is why many lawyers do not rely on a "work for hire" clause alone for contractor-written software, and add an assignment.
Transfers must be in writing. Section 204(a): a transfer of copyright ownership "is not valid unless an instrument of conveyance, or a note or memorandum of the transfer, is in writing and signed by the owner of the rights conveyed." A handshake, an email saying "it's yours" or an invoice marked paid is not the same as a signed assignment.
What this means for you
| Who wrote the code | Who owns it by default | What you need |
|---|---|---|
| Your W-2 employee, as part of the job | Your company | An employment agreement with an IP clause is still wise |
| A freelancer or contractor | The freelancer | A signed written assignment of copyright to you |
| An agency or studio | The agency (or its staff, then the agency) | A contract assigning the work to you, and confirmation the agency's own contractors assigned to it |
| A co-founder before the company existed | The co-founder | A signed assignment of prior work to the company |
| An open-source library | Its authors, under its license | Follow the license terms; you do not own it, you use it |
The accounts problem
Legal ownership and practical control are different. Plenty of founders have had a signed contract and still been locked out, because the developer set up every account in their own name.
These are the accounts that make up your product:
- Code repository (for example, GitHub). Where the source code and its history live.
- Cloud and hosting (for example, Vercel, AWS, Supabase). Where the app runs and the data is stored.
- Domain registrar. Whoever controls the domain controls your website and email.
- Apple Developer account. $99 a year. The app listing, reviews and ratings live here.
- Google Play developer account. $25 one-time registration.
- Third-party services. Payments (Stripe), email sending, analytics, maps, push notifications.
Why moving accounts later is painful
It can be done, but it is slow and not everything comes with you.
App Store. Apple lets you transfer an app between developer accounts, but only if it meets all of Apple's transfer criteria, and the process requires the account holders on both sides to act. Some things do not transfer: Apple lists promo codes, Apple Pay merchant IDs and Xcode Cloud data among them. After a transfer, the original account keeps access to past sales data, and apps that share iCloud containers with other apps can lose access to that data.
Google Play. Google lets you transfer apps between developer accounts by request. Historical reports and test groups do not transfer, and you need to update integrated services like Firebase and AdMob. Google says its team reviews requests "within 2 business days."
GitHub. Repositories can be transferred by someone with admin access. Issues, pull requests, history, webhooks and deploy keys move with it, and "the original owner of the repository is added as a collaborator," so you should remove old access afterward.
All of this depends on the other person cooperating. If the relationship has gone bad, cooperation is exactly what you will not get. The fix is simple: create the accounts yourself, in your company's name, at the start, and invite the developer as a user.
The no-code and platform question
No-code tools raise a different ownership question. Bubble's documentation states: "Bubble apps can only be run on the Bubble platform; there's no way of exporting your application as code. If you decide to move off the Bubble platform, you'll have to rebuild the application logic."
You can own your data and your design, but the working app only exists on that platform. That is a reasonable trade for a prototype or an internal tool. It is worth knowing before you build a company on it, because buyers and investors in a software business will ask what you actually own. See how to build an app without knowing how to code for the full picture.
Common traps
- The developer's personal GitHub. The code lives in their account. You have "access" but not ownership of the repository.
- The agency's cloud account. Your app runs on their hosting bill. If you stop paying their retainer, they can switch it off.
- The app listed under the developer's name. Your app's App Store page says it was published by someone else. Moving it later requires their cooperation and Apple's criteria.
- Ownership "on final payment" with no end date. If the contract says you own everything only after the final invoice, a disputed last milestone can leave you with nothing.
- Reused code with no license. Agencies often reuse internal components. That is fine if the contract gives you a perpetual license to use them.
- Subcontractors. An agency may use freelancers. If those freelancers never assigned their work to the agency, the agency cannot fully assign it to you.
- Credentials in someone's head. Passwords, API keys and signing certificates stored on one developer's laptop.
Contract clauses to ask for
Plain-English versions of what to look for. A lawyer can turn them into proper language.
- Assignment: the developer assigns all rights in the work product to you, in writing, as each part is paid for.
- Pre-existing materials: anything the developer brought in before the project stays theirs, but you get a perpetual, royalty-free license to use it in your product.
- Subcontractor assignments: anyone the developer uses has assigned their rights, so the chain is clean.
- Open-source disclosure: a list of open-source components and their licenses.
- Accounts: all production accounts are held in your name; the developer gets user access only.
- Handover: on request or at the end of the engagement, the developer delivers the code, credentials and documentation within a set number of days.
Worked example: the handover checklist
Use this checklist before the final payment of any build, and again whenever you change developers. Tick each item only when you have verified it yourself.
| Item | How to verify | Done |
|---|---|---|
| Code repository is in your organization's account | Log in; your org is listed as owner, not collaborator | |
| All code is pushed, including the latest release | Compare the live version number to the repository | |
| You can build and deploy without the developer | Ask them to walk you or a new developer through it once | |
| Cloud and hosting accounts billed to you | Check the billing page shows your card | |
| Database backups exist and you can access them | See the backup settings and date of last backup | |
| Domain registered to your company | Check the registrar account and WHOIS contact | |
| Apple Developer account in your name | App Store Connect shows your company as account holder | |
| Google Play account in your name | Play Console shows your account as owner | |
| API keys and secrets stored in a shared password manager | Open each one and confirm it works | |
| Third-party services (Stripe, email, analytics) owned by you | Log in to each as the owner | |
| Written copyright assignment signed | You hold a countersigned copy | |
| Open-source license list delivered | A file listing components and licenses | |
| Basic documentation: how it is built, deployed and configured | A new developer could follow it | |
| Old developer access removed or reduced | Check user lists on each account |
If you cannot tick an item, do not make the final payment until it is fixed. It is much easier to resolve while the relationship is friendly.
Before you hire: the three questions
Ask any developer or agency these before you sign:
- "Will you set up the accounts in my name, or can I create them and invite you?"
- "When does ownership of the code transfer to me, and is that in the contract in writing?"
- "Do you use subcontractors, and have they assigned their work to you?"
Good builders answer all three without hesitation. For the rest of the list, see 12 questions to ask before hiring an app development company. If you are still choosing between a freelancer, agency, studio or no-code, see freelancer vs agency vs studio vs no-code.
How Ottomind can help
Ottomind is an AI lab and software studio. We build and run our own products, like Otticos for rental operations and Cammonly for threshold-based event ticketing, and we build products for clients through Ottomind Studio. On studio projects, you own your GitHub, cloud, domain and app-store accounts from day one, and the work is assigned to you as it is paid for, not at some final milestone. Each project gets a fixed price after a scoping call, with UX/UI design included; focused MVPs start from $25,000, with v1 targeted within about 4 weeks of scope sign-off and a 30-day warranty.
You can take the product in-house at launch or keep us on a monthly plan with no minimum term. The Studio page sets out how ownership works. One exception to note: on our Starter option, a $500-a-month rental of a Store web app, Ottomind owns the app until you buy it. Read the Starter terms if you are considering that route.
Frequently asked questions
Do I own the code if I paid a developer to write it?
Not automatically. Under U.S. copyright law the author owns the work, and a transfer is only valid if it is in writing and signed by the owner. Make sure your contract includes a written assignment of rights to you.
Is software a work made for hire?
Software written by an employee within the scope of their job is a work made for hire, so the employer owns it. Software commissioned from an independent contractor is not one of the categories listed in the statute, so you should rely on a written assignment instead.
How do I get my app's source code from a developer?
Ask for the repository to be transferred to your GitHub organization, or better, create the organization yourself and have them work in it from the start. Also collect the credentials, documentation and store account access listed in the handover checklist above.
Can I transfer my app to a new App Store account?
Yes, Apple supports app transfers between developer accounts if the app meets its transfer criteria. Some features, such as promo codes and Apple Pay merchant IDs, do not transfer, so it is simpler to publish under your own account from the start.
Sources
- Cornell Law School LII: 17 U.S. Code § 101, Definitions
- Cornell Law School LII: 17 U.S. Code § 201, Ownership of copyright
- Cornell Law School LII: 17 U.S. Code § 204, Execution of transfers of copyright ownership
- Apple Developer: Overview of app transfer
- Google Play Console Help: Transfer apps to a different developer account
- GitHub Docs: Transferring a repository
- Bubble Docs: Application and data ownership
- Apple Developer: What's Included in the Apple Developer Program
- Google Play Console Help: Get started with Play Console
Written and reviewed by the Ottomind Studio team, with AI assistance for research and drafting. Figures labelled as illustrations are scenarios, not predictions or typical results. Prices reflect Ottomind’s published pricing on the date above.
Keep reading
MVP Scope: Cutting Your App Down to What Ships in 4 Weeks
How to set MVP scope that ships in four weeks: a step-by-step cutting method, a worked feature list, what to keep, what to fake and what to save for later.
· 7 min readFoundersDo You Need a Technical Co-Founder? An Honest Guide
Do you need a technical co-founder, or can you hire, outsource or use no-code? A decision guide for non-technical founders with equity math and trade-offs.
· 8 min readFoundersFreelancer vs Agency vs Studio vs No-Code for Your MVP
Hire an app developer vs an agency, a studio or no-code? Compare cost, risk, speed and ownership for your MVP, with a scoring table and honest trade-offs.
· 8 min read