Practical guide

What should a software development contract contain? A checklist before you sign

A good software contract answers seven questions in writing: what exactly will be built, when each part is delivered, when each payment is made and for what, who owns the code, the accounts and the data, how the work counts as accepted, what support covers after launch, and how any change to the brief is handled. If one answer is missing, a dispute is waiting. This guide is a checklist for business owners before they sign a contract for a website, an app or a system, written from the side of a company that carries out these contracts. It is general guidance, not legal advice, and contracts of real value should be reviewed by a licensed lawyer before signing.

On this page

Why does the contract matter more in software?

In most purchases you see the product before you pay. In software you pay for something that does not exist yet, and you describe it in words each side understands in its own way. The contract is the only place where "a complete system" turns into a list that delivery can be measured against. Most disputes in software projects do not begin with bad faith. They begin with a one-page contract.

A clear contract protects both sides. It protects you from paying for work you did not receive and from losing the code and accounts, and it protects the vendor from endless demands outside what was agreed. A company that welcomes clear clauses knows it will keep them, and one that avoids putting things in writing is telling you something about how it works.

Scope: the clause everything else rests on

Make the scope an annex to the contract, not a sentence in it. For a website: the list of pages and what each contains, the languages, the admin panel and what can be edited from it. For an app: the list of screens, the platforms, the backend and admin panel, and publishing to both stores. For a system: the modules, the roles and permissions, the reports, data migration and training.

Write three more things many people overlook. First, what is explicitly out of scope, such as writing content, photography or third-party service fees. Second, the client’s responsibilities and their dates: content, approvals, opening accounts. Third, the non-functional requirements: Arabic and page direction, speed, supported browsers and devices, and any regulatory requirement specific to your business, such as e-invoicing.

Milestones and payments

The simple rule: every payment matches something you receive and try. The common order is a payment at signing to start the work, one after design approval, payments as working parts are delivered, and a final one at launch or after final acceptance. The shares differ from project to project. What matters is that what you have paid never runs far ahead of what you have received.

Write each stage’s date and what is delivered in it. Write the response time on both sides, because the date is affected by late content and approvals as much as by late coding. You are entitled to ask before signing what happens if a stage date is missed, and to have the answer in writing, not spoken. Make clear whether the amounts include VAT, in which currency, and who bears transfer fees.

Ownership of the code, the accounts and the data

This clause decides whether you bought a product or rented one. Ask for explicit wording that the source code written for your project becomes yours, and when: with each payment or on full payment. Ask for it to be delivered in a repository you own, with a document explaining how to run and release it. Ownership of code you cannot reach is ownership on paper.

Watch for what is not new code. Every project uses open-source libraries, and some companies reuse their own ready components across projects. That is normal. What is needed is for the contract to state your right to use and modify them within your project with no later fees. And ask about any paid third-party licence the system needs in order to run, and who pays it each year.

The accounts matter more than the code in daily life: the domain, the hosting, the App Store and Google Play accounts, the payment gateway, the messaging provider and the analytics accounts. All are opened in your company’s name and with its email from day one, with the vendor given access. And the data, meaning customers, orders and content, is yours in every case, with your right to a full copy on request written down.

Delivery and acceptance

Without an acceptance clause the project stays suspended: the vendor sees it as finished and the client sees it as incomplete. A good clause sets how the work is presented for review, within how many working days the client sends notes, the difference between a defect and a new request, how many rounds of correction are included, and when the work counts as accepted.

A defect is the software behaving differently from what the scope says. A new request is something that was not written. That distinction settles most end-of-project arguments, which is why everything comes back to how precise the scope is. Contracts commonly state that the client’s silence after the review period, or actual use of the system, counts as acceptance, so read that clause and make sure the period is long enough for you to test properly.

Support after launch, and changes

Ask about life after delivery before you sign, not after. Ask for it in writing: what is fixed at no charge and for how long, within how many hours a fault that stops work is answered, which channels are used, and what a maintenance contract costs afterwards. As a market reference, yearly maintenance runs at 15% to 20% of the build cost for websites and apps and 15% to 25% for internal systems, and monthly support plans at SAR 1,500 to 12,000.

Change requests will happen in every project, and that is not a fault. The fault is having no procedure for them. The sound procedure: the request is written, the vendor replies with its effect on cost and time, the client approves in writing, and then it is done. That way you are not surprised by a bill at the end, and the vendor is not surprised by a scope that doubled with no agreement.

Confidentiality, data protection and termination

If you will share information about your business before contracting, ask for a non-disclosure agreement. Inside the contract, state what counts as confidential, who may see it, and how long the duty lasts after the contract ends. If the system processes personal data of your customers or staff, Saudi Arabia’s Personal Data Protection Law places duties on you and on whoever processes the data on your behalf. The contract should state where data is stored, who can reach it, and what happens to it when the relationship ends. Your adviser or the regulator confirms exactly what is required of you.

The termination clause is what protects you if things do not go to plan. It sets when each side may stop, what is handed over at that point, and how the amount due is worked out. The fair principle: the client receives everything completed, with its code and accounts, against what has been paid. Governing law, the forum for disputes, compensation and limits of liability are purely legal clauses for your lawyer to draft.

At Fortune Code we work with a contract and a written scope before any work, payments tied to delivery and a written delivery date we keep. The code and accounts belong to the client, and we sign a non-disclosure agreement on request. We send a written quote within 24 hours, with fast technical support after launch.

The core clauses and what each one should state

Indicative Saudi market ranges in SAR, not a quote.

ScopeTypical costWhat drives the price
Scope of workA detailed list attached to the contractPages or screens, functions and integrations by name, with what is explicitly out of scope
Milestones and datesA date for each stageAnd what is delivered on each date, with each side’s response time
PaymentsTied to deliverablesEach payment against a stage you receive and try, with the currency, tax and method of payment
Ownership of the codePasses to the clientThe full source code, when ownership passes, and the status of ready-made and open-source libraries
Accounts and dataIn the client’s nameDomain, hosting, store accounts, payment gateway, database
Delivery and acceptanceCriteria and a review periodHow the work is tested, within how many days notes are sent, and when it counts as accepted
Support after launchScope, period and response timeWhat is fixed at no charge, what counts as new development, and the cost after the period
Change requestsA written procedureEvery change is written up with its effect on time and cost and approved before it is carried out
Confidentiality and data protectionA duty on both sidesWhat counts as confidential, who sees customer data, and what happens to it when the contract ends
TerminationCases and procedureWhen each side may end it, and what is handed over and paid if the work stops mid-way
Dispute resolutionGoverning law and forumFor your lawyer to set, depending on where the parties are and the contract value

We send you a written quote in SAR within 24 hours of the discovery session.

Wording worth stopping at, and what to ask for instead

Indicative Saudi market ranges in SAR, not a quote.

ScopeTypical costWhat drives the price
"Design and development of a complete website"A vague scopeAsk for an annex listing pages and functions. What is not named can be denied
"Delivery in about two months"A date with no stagesAsk for a date per stage, and ask what happens if one is missed
"Unlimited revisions"A promise that is never keptAsk for a set number of rounds per stage and a definition of what a revision is
"The website is handed over on full payment"Ownership left undefinedAsk for wording on handing over the source code and the accounts, not only the site’s link
"Hosting and domain free for a year"In whose name?Ask for both to be registered in your company’s name from day one, with the renewal price in writing
"Free technical support"No period or scopeAsk for the period, what it covers, and the response time for a fault
A large first payment not tied to a deliveryA risk on your sideAsk for payments to be spread over stages you see working
No mention of what happens on terminationA gapAsk for a clause on handing over what has been done against what has been paid

We send you a written quote in SAR within 24 hours of the discovery session.

Our commitments

You own the code

Source code, accounts and domain are in your organisation’s name from day one.

Written scope and contract

Scope, milestones and price are agreed in writing before the first line of code.

On-time delivery, guaranteed

The delivery date is written into the contract, and we keep it at every milestone.

Fast technical support

A team that responds quickly after launch and fixes any issue in production.

How we work with you

  1. 1

    Free discovery session

    30 minutes with an engineer to understand your needs and how you work.

  2. 2

    Written proposal within 24 hours

    Clear scope, milestones, timeline and a price in SAR, with no obligation.

  3. 3

    Contract and staged payments

    You pay in stages tied to deliveries, not everything upfront.

  4. 4

    Delivery with weekly reports

    Follow progress in the client portal and review every milestone before sign-off.

  5. 5

    Launch, training and support

    We launch on schedule, train your team and stay with you with fast support.

Frequently asked questions

What is the most important clause in a software contract?

The scope of work, because every other clause is measured against it: the date is the date the scope is delivered, a payment is for part of it, and a defect is whatever departs from it. A one-sentence scope empties the rest of the contract. Ask for it as a detailed annex of pages or screens, functions and integrations, with what is explicitly out of scope.

Does the code become mine automatically once I pay?

Do not assume so. Ask for explicit wording in the contract that ownership of the source code passes to you and when, and that it is delivered in a repository you own with the documentation to run it. Without that wording you may receive a working link and not the code behind it. In contracts of real value, review this point with your lawyer.

How are payments split in a software contract?

The common order is a payment at signing, one after design approval, payments as working parts are delivered, and a final one at launch or acceptance. The shares depend on the size of the project, and the rule is that what you have paid should not run far ahead of what you have received. Be wary of a large advance with no delivery against it.

What happens if delivery is later than the written date?

That is what the contract should answer before you need it. Put the question to each company directly and write the answer down: what the dates are for each stage, how the duration is counted if the client is late with content or approval, and what each side’s rights are if the delay passes a certain point. Drafting those rights is a legal matter for your lawyer.

Do I need a lawyer for a small website contract?

For a small project it may be enough to check the items on this list yourself: a written scope, stages and payments, ownership of the code and accounts, and support after launch. The larger the contract, or the more the system touches your customers’ data or your daily operations, the more a licensed lawyer’s review becomes a small cost against what it protects. This guide is general guidance and does not replace it.

What is the difference between a defect and a new change?

A defect is the software behaving differently from what the scope says, and fixing it is on the vendor. A new change is something that was not in the scope, and it is a change request with a cost and a duration. The more precise the scope, the clearer the line between the two and the less argument at the end of the project.

Should I ask for an NDA before explaining my idea?

If you will share sensitive information about your business or your customers’ data, yes, and it is a routine request that serious companies accept. Do not expect it to protect a general idea, whose value is in the execution. What matters more is that confidentiality covers the data and documents you hand over, and that the duty continues after the relationship ends.

In whose name are hosting, the domain and the store accounts registered?

In your company’s name and with its official email, from day one, with the vendor given access to work on them. An account registered to the vendor makes moving your website or app later depend on its cooperation. Write this into the contract, and check it in practice as each account is opened.

What if I want to end the contract in the middle of the project?

The termination clause decides that, which is why it has to be there. A fair clause lets each side stop in defined cases and states that you receive everything completed to date, with its code and accounts, against what is due for it. A contract with no termination clause leaves you negotiating at the worst moment.

Do Fortune Code contracts include these clauses?

We work with a written scope and a contract before any work starts, payments tied to delivery and a written delivery date we keep. The code and accounts belong to the client and that is stated explicitly. We sign a non-disclosure agreement on request and provide fast technical support after launch. You are welcome to show the contract to your lawyer before signing.

Guides and prices to help you decide

Ready to start?

Send us your idea on WhatsApp and get a written proposal with scope, timeline and price within 24 hours.

Talk to us on WhatsApp

Last updated: