Milestone escrow for freelance work in USDG or USDC on Arbitrum. The client funds the whole job up front; silence past the review window pays the freelancer. No platform, no owner key, no fee.
Stagepay is milestone escrow for freelance work, settled in stablecoins. Freelancers on marketplaces wait days for payouts and give up 10-20% in fees; paying them directly means someone has to trust someone. Stagepay fixes the order of trust with code.
How it works: the client calls createJob(freelancer, token, amounts[], deadlines[], reviewPeriod, termsHash), which pulls the whole job into escrow. The freelancer submits a milestone, which starts a review window. The client approves (pays that milestone) or requests a revision (max 3 per milestone). If the client says nothing before the window ends, the freelancer claims the payment. An unsubmitted milestone refunds to the client after its deadline. Either side can propose a split and the other accepts, so disputes settle without an arbiter. Only a hash of the agreement goes on chain; the app checks any text against it.
Stablecoins: works with any ERC-20; the Arbitrum Sepolia app offers Paxos USDG (0xFFC95faa3d63Cde504a05B567C600B78C0b41892) and Circle USDC. A freelancer paid in USDG gets a regulated dollar stablecoin directly, with no platform in between.
Security: no owner, no fee, no upgrade path. Deposits are checked by balance delta so a fee-on-transfer token can't under-fund a job; events are emitted before external transfers (checks-effects-interactions). 15 Foundry tests, including a 2,000-run fuzz test that every unit of funds ends up with the client or the freelancer.
Frontend: static web app (viem, no build step) served from GitHub Pages: create jobs, submit, approve, request revisions, claim, split, and verify agreement text.
The same contract is also live on Arc mainnet (Circle's L1), where a real job has been funded, approved and paid.
<p>Built during the buildathon window (September 2026): the Stagepay contract, 15 Foundry tests with fuzzing, the static web app with multi-network support, and deployment to Arbitrum Sepolia (0x0A87039a127b600cF9B85d4C33d97c08054e15E6) with USDG and USDC token options. Also deployed to Arc mainnet with a real funded and paid job. Demo video: https://github.com/yangdongsuk/stagepay/releases/download/v0.1.0-demo/stagepay-demo.mp4</p>
<p>Not fundraising. Solo, self-funded project.</p>