daydream labs

Case study · Home services marketplace

Trade marketplace with escrow payments

Our role
Full design and build
Sector
Home services marketplace
Status
Beta live at bookatrade.io; in pre-launch
The BOOKaTRADE payment schedule, showing a job's agreed price, the amount held in escrow, and the work split into three stages with the first marked paid

The brief

Both sides of a trade job are frightened of the same thing. The homeowner is scared of paying up front and never seeing the tradesperson again. The tradesperson is scared of doing the work and never getting paid.

We were asked to build something where the money is visibly, verifiably held until each stage of work is signed off — and where a tradesperson can see exactly what they have earned and when they can draw it down.

The hard part

Money enters by open banking or by bank transfer, is held against a specific job milestone, and is only released when the customer accepts that milestone — or automatically, 48 hours after the tradesperson marks it complete. Every movement writes a ledger row, so a provider’s balance is always the sum of what they have genuinely earned.

  1. Customer pays. Open banking through Online Payments Platform (OPP) as the default, or a bank transfer by BACS as the fallback.
  2. Held against a milestone. The payment moves to held and is tied to one specific stage of the job.
  3. Work signed off. The customer accepts the milestone — or it accepts itself 48 hours after completion, so nobody is left waiting on an unresponsive client.
  4. Split and released. The platform fee is calculated and the rest becomes the tradesperson’s balance, ready to withdraw.

What we built

  • Job posting and quoting. Homeowners post a job in under two minutes. A limited number of vetted tradespeople quote, so nobody gets buried in follow-up calls.
  • Verified trade profiles. Portfolios, local reviews and completed job history, with document checks before a trade can quote.
  • Milestone escrow. Seven separate payment functions covering creation, confirmation, webhook verification, release, cancellation and payout.
  • Provider earnings ledger. Every earning and payout is a row, with the fee percentage locked at the moment it was applied so history never rewrites itself.
  • Scheduled automation. Hourly and five-minute background jobs auto-accept overdue milestones, reopen stalled jobs and clear abandoned payments.
  • Admin back office. Withdrawal approvals, dispute handling and full visibility of every payment’s state.

Why open banking

Open banking was chosen as the primary rail because it costs a fraction of card fees on the sums involved in home improvement work — the difference goes to the tradesperson rather than to a payment processor. Cards are not taken at all: on job values this size, a chargeback could reverse a payment weeks after the tradesperson has been paid. Anyone who can’t use open banking pays by bank transfer instead.

The product

The BOOKaTRADE homepage, headed "Find the Right Tradesperson. First Time." above a search box asking what you need done and your postcode, beside a photograph of a screwdriver and its bit set

Built with

  • React 18
  • TypeScript
  • Vite
  • Supabase
  • PostgreSQL
  • Edge Functions
  • Online Payments Platform
  • Resend
  • Google Cloud Run

Next case study

vBuy

Multi-vendor retail with its own currency

Read it →