Skip to main content
A contract in Skillhouse is the formal agreement between a client and a freelancer to carry out a specific job. It is created by the client after accepting a freelancer’s proposal, and it governs the work, payment, and completion process.

Contract lifecycle

1

Pending

The client creates the contract after accepting a freelancer’s proposal. The contract is recorded but work has not started yet. The client is prompted to fund escrow.
2

Started

The escrow payment has been made. The contract becomes active and the freelancer can begin work. A direct chat channel opens between the client and freelancer.
3

Ongoing

Work is in progress. Both parties can communicate via the built-in chat. The client monitors progress and the freelancer delivers the work.
4

Completed

The client requests a fund release, signalling that the work is done and they approve payment. An admin reviews and releases the escrowed funds to the freelancer’s wallet. The job status is set to Closed.
5

Cancelled

Either party cancels the contract before completion. The reason and the cancelling party are recorded. If escrow was funded, the client can request a refund through the escrow process.
Check the Status history section on your contract detail page to see a timestamped log of every status change since the contract was created.

Creating a contract (clients)

After accepting a freelancer’s proposal on a job:
  1. Open the job from My jobs and navigate to the accepted applicant.
  2. Click Create contract. Skillhouse generates a contract record linking the job, client, and freelancer with the agreed amount.
  3. You will be taken to the payment step to fund the escrow. See Payments and escrow for details.
Only one contract can exist per job. If a contract already exists for a job, the system prevents a duplicate from being created.

Requesting a fund release (clients)

When the freelancer has delivered the work and you are satisfied:
  1. Open the contract from your Contracts dashboard.
  2. Click Release funds. The contract’s releaseFundStatus changes from NotRequested to Requested.
  3. An admin reviews the request and approves it, transferring the held funds to the freelancer’s wallet.
The contract status moves to Completed once funds are released.

Cancelling a contract

Either the client or the freelancer can cancel a contract that has not yet been completed.
  1. Open the contract from your Contracts dashboard.
  2. Click Cancel contract.
  3. Select a cancellation reason and optionally provide a description.
  4. Confirm the cancellation.
If you have already funded escrow, you can request a refund after cancellation. The refund is processed by an admin.
Cancelling a contract after escrow has been funded does not automatically trigger a refund. The client must separately request a refund through the escrow process. See Payments and escrow for instructions.

Contract fields reference

FieldDescription
Contract IDA unique identifier for the contract
JobThe job this contract is linked to
ClientThe client who created the contract
FreelancerThe freelancer engaged for the work
AmountThe agreed payment amount
StatusCurrent lifecycle stage
Escrow paidWhether the client has funded escrow
Release fund statusNotRequested, Requested, or Approved
Cancelled byClient or Freelancer (if cancelled)
Cancel reasonReason provided at cancellation

Admin visibility

Admins can view all contracts across the platform from the admin dashboard. This allows them to monitor active work, review fund release requests, and process refunds or releases in a timely manner.

Payments and escrow

How escrow funding, fund release, and refunds work.

Chat

Communicating with your client or freelancer during the contract.

Build docs developers (and LLMs) love