Docs menu

Start here

Getting started

Two apps, a minute each. ZeroFee Swap moves your coin to any of 70+ chains: you send to a one-time deposit address from any wallet or exchange, and it lands at your address. ZeroFee Pay makes a link for an exact amount that anyone can pay with a coin they hold. No account, no sign-in, no wallet to connect, and ZeroFee adds 0%.

Your first swap

  1. 1

    Open ZeroFee Swap. Under You send, choose the coin and the chain it is on, and enter the amount. Under They receive, choose the coin you want and its chain. Search by name or symbol, or paste a contract address; the list shows coins a protocol has been checked to carry.

  2. 2

    Under Addresses, enter the address that receives, then a refund address on the chain you pay from, so your coins come straight back if the swap can't finish. Without privacy steps, when the receiving address also works on the paying chain (two EVM chains, say), it doubles as the refund address; untick the box if it isn't yours. With privacy steps, use a different refund address: the wallet you pay from.

  3. 3

    See the full cost before you start. The receive box shows about how much arrives. Beside the button: Arrives in, the Cost in dollars and as a percentage, and ZeroFee fee 0%. On a computer, open What's in the cost for each protocol and network fee. The price refreshes by itself until you start.

  4. 4

    Press Get deposit address. The swap's own page opens with a one-time deposit address, the exact amount and a QR code.

  5. 5

    Send exactly that amount, of that coin, on that network, from any wallet or exchange, Bitcoin included. Add the memo or tag if one is shown. Then watch it land on the swap's page.

Send the exact amount

A different amount or a different coin can delay or refund the swap. Deposit swaps covers memos, expiry and refunds.

Paying from an exchange?

Use a refund address you control, not the exchange's own deposit address, and check that the amount that arrives equals the amount shown: some exchanges subtract their withdrawal fee from what you enter.

Get paid in the coin you want. A pay link asks for an exact amount of one coin on one chain, and whoever opens it pays with a coin they hold on 70+ chains.

  1. 1

    Open ZeroFee Pay. Under You receive, pick the coin and the chain you want to be paid in (USDC is the default on most chains).

  2. 2

    Enter the Exact amount and your address on that chain. Add a name shown to the payer and a note, such as an invoice number, if you like.

  3. 3

    Your pay link appears with a QR code. Copy it, share it, print the QR or put it behind a Pay with crypto button on your site. Use Open it as a payer to see exactly what your payer sees.

  4. 4

    Your payer opens the link, picks a coin they hold, sees the full cost in dollars and ZeroFee fee 0%, and sends to a one-time deposit address from any wallet or exchange. They pay every fee.

  5. 5

    The money lands at your address. A standard payment delivers exactly the amount; a payer who pays privately delivers at least the amount. If they already hold the coin you asked for, it's a direct transfer with a wallet QR.

Nothing is stored on a server: the link is the request, and each payment gets its own deposit. Speed, private payments, link format and the API are in Pay links & payments.

Add privacy

Four privacy protocols, stacked your way, on a swap or a payment. Crossing chains on NEAR Intents is confidential wherever NEAR allows it, with nothing to switch on: your deposit and your payout aren't publicly linked. For more, the Privacy box has a switch for each step:

  • Solana ZK pool (about 3–5 minutes, 0.35% + about $0.63): your money passes through Privacy Cash's pool on Solana, where a zero-knowledge proof hides which deposit paid which withdrawal.
  • Zcash (several minutes): your coin becomes shielded ZEC in a Zcash wallet made in your browser, where sender, receiver and amount are hidden, then leaves it as the coin you want.
  • Monero (about 15 minutes, minimum about 50 USD): Monero hides the sender, the receiver and the amount (ring signatures and stealth addresses). Your coins are held for a few minutes on the way.

Switch on more than one and set their order with the arrows on the route. The button then reads Start private swap, and the cost includes every step. Steps that need a wallet between them use temporary wallets made in your browser: their keys stay in your browser, and each one ends empty. Privacy protocols shows what each one hides and how to get the most from it.

What the swap page shows

  • Left: what you send, what they receive (with the estimate), and the addresses, which appear once both coins are picked.
  • Right: the privacy switches, the route your money takes (your coin, each privacy step, their coin, with the protocol named on each arrow), and the button.
  • The button always says what to do next: pick a coin, enter an amount, enter an address. On a phone the columns stack and the button stays at the bottom of the screen.

Every swap gets its own page

The moment you start, the swap's page opens at /swap/<id>. It shows each checkpoint as it happens, how long it has taken, its cost and, while a deposit is due, the deposit address with a QR code. When temporary wallets are used, Where your money is shows each one and what it holds.

  • It 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 that swap attached. The page tells our team automatically too.
  • A single-deposit swap keeps going if you close the page. A swap through the ZK pool, Zcash or more than one step runs in your browser: keep its page open, or reopen the link in the same browser and it picks up where it stopped.
  • No history is kept: once the swap finishes, your browser forgets it.

A link can open the swap page with the pair already filled in. You still check it and press the button yourself; a link never sends anything.

Format
/swap?from=<chainKey>:<tokenAddress|native>&to=<chainKey>:<tokenAddress|native>&amount=<number>&recipient=<address>&privacy=<steps>
from
What you send: a chain key, a colon, then the token’s contract address (EVM) or mint (Solana), or native for the chain’s own coin.
to
What arrives, in the same format.
amount
Optional. The amount to send, in whole units (1.5 means 1.5 SOL).
recipient
Optional. The address that receives on the destination chain.
privacy
Optional. zk switches on the Solana ZK pool, zec the Zcash step and xmr Monero; give several, comma-separated, in the order the money should go (privacy=zk,xmr).

The link is read once, when the page loads. A coin the page can't find is left empty for you to pick, so check the pair before you start.

1.5 SOL to the native coin on Base
/swap?from=sol:native&to=base:native&amount=1.5
0.1 ETH to USDC on Solana, delivered to a given address
/swap?from=eth:native&to=sol:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&amount=0.1&recipient=<your Solana address>

Common chain keys are sol, eth, base, arb, op, bsc, pol, avax, btc, tron, ton and xrp. The full list is in Chains & tokens.

Where to go next

  • How it works: the one layer between you and the protocols, for Swap and for Pay.
  • Fees: 0% from ZeroFee, and every protocol and network fee, added up before you start.
  • Privacy protocols: what each of the four hides, and how to stack them.
  • Pay links & payments: get paid in the coin you want.
  • FAQ: short answers, then go make your first swap.