Escrow on a freelance marketplace is a mechanism where order payment is reserved (held) until the result is accepted. The client sees that money has already been deposited, the contractor sees that the work is not based on pure trust, and the platform keeps leverage for a dispute. Without escrow, a marketplace quickly becomes a contact board: people agree and move to card transfers.
In the Microscript marketplace script, escrow is a logical status layer over the payment provider. The specific gateway, such as card, fast payments, or account balance, is configured for your legal setup. The important part is not the button name but the chain: hold, work, payout, or refund/arbitration.
Why hold funds if direct prepayment is possible
Direct prepayment protects the contractor and hurts the client. Post-payment is the opposite. A hold balances both sides. The platform earns trust and commission, not only traffic in a feed. For niche marketplaces, this is often the only way to keep deals inside the domain.
Do not market it as "bank escrow" if it is a normal hold on a merchant balance. Write honestly: safe deal, funds are reserved until work is accepted. Legal wording belongs in the offer, not in the slogan.
Escrow deal stages
- Order is published and contractor is selected, or hold happens before selection depending on your policy.
- Client deposits the amount into hold. Order status: paid / funds reserved.
- Contractor works and submits the result in the order card.
- Client accepts; hold goes to contractor payout minus platform commission.
- Or client opens a dispute; funds remain frozen until an arbitrator decides.
Steps 1 and 2 can be swapped, but the policy must be single and clear. The worst case is half the orders holding before selection and half after; support will drown.
Dispute and arbitration
A dispute is not a chat where people argue. It is a status with response deadlines, attachments from both sides, and an admin decision: pay, refund, or split. Decision criteria must be in rules in advance: what counts as delivery, how many revision rounds, and what happens if the client is silent.
The admin panel needs a dispute queue, date filter, and hold amount. Without amount, arbitration becomes random reading of chat history. Save status-change logs; later someone will ask why money was written off.
Commission and partial payouts
It is convenient to take commission when paying the contractor. Then the full order amount sits in hold, and net goes to withdrawal. If you charge commission on top from the client, show it clearly in the payment form before click.
Milestones make sense when an order is split into stages with separate holds. At launch, one hold for the whole order is often enough; milestones complicate UI and reports. They pay off for high average checks and long cycles.
Connection with the rest of the marketplace
Escrow is meaningless without normal orders and responses; otherwise there is nothing to attach the hold to. Rating after successful payout strengthens the effect: freelancer rating. Platform overview: freelance marketplace script, positioning: FL.ru-like alternative.
Site payments often use approaches similar to a store, but the entity is different: not an online-store order, but a freelance deal hold. Do not mentally mix tables and statuses from two products during setup; that leads to double write-offs and messy documents.
Checks before live money
- Small test hold: status matches for both roles.
- Work acceptance initiates payout or a payout task without manual SQL.
- Dispute blocks the client's accept button and the contractor's withdrawal.
- Refund to client appears in payment history.
- Emails about hold, delivery, and dispute are sent from your domain.
- Commission in admin report matches the day's payouts.
Separately check cancellation before work starts: hold must return by rules, not hang until month end. Also decide timeout after contractor delivery: auto-accept or escalation.
Risks and antifraud
New accounts with a large hold are a red flag. Limits on first-deal amount, verification, and manual review are standard hygiene. Contractors who persuade clients to go off-site to avoid commission attack the model. Not everything can be caught technically, but the rules must forbid it and define sanctions.
Do not store unnecessary payment data in your tables "just in case". Provider tokens and transaction statuses are fine; full card data is not.
Account balance and withdrawals
A common scheme: hold, then after acceptance the amount lands on the contractor balance, then withdrawal to card or wallet by request. Between balance credit and withdrawal, you can keep a clearing pause of one to three days against chargebacks. This must be written in rules before the first payout, not after the first scandal.
A client balance can also be useful: top up once and hold several small orders. But do not complicate accounting too early; one payment path is better than three choices while turnover is small.
Reporting and discrepancies
Daily reconcile hold amount, payouts, and platform commission. Penny-level rounding differences are better caught immediately. An admin screen with order transactions and provider payment IDs saves hours of correspondence with gateway support.
With a partial refund after dispute, order and payment statuses must remain readable: "closed by dispute, 40% refund". Otherwise in a quarter you cannot reconstruct the case for tax or user complaint.
Do not mix provider test and live environments with keys. Config-separated keys, different webhook URLs, and notification signature verification are mandatory before advertising a "safe deal".
Communicating statuses to users
Users do not need to know the word "hold". In the interface, write: "Payment reserved", "Awaiting acceptance", "Paid to contractor", "Refund to client". Consistent wording in account, email, and payment receipt reduces panic and repeat tickets.
Do not hide the "open dispute" button, but do not make it the first screen either. Put revision deadline and rules link nearby. The calmer the dispute UX, the fewer escalations about banks and chargebacks.
FAQ
Escrow in freelance marketplace script?
Escrow holds payment until work is accepted, forming the trust base of the marketplace.
How long does “Escrow on a Freelance Marketplace” take?
About 6 minutes to read. In practice it depends on your hosting and database setup.
Do I need a dedicated server?
For most scripts, shared hosting or a VDS with PHP and MySQL is enough. See the VDS section and PHP/MySQL requirements.
Freelance exchange script?
See the related manual for this query. freelance exchange script
Fl.ru alternative for your own site?
See the related manual for this query. fl.ru alternative for your own site