While working on a Delphi/Visual Studio project some time ago, I wrote the entire contract and gave it to the customer for signing. I got the contract, and on hindsight, this is what I have learnt.

The customer reserved X months of my time verbally, however, I did not draft this into the contract. At a later time, the customer wanted to take a vacation, and asked me to take a vacation as well, and to continue when they got back from the vacation. This was before X amount of time had occurred.

I drafted into the contract, payment terms, however, the customer did not observe the payment terms. There is a need to specify penalty should the customer not observe the payment terms.

The customer did not stamp the company seal/stamp on the contract. As such, if the customer denied signing such a contract, I would have no recourse.

A modified copy of the contract is linked.