You click swap, your wallet asks you to approve the token, you confirm, and then it asks you to confirm again. That second prompt is the trade you actually wanted. The first one was a separate on-chain transaction you paid for without noticing.
An approval is a small write to the token contract saying "this spender may move up to X of my balance." It costs gas on its own, billed apart from the swap, transfer, or deposit that follows. On a congested day, that quiet first charge can cost more than the trade itself.
What the approve function actually writes
Under the hood you are calling approve on an ERC-20 contract. That function updates a mapping in the token's storage: your address, the spender's address, and the allowance amount. The logic is trivial. The storage write is not, and storage is where the EVM charges most.
Here is the part most people miss. The first time you approve a given spender for a given token, you write to a slot that previously held zero. That costs more than overwriting a slot that already holds a value. Your first approval of USDC to a new contract will typically run higher than a re-approval of the same pair later.
Why it outruns a plain ETH send
A standard ETH transfer is cheap because it touches almost no storage. An ERC-20 approval touches storage, emits an event, and runs the token contract's own logic. Expect the base cost to sit well above a simple send — often in the tens of thousands of gas units, and more when the slot is fresh.
The two-transaction trap
Say you are swapping on a DEX for the first time with a token you have never approved there. Your wallet prompts you twice: approve, then swap. You glance at the first screen, see a modest fee, hit confirm, and get charged again for the real action.
A concrete case from a busy week: the approval costs 0.0009 ETH in gas, the swap costs 0.0012 ETH. You budgeted for one fee and paid for two. On a cheap-gas day that is annoying. During congestion, the approval alone can rival the value of a small trade.
A mistake worth naming: approving an unlimited amount "to save gas later" without thinking about what that spender can do with your whole balance. The gas saving is real. The risk is not free.
What moves the number up or down
Network demand
Gas price floats with demand, so the same approval can cost wildly different amounts an hour apart. There is no fixed price for an approval — only a fixed gas quantity multiplied by whatever the market is charging at that moment.
How the allowance changes
Zero-to-a-number costs more than number-to-number. Setting an allowance back to zero can sometimes return part of the gas, depending on the network's rules at the time.
Which chain you are on
Fees differ enormously between networks. An approval on a low-fee chain might cost cents; the same call on a congested mainnet can cost dollars. Same contract call, different economics.
| Action | Storage touched | Relative cost |
|---|---|---|
| Plain ETH send | Minimal | Low |
| First approval (zero → amount) | Fresh slot write | Higher |
| Re-approval (amount → amount) | Overwrite | Moderate |
| Approval + swap | Two transactions | Sum of both |
Keeping the second charge from surprising you
Four habits cut the shock. Read the wallet prompt before confirming — if it says "approve," expect a second fee for the real action. Approve a specific amount when you are unsure about a new contract, even though it costs slightly more gas than unlimited. Wait out fee spikes, because the approval is rarely urgent. And use a wallet or platform that previews both fees together so you are budgeting one number instead of guessing at two.
Platforms like MGBX surface fee estimates before you commit, which helps you see the approval and the trade as one budget. Whichever tool you use, the principle holds: treat the approval as a line item, not an afterthought.
Revoking costs gas too
Cleaning up old approvals is good hygiene, but each revocation is another transaction. Do not revoke twenty tokens in a panic during peak fees. Do it when the network is quiet.
Frequently asked questions
Why do I pay gas twice for one swap?
A swap on most DEXs needs a prior allowance, and the approval is a separate on-chain transaction. Your wallet sends the approval, waits for it to confirm, then sends the swap. Two transactions means two gas payments, even though it feels like one action to you.
Can I avoid the approval fee entirely?
Sometimes. Some platforms use permit-style signatures that combine approval and trade, and some handle allowances on your behalf. It depends on the contract. Otherwise the approval fee is unavoidable the first time you interact with a given spender.
Does approving unlimited save gas?
It saves gas on future approvals because you skip the repeat transaction. But it hands the spender permission over your entire balance of that token, which is a real risk if the contract has a flaw. Weigh the saved fee against what you would lose if things go wrong.
Is a higher gas fee for approval a scam?
Not automatically. First-time approvals genuinely cost more because they write a fresh storage slot. But check that the spender address matches the platform you meant to use — a mismatched address is the real red flag, not the fee itself.
Before you tap confirm on your next approval, look at the fee and add the follow-up transaction to the same mental budget. If the two together exceed what the trade is worth to you, wait for a quieter block.