syncswap is a decentralized exchange interface that finds a route through on-chain liquidity pools, lets your wallet authorize the required token spend, and submits the swap on the network you selected. In the case below, its useful job is not “turn ETH into USDC”; it is choosing and executing that route while you keep enough ETH to pay for it.
A 0.300 ETH swap fails when the wallet holds 0.312 ETH but treats all of it as spendable
Consider one specific zkSync Era wallet: it holds 0.312 ETH, has no USDC, and its owner wants to exchange 0.300 ETH for USDC. They have used a DEX before, so the first screen is familiar: choose ETH, choose USDC, enter 0.300, review the quote, press Swap.
That first attempt is where the mistake sits. ETH is both the asset being sold and, on this network, the asset normally needed to pay the transaction fee. A quoted output is not a promise that the transaction can be paid for. If the swap consumes the full usable ETH balance, the wallet may be unable to submit it, or the transaction may fail before the trade reaches a pool.
The correct input is deliberately smaller: 0.300 ETH only if the remaining 0.012 ETH is comfortably more than the fee the wallet shows at confirmation. There is no universal reserve amount. zkSync fees can move because their cost includes L1 publication and proving-related components, not merely a fixed local gas price; the official ZKsync fee documentation explains why that figure cannot be safely rounded to “almost zero.”
The practical rule is simpler than the mechanism: leave the gas asset behind first, then size the trade. If the balance is tight, reduce the input again rather than assuming a low-fee network makes the residual irrelevant.
The quote is a route proposal, so the output and the minimum received answer different questions
After entering 0.300 ETH, the interface produces two figures that are easy to collapse into one: the estimated USDC output and the minimum USDC received. They are not interchangeable.
| Figure | What it means in this case | What can change it |
|---|---|---|
| Estimated output | The route’s current calculation before submission. | Pool balances, route selection, and market movement. |
| Minimum received | The on-chain floor below which the swap should not execute. | Your chosen slippage tolerance. |
SyncSwap can route a trade through more than one pool or hop when that produces a better result. For an ETH-to-USDC exchange, that may mean a direct pool, an intermediate token, or portions of the input sent through different eligible pools. That is why a route can be more useful than picking the pair that looks obvious. It also means the displayed price impact is specific to this 0.300 ETH size, not a permanent exchange rate.
Suppose the estimate is 1,000 USDC and the selected slippage tolerance is 0.5%. The minimum received is roughly 995 USDC. The part many quick guides skip: that 5 USDC difference is not a fee you have agreed to pay. It is the execution boundary. If the route can no longer deliver at least that amount when the transaction executes, it should revert rather than fill at a worse price.
For a liquid, familiar pair, use the smallest tolerance that still lets a normal transaction settle. Raising it to force a completion makes the guarantee weaker. For a thin token, a large price impact is not cured by a larger slippage setting; it only permits a worse outcome.
The approval screen disappears for ETH, but it matters the moment the input is an ERC-20
This ETH case normally proceeds directly to the swap confirmation because native ETH does not use the standard ERC-20 allowance step. That absence is useful: it separates the swap transaction from the approval people remember from their earlier USDC or token trades.
If the input were USDC instead, the first interaction could be an approval and the second the swap. Approval grants a contract permission to transfer a stated amount of that token from the wallet; it does not exchange the token. The allowance pattern is defined by the ERC-20 token standard , which is why the wallet wording often says “allow” or “spend” rather than “sell.”
Read the token, network, contract prompt, and amount before signing. An approval that fails or remains pending does not mean the price route failed; it means the swap has not yet had permission to take the input token. Do not sign repeated prompts just because a prior one has not appeared in the wallet activity feed.
A confirmed transaction is the result; a spinner, rejection, or revert is a different result with a different fix
Once the wallet shows the final confirmation, check the transaction record and the USDC balance. A successful swap has changed balances: less ETH by the input plus fee, more USDC by the amount actually received, and the deliberately retained ETH still available for later network fees.
-
Wallet rejection: nothing was sent. Reopen the confirmation only after checking network and balances.
-
Insufficient funds or gas: lower the ETH input; do not try to spend the reserve.
-
Slippage or price error: the route no longer met the minimum. Refresh the quote; increase tolerance only if the newly acceptable worst-case output is genuinely acceptable.
-
Transaction pending: do not create a duplicate trade merely because the interface has not refreshed.
-
Transaction reverted: the chain did not complete the swap, so inspect the wallet or explorer message before changing settings.
The essential distinction is that an on-chain exchange is conditional. Signing authorizes the attempt; execution succeeds only if the route, balances, permissions, and minimum-output condition all hold at that moment.
Repeating the trade safely means checking the route at the point SyncSwap makes it actionable
For the next swap, begin with the network and token contract rather than the ticker alone, reserve the gas asset, then compare the estimate with the minimum received. That sequence catches the errors that a familiar swap screen hides: the wrong chain, the look-alike asset, and an input amount that leaves no room to execute.
When you are ready to obtain a fresh route and submit it, use the SyncSwap interface only after those details are settled.
In this 0.312 ETH case, the finished result is modest but complete: 0.300 ETH is exchanged according to the route available at execution, the received USDC is verified after confirmation, and enough ETH remains to keep the wallet usable. That is what SyncSwap actually does—and the reserve is the small number that makes the result possible.