Getting started
Handoff is a person-to-person market for ETH on Robinhood Chain. Sellers cash out to the apps, banks and gift cards they already use, and buyers pay them directly. We are the middleman: the seller's ETH waits in an on-chain escrow until the seller confirms the money arrived, and our team resolves any disagreement.
Quick start
- Sign in with X. Your handle and your trade history are your reputation. A wallet on Robinhood Chain is created for you at the same time.
- Pick an offer, or post an ad. The market lists live offers, best price first. Filter by payment method and amount, or post your own ad with your price, limits and ways to pay.
- Get paid, or receive your ETH. Selling: the buyer pays you directly, you check your account and release. Buying: you pay the seller, mark it as paid, and the ETH lands in your wallet once they release.
What you need
- An X account: it's how you sign in.
- A wallet on Robinhood Chain. One is created when you sign in; you can also use any 0x address you control.
- ETH on Robinhood Chain if you sell: the amount you sell plus the 1% fee.
- A payment account in your own name (PayPal, bank, app…) to pay or get paid.
Cash out (sell ETH)
There are two ways to sell. Either way your ETH is locked in escrow before the buyer pays, and nothing leaves until you release it.
Answer a buy ad
The quickest way to cash out once: someone already wants to buy.
- Find a buyer. Open Market → Sell ETH. Buyers are sorted highest price first; filter by how you want to be paid.
- Open the trade. Enter the amount, pick the payment method, add where you get paid (saved for next time) and your refund wallet. The price is fixed from now on.
- Lock your ETH. Within 30 minutes, send the ETH plus the 1% fee to the trade's escrow, in one transaction. Miss the window and the trade cancels.
- Wait for the payment. The buyer only sees your payment details once the ETH is locked. They pay you directly, then mark it as paid.
- Release. Check that the money is settled in your own account, then release. The ETH goes to the buyer, the fee to the platform.
Post a sell ad
Best if you sell often: fund once, and buyers come to you.
- Create the ad. On Post an ad, pick a price (the market price plus or minus a margin, or a fixed price, within 20% of the market), your limits per trade, up to 12 payment methods with your details, a payment window and your terms.
- Fund it once. Deposit ETH into the ad's escrow. It covers as many trades as it can, fee included. Top it up any time from My trades.
- Buyers open trades. Each trade sets its ETH aside from the ad's escrow straight away, so the buyer can pay at once.
- Release each trade. Check the money, then release. Unused ETH stays in the ad: withdraw it any time from My trades, we pay the gas.
To close an ad, finish its open trades first. Pausing it hides it from the market right away.
Your refund wallet
When you answer a buy ad, you choose a refund wallet. If the trade doesn't complete (cancelled, timed out, or a dispute decided for you), everything in that trade's escrow goes back there automatically, including anything extra you sent. It is fixed when the trade opens and only you set it. Sell ads don't need one: a cancelled trade's ETH simply stays in your ad.
When to release
Check your own PayPal, bank or app balance, not a screenshot or an email. Pending is not paid. A release can't be undone.
Some payments can be pulled back after you release: card-funded PayPal payments, some bank transfers, stolen gift cards. Prefer instant, irreversible methods and payments from an account in the buyer's name.
Buy ETH
Buying is free: you pay the price in the ad, nothing more. On a sell ad the seller's ETH is already in escrow before you pay.
- Pick an offer. The market lists sellers lowest price first. Filter by payment method and amount, and check the seller's completed trades and terms.
- Open the trade. Enter an amount within the ad's limits, choose how you pay and the wallet that receives the ETH. The price locks.
- Pay the seller. Send exactly the amount shown, with the method you picked, from an account in your own name. Gift cards: post the code in the trade chat.
- Mark it as paid. Tap “I've paid” before the payment window ends.
- Receive your ETH. The seller checks the payment and releases. The ETH lands in your wallet.
The payment window
Each ad sets how long you have to pay: 15, 30, 45 or 60 minutes, counted from the moment the ETH is in escrow. If it runs out before you mark the payment as sent, the trade cancels itself. You can cancel yourself any time before that.
Open a dispute from the trade before the window ends and post your receipt in the chat. The ETH stays frozen until our team decides. Never pay twice.
You can have up to 3 open trades at once as the one answering ads. On your own buy ad the seller locks the ETH first: you only see their payment details once it's in escrow, so never pay before.
Paying the right way
- The exact amount, in one payment.
- From an account in your own name. Sellers can refuse third-party payments.
- Don't mention crypto, ETH or the platform in the payment note. Leave it empty or neutral.
- Keep your receipt until the trade is completed.
The escrow
The escrow is what lets two strangers trade: the seller can't take the ETH back while the buyer pays, and the buyer only gets it once the seller confirms.
How the vault works
- One route per ad and per trade. Each sell ad, and each trade on a buy ad, has its own escrow route: a separate balance inside one vault contract on Robinhood Chain.
- Only the operator pays out. Anyone can deposit into a route, but only our operator can send ETH out of it: to the buyer on release, or back to the seller.
- No double payouts. Every payout carries a unique reference that the vault burns. The same release can't be paid twice or replayed.
- No backdoor. The owner can pause payouts in an emergency and manage operators. There is no function that lets anyone take ETH out of a route other than an operator payout.
- Public by design. Deposits, releases and refunds are on-chain transactions anyone can check on the explorer.
Timeouts
| Clock | Length |
|---|---|
| Escrow window A seller answering a buy ad locks the ETH within it, or the trade cancels. | 30 min |
| Payment window Set by the ad, starts once the ETH is locked. The buyer pays and marks it as paid, or the trade cancels. | 15–60 min |
| After “Payment sent” Only the seller's release or a decision by our team moves the ETH. | No timer |
Cancellations and leftovers
- On a sell ad, the ETH stays in the ad's escrow, ready for the next buyer or for you to withdraw.
- On a buy ad, the trade's escrow is refunded to the seller's refund wallet.
- Anything that lands on a finished trade's escrow later (a late deposit, an overpayment) is swept back to the seller automatically.
Live escrow balances and every movement, with links to the explorer, are on one public page: Proof of escrow.
Trade statuses
Every trade shows one status, with the same colours everywhere.
Waiting for escrowETH in escrowPayment sentReleasingCompleted
Trades on a sell ad skip the first step: the ETH is already in escrow.
| Status | Meaning |
|---|---|
| Waiting for escrow | The seller has 30 minutes to lock the ETH. Buyer: don't pay yet. |
| ETH in escrow | The ETH is locked. The buyer pays, then marks it as paid within the window. |
| Payment sent | The buyer says they paid. The seller checks their account, then releases. |
| Releasing | The vault is sending the ETH to the buyer. It takes a few moments. |
| Completed | The ETH is in the buyer's wallet. Done. |
| In dispute | Someone flagged a problem. The ETH stays locked until our team decides. |
| Cancelled | Ended without a release. The ETH went back to the seller or stayed in their ad. |
Who can do what
| Action | Who |
|---|---|
| Mark as paid While the ETH is in escrow, before the payment window ends. | Buyer |
| Release Once the ETH is in escrow; normally after the payment is marked as sent. | Seller |
| Cancel The buyer until they mark it paid; the seller only before locking the ETH. | Either |
| Open a dispute Once the payment is marked as sent. The buyer can also open one while the ETH is in escrow. | Either |
Disputes
A dispute freezes the ETH in escrow until an admin reviews the trade. Open one from the trade room, with a short note on what went wrong. Try the chat first: most issues are just a slow transfer. If a release ever fails on-chain, the trade moves to a dispute on its own and the ETH stays safe in escrow.
When to open one
- Buyer: you paid and marked it as paid, but the seller doesn't release.
- Buyer: you paid, and the payment window is about to close.
- Seller: the buyer marked it as paid, but nothing arrived, the amount is wrong, or it came from someone else's account.
- Seller: the gift card code doesn't work or was already used.
What proof to post
- A receipt or screenshot of the payment: date, amount, sender and recipient.
- The transaction or reference ID from your app or bank.
- Seller: a screenshot of your account history showing what arrived, or didn't.
- Gift cards: a photo of the card and of the store receipt.
What we decide
- Release to the buyer. The payment is proven: the vault sends the ETH to the buyer, as if the seller had released.
- Return to the seller. No valid payment: the ETH goes back to the seller's ad, or to their refund wallet for trades on buy ads.
The decision is posted in the trade chat. Messages from our team carry a “Team” label.
Fees & limits
One fee, paid by the seller. Buying is free.
| Fees | |
|---|---|
| Trade fee Of the ETH sold, paid by the seller on top of the trade. | 1% |
| Buying You pay the price in the ad. | Free |
| Withdrawing unused escrow Gas paid by us. | Free |
| Payment method fees Whatever PayPal, your bank or the card charges. | Theirs |
| Limits | |
|---|---|
| Trade size Each ad can set narrower limits. | $10 – $5,000 |
| Payment window Chosen by the ad. | 15, 30, 45 or 60 min |
| Escrow window For sellers answering a buy ad. | 30 min |
| Open trades as a taker Finish or cancel one to open another. | 3 |
| Ad price Market price plus or minus a margin, or a fixed price. | ±20% |
| Payment methods per ad | Up to 12 |
Example: selling $100 of ETH
| The buyer pays you | $100 |
| The buyer receives | $100 of ETH |
| Fee (1%, from your escrow) | $1 of ETH |
| You lock in escrow | $101 of ETH |
Payment methods
38 ways to pay, sent directly between the two of you. We never touch the money, so every method works the same way: the seller shares where to pay, the buyer pays.
Safety
A few rules cover almost every problem.
- Release only on settled money. Check your own balance, not a screenshot. Pending is not paid.
- Same name, same account. Pay and get paid from accounts in your own name. Refuse third-party payments.
- Keep it in the trade chat. Talk and share proof there: it's what our team reads in a dispute.
- Gift cards: redeem first. Redeem or check the card's balance before you release, and keep the photo of the card and receipt.
- Never trade outside the platform. A deal moved to DMs has no escrow and no dispute. Anyone asking for that is a red flag.
- Keep crypto out of payment notes. Some services freeze those payments.
Terms & risks
We provide the market and the escrow. Trades are between users; we are not a party to the payment between them and do not hold or transmit fiat money. We may ask for identity verification, limit or refuse trades, and decide disputes on the evidence in the trade. Using a payment service to trade crypto may be restricted by its own terms; you are responsible for using it within them and for any taxes on your trades. Crypto prices move fast and on-chain transfers can't be undone. Not affiliated with Robinhood or with any payment method shown. Nothing here is financial advice. Full text: Terms.
For developers
Everything that holds money is on-chain. You don't have to take our word for it: check the vault yourself.
| Network | |
|---|---|
| Network | Robinhood Chain |
| Chain ID | 4663 |
| RPC | https://rpc.mainnet.chain.robinhood.com |
| Explorer | Blockscout |
Escrow routes
Each escrow is a route inside the vault, identified by a hash. Ids are the ones in the page URLs: /ads/<adId> and /trade/<tradeId>.
| Sell ad | keccak256("p2p:ad:<adId>") |
| Trade on a buy ad | keccak256("p2p:trade:<tradeId>") |
Trades on a sell ad draw from the ad's route. Anyone funds a route with deposit(routeId). Each payout's reference is the hash of <prefix>:trade:<tradeId>:release (or :fee, :refund…); the vault never accepts the same reference twice, so a retry can never pay twice.
FAQ
Who holds what?
We never touch the dollars: buyers pay sellers directly. We hold the crypto, in an escrow vault on Robinhood Chain, from the moment a trade needs it until it is released or returned.
What if the buyer never pays?
When the payment window runs out without the payment marked as sent, the trade cancels itself. The ETH stays in the seller's ad, or goes back to the seller's refund wallet for trades on buy ads.
What if the seller doesn't release?
Open a dispute from the trade. The ETH can't move while our team reviews the chat and your proof, then releases it to you or returns it to the seller.
Can someone reverse a payment after I release?
Some can: card-funded PayPal payments, bank transfers and stolen gift cards are the usual risks. Release only once the money is settled in your own balance, prefer instant and irreversible methods, and ask for payment from an account in the buyer's name.
Can I cancel a trade?
Buyers can cancel until they mark the payment as sent. Sellers can cancel a trade on a buy ad until they lock the ETH. After that, only a release or a dispute ends the trade.
How long does a trade take?
As long as the payment takes to land. Once the seller releases, the ETH reaches the buyer's wallet in a few moments.
Which crypto can I trade?
ETH on Robinhood Chain for now.
Do I have to trust you?
Yes, as the middleman. The escrow vault only lets our operator pay out, and every payout is a public on-chain transaction with its own reference that can't be replayed. That is what lets two strangers trade: neither has to go first without a guarantee.