A contract does not need to be written to be enforceable (except in certain situations eg transfer of land or assignments of IP), though it helps to have the precise terms in writing so that each party is aware of their obligations.
In order for a contract to be valid, it must have the following elements:
1. Offer - This is a statement of terms by which the offeror agrees to be contractually bound
2. Acceptance - The offer must be accepted, and acceptance of an offer must be unconditional
3. Consideration - Each party must exchange something of ‘value’ for a contract to valid. The consideration doesn’t have to be equal, but a contract will not be valid without some consideration.
4. Intention to create legal relations – It must be clear that the parties intend to create legal relations and are aware of their obligations
5. Certainty of terms - In order for a contract to be binding, all material terms must be agreed. If the agreement is uncertain, a court may not be able to enforce it