Powered by Solana smart contracts

How Paystream Works

Trustless payments for freelancers and clients — no middleman, no chargebacks, no waiting. Just code running on-chain.

Three steps. No surprises.

The whole lifecycle, from contract creation to local-currency payout.

01

Fund Escrow

The client creates a contract and deposits USDC into a Solana smart contract. Funds are locked on-chain — no one can move them until the work is complete.

The moment you fund escrow, the freelancer sees it on-chain. No chasing invoices. No wondering if you'll get paid.

  • 1-second confirmation
  • $0.0001 network fee
  • USDC stays on Solana
02

Work Gets Done

The freelancer works and submits deliverables through Paystream. Clients review, request revisions, or approve. All activity is recorded on-chain.

Hourly contracts track time automatically. Milestone contracts unlock funds one milestone at a time. Fixed contracts pay on approval.

  • Per-second hourly accrual
  • Milestone unlocks
  • Built-in messaging
03

Funds Release

Once the client approves, USDC is released to the freelancer's wallet instantly. If the client doesn't respond within 72 hours, funds release automatically.

No middleman to call. No ticket to raise. Just math running on Solana.

  • Instant settlement
  • 72h auto-release
  • No chargebacks

The architecture, end to end

A web app that does no money handling. A smart contract that does no UI. Cleanly separated.

PDA escrow

Funds live in a Program Derived Address — a Solana account whose private key is mathematically nonexistent. Nobody can sign for it. Only the program code can transfer the USDC, and only via the four instructions listed below.

PDA seed:
[b"escrow", contract.id]
Owner:
PaystreamProgram111…

The four ways funds can move

Any USDC leaving an escrow PDA goes through one of these four program instructions. Nothing else.

deposit_escrow()

Client deposits USDC. Locks the amount in a PDA owned by the contract program.

approve()

Client signs an approval transaction. Releases the agreed amount to freelancer.

execute_timeout()

After 72h with no client response, anyone can call this to release funds to freelancer.

respond_cancel()

Both parties agree to cancel. PDA splits funds per the agreed terms and closes.

Three contract modes

Pick the structure that fits your work style. All three use the same on-chain escrow program.

Hourly

For ongoing work billed by time

Payment trigger
Automatic, per second
Escrow holds
Full period budget
Dispute window
None — time-based
Good for
Ongoing retainers
Settlement
Withdraw any time
Best example
Design retainer at $25/hr × 40h

Fixed

One job, one price

Payment trigger
Client approval
Escrow holds
Full agreed amount
Dispute window
72 hours after submission
Good for
Defined-scope projects
Settlement
On approval / timeout
Best example
Logo + brand kit for $500

Milestone

Break big projects into funded stages

Payment trigger
Per-milestone approval
Escrow holds
Each milestone amount
Dispute window
72 hours per milestone
Good for
Long or complex projects
Settlement
Per-milestone release
Best example
App build across 4 stages

Contract lifecycle

Every contract moves through this state machine. No back-doors, no admin overrides.

Fees that don't eat your earnings

One flat 1% fee on funded amount. No hidden charges, no conversion spread, no receiving fees.

 PaystreamusPayPalWiseBank Wire
Transaction fee1%3.49% + $0.490.43%–2%$15–$45 flat
Receiving feeNoneNoneNoneUp to $20
Conversion to local currencyBring your own exchange3–4% spreadMid-market1–3% spread
Settlement timeInstant1–3 days1–2 days3–5 days
Requires bank accountNoYesYesYes
Non-custodialYesNoNoNo
Chargeback riskNone180 daysLimitedLimited
Country supportGlobal200+80+Global

72-hour auto-release

The most common freelance horror story is a client receiving work and disappearing. Paystream solves this in code.

  • T+0hFreelancer submits deliverable. Submission time recorded on-chain.
  • T+72hWithout client approval or rejection, anyone can call execute_timeout().
  • DONEUSDC is released to the freelancer's wallet. No tickets. No appeals.

Where does the money live?

When a client funds a contract, USDC moves from their wallet into a program-derived address (PDA) on Solana. This is a special account controlled by the smart contract code, not by Paystream.

Paystream's servers handle the user interface and notifications — but we have no signing authority over any escrow account. We cannot pause, redirect, or confiscate your funds. If we got hacked tomorrow, your escrow would be safe.

The only ways funds can leave escrow are:

  • Freelancer submits → client approves → USDC released to freelancer
  • 72-hour timeout: client doesn't respond → funds auto-release to freelancer
  • Both parties agree to cancel → proportional refund per agreed split
  • Hourly contract: funds stream continuously per second until end time

The smart contract code is open source and verifiable on Solana Explorer. Trust the code, not the company.

Built on proven infrastructure

We use boring, battle-tested tools. The interesting part is the smart contract.

Solana

Layer 1 chain

Anchor

Rust framework

USDC

Circle stablecoin

Next.js 14

Web app

Helius

RPC + indexing

Ready to get started?

Connect your Solana wallet. No sign-up form, no KYC, no waiting for approval.