Crypto Swap Fees Explained: Spread, Network Fees and the 'Zero Fee' Myth
By Nora Vance · Crypto & Payments Editor · 2026-10-27 · 8 min read
Quick answer: The total cost of a swap is spread + deposit network fee + payout network fee (+ any slippage). "Zero fee" usually means the cost sits in the spread. To compare services, ask each for the guaranteed amount received for the same pair and size, at the same moment.
Disclosure: Zitto runs a swap service. This method works for comparing any provider, including us.
The four costs
1. Spread
The gap between the mid-market price and your rate. It's where most instant-swap services make money, and the hardest cost to see.
2. Deposit network fee
You pay this from your own wallet when you send. The service doesn't control it, but you choose the network (USDT on TRON vs Ethereum, for example).
3. Payout network fee
The service pays this to send you the output coin, and usually takes it from your amount. Some add a markup.
4. Slippage / rate drift
With floating rates, the price can move during the confirmation window. See our fixed vs floating guide.
Here's what actually happens to $500 (illustrative)
| Step | Example amount |
|---|---|
| Mid-market value of your BTC | $500.00 |
| Spread (illustrative 0.5–1%) | −$2.50 to −$5.00 |
| Payout network fee (illustrative) | −$0.50 to −$3.00 |
| You receive | ≈ $492–497 in coin B |
Figures are illustrative, not quotes.
The 3-step comparison method
- Same moment: open each service in a separate tab and request quotes within one minute of each other.
- Same terms: same pair, same size, same rate type (fixed vs fixed).
- Same metric: write down the guaranteed amount received. Ignore headline fees and "best rate" badges.
Repeat at three sizes (small, medium, large). Spreads often change with size.
Red flags
- A quote with no guaranteed output and no stated fees.
- "Zero fees" with no explanation of how the service makes money.
- Payout fees that are only shown after you deposit.
- No refund address field.
What Zitto should publish (to win this comparison)
- A visible breakdown: spread %, payout fee, guaranteed output
- A public example quote, refreshed regularly
- A free fee calculator, which is also a good way to earn links (see the SEO plan)
Why spreads differ between services
Spreads aren't random. They come from how each service sources liquidity:
- Own inventory: the service holds balances of many coins and fills orders from them. This allows tight spreads on popular pairs, but the service carries inventory risk, so rarer coins cost more.
- Routing to exchanges: the service buys and sells on partner exchanges behind the scenes. You pay the partner's fee, the service's margin, and sometimes a withdrawal fee.
- Aggregation: the service checks several sources and picks the best. That can tighten spreads but adds complexity.
- Market makers / OTC desks: common for large orders. Pricing depends on order size.
What this means in practice: the same service can be cheapest for BTC→ETH and expensive for a small-cap token→XMR. Compare per pair, not per brand.
How size changes the price
Small orders pay proportionally more because fixed costs (payout network fees) take up a larger share. Very large orders can pay more because they eat into liquidity. There's usually a middle range where each service is cheapest.
| Order size | What dominates the cost |
|---|---|
| < $50 | Payout network fee, minimum amounts |
| $50–$5,000 | Spread |
| > $5,000 | Liquidity depth, fixed-rate caps, possible manual review |
Network selection: the fee you control
For stablecoins and multi-chain tokens, you pick the network, and the choice can change your fee a lot:
| Network for USDT/USDC | Typical fee level | Notes |
|---|---|---|
| Ethereum mainnet | Highest, especially when congested | Most widely supported |
| TRON (TRC-20) | Low | Popular for USDT; check energy/bandwidth model |
| Solana | Very low | Fast; wallet support is good |
| Arbitrum / Base / Optimism (L2s) | Low | Check that the receiver supports the L2 |
| BNB Chain | Low | Check address formats |
Rule: the network must match on both ends. Sending USDT on TRON to an Ethereum-only address is the most common way people lose money in swaps.
Hidden costs people forget
- Exchange withdrawal fees: if you're sending from an exchange, its withdrawal fee comes on top of the swap's costs.
- Minimums: amounts below the service's minimum can be refunded minus fees, or lost. Check before you send.
- Memo/tag mistakes: missing a tag (XRP, XLM, ATOM, some exchange deposits) can mean a manual recovery process and a fee.
- Refund fees: if the swap fails, the refund also pays a network fee.
- Time cost: a slow swap during a volatile market has a real opportunity cost.
A simple fee-audit spreadsheet
| Date/time | Service | Pair | Amount in | Rate type | Guaranteed out | Actually received | Effective cost % |
|---|
Effective cost % = (mid-market value in − value received) ÷ mid-market value in × 100. Use one price source (e.g. a major index) for mid-market at the time of the quote. Five or six entries per service will tell you more than any review site.
Why "best rate" badges mislead
Rate-comparison widgets often show the estimated rate before payout fees, or a floating estimate that won't hold. A service can win the badge and still pay out less. Trust the guaranteed output and your own records.
What fair fee disclosure looks like
The standard Zitto should publish, and that you should expect from anyone [ACTION]:
- Spread shown as a percentage on the quote screen
- Payout network fee shown separately, in coin and in fiat
- Guaranteed output for fixed quotes
- Minimum and maximum amounts per pair
- Refund fee policy
- A dated public example quote for three common pairs
Swap service vs DEX vs exchange: where fees hide in each
| Instant-swap service | DEX / aggregator | Centralized exchange | |
|---|---|---|---|
| Visible fee | Often "0%" | Protocol fee (e.g. 0.05–1% pool fee) | Maker/taker fee |
| Hidden cost | Spread | Price impact, MEV/sandwich risk, gas | Deposit/withdrawal fees, spread on "simple" buy screens |
| Cross-chain | Native | Needs a bridge (extra fees + risk) | Native via deposit/withdraw |
| Account needed | Usually no | No | Yes (KYC) |
| Best when | Cross-chain, no account | Same-chain tokens, self-custody | Large volume, fiat |
Exchanges' "simple buy" screens often have much wider spreads than the advanced trading view on the same exchange. If you use an exchange, use the advanced view.
MEV and sandwich attacks (DEX users)
On public blockchains, bots can see your pending DEX trade and place their own trades around it, buying just before you and selling just after. You get a worse price. To protect yourself:
- Set a tight slippage tolerance (e.g. 0.5% for liquid pairs)
- Use MEV-protected RPCs or aggregators that offer private order flow
- Split large trades
Instant-swap services fill orders off-chain, so this specific risk doesn't apply. In return, you accept the custody window.
Timing: when fees are lowest
- Network fees follow demand. Weekends and off-peak hours (relative to US/EU business hours) are often cheaper on congested chains.
- Spreads widen when markets move fast. Avoid swapping during big news if you can wait.
- Stablecoin-to-stablecoin swaps usually have the tightest spreads of all pairs.
Taxes: the cost nobody puts in the quote
In many countries, swapping one crypto for another is a taxable disposal, even with no fiat involved. A "cheap" swap that creates a large taxable gain isn't cheap. Keep records of:
- Date and time
- Amount and value of the coin you sent
- Amount and value of the coin you received
- Fees paid
- Order ID and transaction hashes
Crypto tax software can import these. Wallet exports and swap order IDs make reconciling much easier.
Our fee-calculator spec (for the Zitto site)
An interactive calculator earns links and builds trust. Suggested inputs and outputs:
- Inputs: pair, amount, rate type, deposit network, payout network
- Outputs: mid-market value, spread cost, network fees, guaranteed output, effective cost %, and a comparison with "sending from an exchange" (adds withdrawal fee)
- Data: live mid-market from a public price index; Zitto's own quote API
Worked comparison: three quotes, one winner
Illustrative quotes for swapping 1,000 USDT (TRC-20) to BTC, all taken within the same minute:
| Service A | Service B | Service C | |
|---|---|---|---|
| Advertised fee | 0% | 0.25% | 0% |
| Quoted rate type | Floating estimate | Fixed | Fixed |
| Payout fee shown | No | Yes | Yes |
| Guaranteed BTC out | — | 0.01471 | 0.01462 |
| BTC actually received | 0.01455 | 0.01471 | 0.01462 |
Illustrative. The service with a visible 0.25% fee paid out the most because its spread was tighter and its payout fee was disclosed up front. That's why you compare the amount received, not the headline fee.
Fee questions to ask support (copy-paste)
"For a [AMOUNT] [COIN A] → [COIN B] fixed-rate swap right now, what is the guaranteed amount received, the payout network fee, and the spread versus mid-market? What is your refund fee if the swap fails?"
A service that answers all four clearly is one you can compare fairly.
<!-- deepened3 -->Bottom line
You can't see fees in the headline, only in what you receive. Compare that number under identical conditions and the cheapest service will be obvious.
FAQ
Received less than quoted? Floating drift, payout fee, or a quote shown before fees. Who sets network fees? The blockchain, though a service may add a markup. Cheapest network for stablecoins? It depends on congestion. Check before you send.
FAQ
- Why did I receive less than the quote?
- Usually because of a floating rate moving, the payout network fee, or a quote that showed the amount before fees. Check whether the quote was a guaranteed output.
- Are network fees set by the swap service?
- The base fee is set by the blockchain. A service may add a markup on the payout transaction, so compare the final received amount.
- What's the cheapest network for stablecoins?
- It changes with congestion. TRON, Solana and Ethereum L2s are often cheaper than Ethereum mainnet. Check current fees before you choose.
