Start here
How it works
ZeroFee is one layer over the protocols that already move money between chains. It finds the protocol that can carry your swap or payment, shows the full cost in dollars before you start, and follows it until it lands. The protocols do the moving; ZeroFee connects you straight to them and adds 0%.
One layer, no middleman
Most apps sit between you and the protocols and take a cut on the way through. ZeroFee cuts that middleman out. ZeroFee Swap and ZeroFee Pay run on the same layer:
- ZeroFee does
- Finds a protocol that can carry your swap or payment, prices every leg, shows the full cost before you start, checks your addresses, and follows the swap to the end.
- The protocols do
- Issue the one-time deposit address, move the money between chains and deliver it to your address.
- You do
- Send from any wallet or exchange. No account, no sign-in, no wallet to connect.
- ZeroFee fee
- 0%. You pay only what the protocols and networks charge, and you see it before you start.
Who carries your swap
As soon as you enter an amount and pick both coins, the swap page asks for a price. Until you type your addresses it prices with placeholders; your own addresses are used when the deposit address is made.
| Protocol | What it carries |
|---|---|
| NEAR Intents | Most swaps: any pair where both coins are on its list. It is asked first, and when a swap crosses chains it is asked to cross confidentially. |
| Relay | Coins NEAR Intents doesn't list, on the chains where Relay issues deposit addresses, and any pair NEAR Intents can't carry right now. |
| Two steps through USDC (NEAR Intents and Relay) | When no single protocol can carry the pair: your coin becomes USDC or ETH on Base or Arbitrum, which pays the next protocol's deposit address directly, then the coin you want. Each step refunds to an address you control. |
| Privacy Cash (Solana ZK pool) | The ZK pool privacy step: a zero-knowledge proof hides which deposit paid which withdrawal. About 3–5 minutes. |
| Zcash shielded | The Zcash privacy step: inside Zcash's shielded pool, the sender, the receiver and the amount are hidden. NEAR Intents carries your coin in and out. |
| Monero | The Monero privacy step: Monero hides the sender, the receiver and the amount (ring signatures and stealth addresses). About 15 minutes. Your coins are held for a few minutes on the way. |
The coin list shows coins a protocol has been checked to carry, and the route on the swap page names the protocol on each arrow. See Chains & tokens.
Crossing chains: confidential where NEAR allows it
Nothing to switch on. When both coins are on NEAR Intents and the swap crosses chains, ZeroFee asks NEAR Intents to cross confidentially, so your deposit and your payout aren't publicly linked. Where NEAR's confidential mode doesn't cover the pair, the swap crosses on NEAR Intents in public mode. The swap's page names the route and adds “confidential” when it is. Details in Privacy protocols.
The full cost before you start
- They receive: about how much arrives, from the live price.
- Arrives in: the expected time.
- Cost: what you send minus what arrives, in dollars and as a percentage. Both sides are priced from one source (Relay's prices, otherwise NEAR Intents'), so every fee and the price spread are inside it. If you get more than the market price, it says “better than market”.
- ZeroFee fee: 0%.
- What's in the cost: each protocol's fee and each privacy step's fee, with a dollar amount where one is known. See Fees.
When a pair won't price
- Each protocol gets a few seconds to answer. One that is busy or slow is asked once more.
- If nothing can carry the pair right now, the button says why in plain words: the amount is under a minimum (“send at least …”), there isn't enough liquidity (a smaller amount may work), or the protocol has paused the pair for a while.
- The price keeps refreshing on its own, so a pair that was busy comes back without you doing anything.
Prices refresh, and are checked again
While the page is open, the price refreshes every 15 seconds (every 30 with privacy steps). A price is good for about 25 seconds. If you press the button later than that, the price is checked again first. If it has dropped by more than your slippage (0.5% by default), the swap stops before anything is reserved, and you can go again at the new price.
What is checked before you send
- Both addresses. The receiving address is checked against the destination chain's rules, and the refund address against the paying chain's. With privacy steps, the refund address can't be the receiving address: a privacy step sees the refund address, so it would see both ends.
- The price, once more, as above.
- Each privacy step. The page checks that every step can run right now, and a step that can't says why on its row. A swap only starts through steps that are ready.
- The deposit itself. The swap's page shows the exact amount, the network and the address with a QR code (and a memo or tag where the chain needs one). See Deposit swaps.
Double-check the receiving address
Followed until it lands
After you start, the swap's own page (/swap/<id>) follows it until it arrives: each checkpoint as it happens, how long it has taken, the cost, and links to the protocol's own tracking page.
- If a step takes much longer than usual, the page says Slower than usual and keeps checking.
- Every swap fixes itself where it can. A failed step is retried once on a different route; if it still can't finish, your money goes back to your refund address automatically.
- Support is one tap away. If a swap stops anyway, the page shows Try again, Send my money back and a support button that opens @ZeroFeeSi_bot on Telegram with the swap attached. The page also tells our team automatically and says where your money is when it can tell.
- The page lives in the browser that started the swap; reopen its link there while it runs. Once the swap finishes, your browser forgets it, and nothing is kept on a server.
How privacy protocols stack
Add privacy steps in the order you choose; NEAR Intents and Relay carry the legs between them. A standard swap is a single deposit, and so is the Monero step on its own: each part pays the next one's deposit address directly. With the ZK pool, Zcash, or more than one step, the swap runs in your browser, step by step:
- Temporary wallets are made in your browser to carry the money between steps. Their keys stay in your browser and never reach our servers.
- The Zcash step makes a shielded Zcash wallet in your browser; you save its 24 words before you start, and ZeroFee never sees them.
- Each wallet sends on everything it holds, so it ends empty.
- If a step fails, it is tried once more on a different route; if it still can't finish, your money goes back to your refund address automatically.
- Where your money is, on the swap's page, shows each temporary wallet and what it holds. Keep the page open while it runs, or reopen the link in the same browser and it picks up where it stopped.
How ZeroFee Pay works
A pay link runs on the same layer, turned around. A swap fixes what you send and tells you what arrives; a payment fixes what arrives (exactly 25 USDC on Solana, say) and tells the payer what to send.
- The link is the request. The coin, the chain, the amount and the address are all in the link. Nothing is stored on a server, and each payment gets its own one-time deposit address.
- The best route for the payer. Relay and NEAR Intents can both deliver an exact amount, so a payment asks both and uses the one that asks the payer for less. A NEAR Intents price includes a small margin that comes back if unused; a Relay payment is exact, or refunded.
- Exactly, or at least. A standard payment delivers exactly the amount. A payer can add privacy steps too; paid privately, the payment delivers at least the amount (through Monero, about 15–30 minutes).
- The payer pays every fee and sees the full cost in dollars and ZeroFee fee 0% before paying. If they already hold the coin you asked for, it's a direct transfer.
- The same follow-through. Each payment gets the same swap page, with self-repair and support one tap away.
Developers get the same thing with amountOut in the API. See Pay links & payments.
Who holds your funds, and when
- You do, until you send. ZeroFee's servers never hold your money or your keys.
- The protocol holds them briefly, from the moment your deposit lands until it pays out, usually seconds to minutes. NEAR Intents and Relay pay out from their solvers' own funds and are paid back afterwards.
- Temporary wallets in your browser hold them between privacy steps. Only your browser has their keys.
- Privacy Cash's pool holds them during the ZK pool step. During the Monero step, the services that carry it hold your coins for a few minutes, each seeing only its own side, and they can run their own compliance checks.
Privacy at a glance
A standard swap is public: anyone can see which wallet paid and which received. A confidential crossing on NEAR Intents hides that link where NEAR allows it, and the Solana ZK pool, Zcash shielded and Monero break it further, stacked your way. Privacy protocols shows how each one works. Ready? Start a swap or make a pay link.