Type their Venmo handle and send ZEC to one address. Your coins wait as USDC in an immutable escrow on Base until a taker pays that Venmo and proves it through zk-p2p's enclave. They never touch crypto. No exchange account on either end. No custodian holding the dollars.
Quoted by 1Click, net of the 0.15% fee. A fresh quote is taken when you start.
The swap leg turns ZEC into USDC on Base. The payment leg turns that USDC into a Venmo transfer to the handle you typed. zpay's contract sits between them and only ever pays out against a proof. Cashing out to yourself is the same flow with your own handle.
Enter the recipient's Venmo username and a ZEC amount. zpay registers the handle with zk-p2p's curator and opens a session whose payee is fixed to that hash. One Zcash deposit address comes back, and that is where you send.
NEAR Intents' 1Click route swaps your ZEC to USDC on Base and delivers it to the zpay contract, which posts it as a sell order on zk-p2p's escrow. The order pays only the handle from step one; the contract reverts on any other payee.
A taker stakes, sends the dollars from the taker's own Venmo account to the handle you typed, and asks zk-p2p's Nitro enclave to attest the payment. The on-chain verifier checks that signature and releases the USDC to the taker. By then the dollars are already in the recipient's Venmo.
Three parties touch value between your wallet and their Venmo. What each one can and cannot do is read off the contract and the deploy, not off a promise.
Deployed once, no proxy, no upgrade path. The only privileged action its owner has is naming the keeper, and the keeper can only open sessions and post your credited USDC to escrow. It cannot change the payee, and it cannot pay itself.
Your own key can pull the USDC back at any point before a taker claims it. Nobody else's signature is needed. The recipient signs nothing and needs no wallet.
1Click custodies your ZEC from the moment it leaves your wallet until USDC lands on the contract. That window is not trustless. If the route fails, 1Click refunds to the transparent Zcash address you gave on the quote's deadline.
A Venmo payment is not an on-chain event, so the escrow releases only against a signature from zk-p2p's Nitro enclave, which replays the taker's Venmo feed and attests the amount, the payee hash and the timestamp. The verifier contract checks that signature during release.
The quote above already nets these. Nothing is added after you send.
| line | amount | who takes it |
|---|---|---|
| zpay fee | 0.15% | Taken from the USDC as it is posted to escrow. |
| swap spread | in the quote | 1Click's rate for ZEC to USDC. Shown as the rate line before you start.Varies with the route; there is no separate charge. |
| taker margin | set by you | The floor rate your order is posted at. Default is one dollar per USDC. A lower floor fills faster because the taker keeps the difference. |
| gas | $0 | The coordinator pays for the session and the escrow deposit. Takers pay for their own claim and release. |
Better to read this here than to find it after sending.
The coordinator registers Venmo payees. The enclave that signs proofs knows eleven platforms, and each one needs its own payee registration and payment driver before it turns on here.
zk-p2p's Venmo verifier is deployed on Base and nowhere else, and the enclave binds every attestation to chain 8453. There is no testnet version of the payment leg.
Nothing bounds how long a sell order sits in escrow, and nothing reaches their Venmo until a taker fills it. Small orders wait longest, because a taker pays the same gas and locks their stake for fourteen days whether the order is $5 or $500. You can withdraw any time before a taker claims it.
The escrow stores a hash of the recipient's Venmo username, and zk-p2p's curator answers that hash to anyone who asks. Treat the handle, amount and time of a payment as public; if you pay your own handle, that is your handle. The Zcash side ends at a transparent deposit address, so spend from a shielded pool if you care about the input.
1Click refuses anything under 0.00052 ZEC. Above that, whether an order fills is up to takers, and the smallest orders are the ones they skip.
The contract keeps every session's USDC in one pot and credits arrivals to one open session, so the coordinator serves payments in series. If yours is queued, the app says so.
Every open order is a USDC deposit on zk-p2p's escrow with a rate floor. Pay the Venmo, present the enclave's attestation, collect the USDC. The auto-taker daemon watches, claims, pays and proves from a browser you are already logged into, and stops before each money step unless you tell it not to.