The Approval That Keeps a Good Swap Executable
The route had improved by a few basis points, the gas estimate was ordinary, and the transaction still failed before it ever touched the pool. The missing piece was not slippage. It was the allowance sitting on the wrong spender.
This is the detail I now check before comparing routes: an ERC-20 approval is permission for a particular contract to move a particular token. It is not a general permission for “the swap app.” A successful approval from yesterday can be useless when today’s route executes through a different spender, chain, wallet account, or token representation.
I lost time treating the swap quote as the whole transaction. It is only the execution plan. First I approved an exact amount, refreshed the quote, and submitted it—only to have the intended size move slightly after I changed the input. Then I approved a larger amount and stopped checking the spender, which is how a harmless retry became a second approval prompt.
The working routine is less dramatic. With the final token, amount, chain, and wallet selected, inspect the approval request before signing it. Confirm that the token being approved is the token being sold, and that the spender shown by the wallet matches the transaction’s execution path. If the interface asks for another approval after you have already granted one, assume something material changed until you can identify what.
For the first pass through that flow, paraswap is useful as a practical first guide to setting up and making the swap; the important habit is carrying its setup step into every later trade rather than treating approval as a one-time chore.
There is a trade-off worth making consciously. Exact approvals reduce leftover permission but create more signatures when you trade the same asset repeatedly. Larger approvals remove friction, but they deserve the same scrutiny you would give any standing permission. Neither choice fixes a bad quote; it merely determines whether a good one can execute.
Once I separated approval from pricing, failures became legible. A reverted swap was no longer “the aggregator being flaky.” It was usually one of four things: expired quote, insufficient allowance, changed balance, or a route whose gas assumptions no longer held. Start with allowance. It decides more swaps than it should.