The Software Project Failed: Refunds, Source Code, and SaaS Contract Disputes in California
Last updated: November 2026. Reviewed by Pavel Kolmogorov, California business litigation attorney (State Bar No. 321018).
When a custom software project fails in California, the client's remedies come from the contract: the statement of work, the acceptance terms, and the payment milestones. A client that paid for software that does not work can sue for the damages the breach caused, or rescind and seek its money back if what it paid for failed through the developer's fault. (Civ. Code, §§ 3300, 1689, subd. (b)(2).) Ownership of the code's copyright usually depends on a signed assignment. Kolmogorov Law, P.C. handles these disputes in Orange County, Los Angeles, and statewide.
Call (909) 235-6116 or contact us online to discuss a failed software project, a SaaS vendor dispute, or unpaid development work.
How software projects end up in dispute
The stories are similar. A company hires a development shop to build an app on a fixed budget. Deadlines slip, the builds crash, and by the time most of the money is gone the product still cannot be launched.
Or a business signs a multi-year subscription for a platform that was supposed to replace three older systems. A year in, the integration has never gone live, and invoices keep arriving.
Developers have their own version. The client changed the requirements every two weeks, never signed a change order, accepted each delivery, and then refused the final payment.
Start with the statement of work and the acceptance terms
"It does not work" is a business complaint. The legal question is narrower: did the deliverable conform to what the contract required?
That is why the statement of work matters more than the master agreement. Look for the specifications, the list of deliverables, and the dates. Then find the acceptance clause. Many contracts give the client a set number of days to test and reject in writing, and treat silence or live use as acceptance. A client that complained by phone for months but never sent a rejection notice may have accepted under the contract's terms.
Change requests are the second pressure point. If the contract requires written change orders and nobody used them, each side will argue about what the scope became.
Check the notice and cure clause before terminating. A client that fires the developer without the required notice can turn a strong claim into a counterclaim for wrongful termination.
Getting money back: damages or rescission
California offers two routes, and they lead to different numbers.
Damages keep the contract in place and compensate for the breach. The measure is the amount that will compensate for all the detriment the breach caused. (Civ. Code, § 3300.) In a failed build, that is usually the reasonable cost to have another developer fix or finish the work, less any contract balance the client never paid.
Rescission unwinds the deal. A party may rescind when the consideration for its obligation fails, in whole or in part, through the other party's fault. (Civ. Code, § 1689, subd. (b)(2).) The rescinding party can then recover what it paid, along with consequential damages where justified, and the court may adjust the equities for any value actually received. (Civ. Code, § 1692.) Our page on rescission explains the notice and restoration steps. Courts generally reserve this remedy for failures that go to the heart of the bargain.
Contract terms can shrink either recovery. A limitation of liability clause may cap damages at the fees paid or exclude lost profits, as discussed on our page about limitation of liability clauses.
Whether the Commercial Code's sale-of-goods rules apply to software is unsettled. Courts decide case by case whether a deal is mainly the sale of a product or mainly services, and they have reached different results. Mass-market software is often treated as goods. Custom work has gone both ways, so I do not assume the Code's warranties are available.
Who owns the source code
Paying for code does not make you the owner of its copyright. Copyright vests initially in the author. (17 U.S.C. § 201(a).) A transfer of copyright ownership, other than by operation of law, is not valid unless it is in writing and signed by the owner of the rights or the owner's agent. (17 U.S.C. § 204(a).) If the developer was an outside contractor and the contract has no assignment, the developer probably owns the copyright and the client holds, at most, a license to use what was delivered.
So read the intellectual property clause closely. Does it assign the work on creation, or only on final payment? Does it carve out the developer's pre-existing tools and third-party components? Does it require delivery of the repository, credentials, and documentation? Our page on copyright ownership and contractors covers the ownership rules in depth.
A client whose contract assigns the code or requires its delivery, and whose account is paid up, can demand it, and a court may order it delivered. A client with neither is usually left negotiating for anything not yet delivered.
SaaS disputes: service levels, credits, and your data
Subscription software raises a different set of clauses. The service level agreement usually promises a percentage of uptime and offers credits when the vendor misses it. Many contracts make those credits the exclusive remedy, which means a month of outages may be worth a small discount and nothing more, unless the contract also allows termination for repeated failures.
Exit terms matter as much. Check how long the vendor must keep your data available after termination, in what format it will be exported, and what that costs. We cover negotiating points for newer tools on our page about AI vendor contracts.
If you are the developer who has not been paid
Your claim is for the milestone payments the contract promised, and proof of delivery and acceptance carries it. Extra work outside the original scope is harder. Without change orders, the fallback is a claim for the reasonable value of work the client requested and used, described on our page about quantum meruit.
Be careful with self-help. Disabling a live system or locking the client out of its own accounts can create liability that dwarfs the unpaid invoice, a problem we address on our page about a developer holding a website hostage. Withholding undelivered work until payment, where the contract ties delivery to payment, is a different and safer position.
What to bring to the first meeting
- The master agreement, every statement of work, and all change orders.
- Invoices and proof of payment, by milestone.
- Acceptance or rejection notices, bug reports, and ticket histories.
- Emails and chat logs about scope, deadlines, and defects.
- For SaaS disputes, the service level terms and outage records.
Frequently asked questions
We paid a developer most of the budget and the app still does not work. Can we get our money back or the source code?
Possibly both, depending on the contract. In California you can seek damages measured by the cost to fix or finish the app, or rescind and recover payments if the developer's failure defeated the purpose of the deal. You can demand the source code if the contract requires its delivery or assigns it to you, and its copyright generally passes only by a signed writing. Without those terms, the developer likely keeps it.
Can I sue a software developer for breach of contract?
Yes. A developer that fails to deliver software conforming to the statement of work, or misses agreed deadlines, can be sued for breach of contract in California. You will need to show what the contract required, how the deliverables fell short, that you followed any notice and cure steps, and what the failure cost you.
Who owns custom software if the contract says nothing about ownership?
Usually the developer. Under federal copyright law the author owns the copyright at the outset, and ownership generally passes only by a signed written transfer. A California business that paid an outside contractor for code, with no assignment clause, may have a license to use the delivered software for its intended purpose but generally does not own the copyright.
Our SaaS vendor's platform has been down repeatedly and they are offering only service credits. Is that all we can recover in California?
Often, if the contract makes credits the sole remedy for downtime. California generally enforces negotiated remedy limits between businesses. Look for a termination right triggered by repeated service level failures, and for breaches outside the uptime promise, such as data loss or missed implementation dates, which may not be covered by the credit clause.
Can a developer withhold source code until the final invoice is paid?
It depends on the agreement. If the contract conditions delivery or assignment on full payment, a developer may generally hold undelivered work. Shutting off software already in use, or locking a client out of its own accounts, is riskier and can expose the developer to claims in California. A disputed final payment is better resolved by demand or suit.
Talk to a California breach of contract attorney
If a software build or SaaS rollout has failed, or you built the product and have not been paid, call (909) 235-6116 or contact us online. Kolmogorov Law, P.C. is located at 327 Magnet, Irvine, CA 92618, and represents technology buyers and developers in Orange County, Los Angeles, and throughout California. Contract claims are heard in superior court, and disputes over who owns the code may belong in federal court.
Related reading: our breach of contract practice page, rescission, and copyright ownership and contractors.
This page provides general information about California law and is not legal advice. Outcomes depend on the contract, the project record, and the court.