Exchange Withdrawal Fees 2026: Why Invoices Arrive Short
Exchange withdrawal fees are priced by the exchange, not the chain. We checked three exchanges against live network costs and found markups up to 619x.
Key Takeaways
- The withdrawal fee is a product price, not a network cost. Measured on 16 September 2026, Binance charged 619x the real chain cost to send USDT on Solana and 60x on Polygon. KuCoin charged 113x on Ethereum.
- The same withdrawal costs up to 100x more depending on where your customer banks. USDT on BNB Chain was 0.01 at Binance and 1.00 at KuCoin. On Ethereum it was 0.30 at Binance and 5.50 at KuCoin.
- TRC-20 is no longer the cheap rail, and it is the only one exchanges sell at a loss. Binance charged 1.50 USDT on TRON against 0.30 on Ethereum — but the TRON transfer burns $2.17-$4.36 of energy, so the exchange is eating the difference.
- This is why your invoices arrive short. The exchange deducts its fee from the amount sent. A $50 invoice paid from a KuCoin ERC-20 balance lands 11% short — past Cryptomus's 5% maximum tolerance and five times CoinGate's recommended setting.
- The minimum withdrawal blocks small invoices outright. KuCoin's USDT floor on Ethereum was 30 USDT, so a customer on that rail cannot pay a $12 invoice at all, at any tolerance.
Table of Contents
- The fee your customer pays is not the chain's fee
- What three exchanges actually charge today
- What the same transfer really costs on-chain
- The markup, rail by rail
- TRON is the one rail sold below cost
- How this reaches you: the underpaid invoice
- The minimum withdrawal is a floor under your smallest order
- What to set, and what to put on the checkout page
- FAQ
The fee your customer pays is not the chain's fee
A customer owes you 100 USDT, types 100 into their exchange's withdrawal box, and you receive 98.01. Nobody made a mistake. The exchange took its cut out of the middle, and the number it took has almost nothing to do with what the blockchain charged. Exchange withdrawal fees are a posted price set by a business, and once you compare that price against the cost of the transfer it pays for, the gap is not a rounding error — on one rail we measured it at 619 times. We pulled the live fee schedules of three exchanges and priced every rail against live network data on 16 September 2026, because this is the single most common reason a correctly-intentioned customer underpays a crypto invoice.
The confusion is structural. Both numbers get called "the network fee" in checkout copy, support articles and the exchange's own withdrawal screen, so merchants reason about them as one thing that rises and falls with congestion. They are two different things with two different owners:
- The network fee is paid to validators or miners, moves minute to minute with demand for blockspace, and is identical for everyone sending the same transaction at the same time.
- The withdrawal fee is paid to the exchange, is a flat figure per coin and per network, changes rarely, and differs between exchanges by up to two orders of magnitude for the identical operation.
- Only one of them is negotiable by choosing a route — and it is not the one most merchants optimise for.
We have priced the network side of this before, in our guide to which chain to accept in 2026. What that piece left open, and what this one settles, is the case where the customer is not paying from a wallet at all. Most of them are not.
What three exchanges actually charge today
Binance, KuCoin and HTX all publish their complete withdrawal schedules through open endpoints that need no key, so these are first-party numbers rather than a roundup of other people's roundups. Every figure below was read on 16 September 2026 and is denominated in USDT, which is close enough to dollars for this purpose. The second number in each cell is the minimum you are allowed to withdraw on that rail, and it matters as much as the fee.
| USDT rail | Binance fee / min | KuCoin fee / min | HTX fee / min |
|---|---|---|---|
| BNB Chain (BEP-20) | 0.01 / 3 | 1.00 / 10 | 0.01 / 1 |
| Optimism | 0.04 / 3 | 1.00 / 3 | not offered |
| Polygon PoS | 0.07 / 5 | 0.80 / 1.6 | not offered |
| Arbitrum One | 0.10 / 3 | 1.00 / 5 | not offered |
| Ethereum (ERC-20) | 0.30 / 5 | 5.50 / 30 | 0.30 / 1 |
| Solana | 0.30 / 5 | 1.50 / 3 | 0.30 / 2 |
| TON | 0.30 / 3 | 0.50 / 1 | 0.30 / 1 |
| TRON (TRC-20) | 1.50 / 5 | 1.99 / 4 | 0.50 / 1 |
Read the Ethereum row twice. The identical operation costs 0.30 at two of these exchanges and 5.50 at the third — an 18x spread on a transaction whose actual cost is set by a public fee market that all three are paying into simultaneously. The BNB Chain row is worse: 0.01 against 1.00, a hundredfold difference for moving the same token on the same chain in the same minute.
That spread is the whole argument. If withdrawal fees tracked network costs, the columns would agree. They do not agree, because they are not measuring the same thing.
What the same transfer really costs on-chain
To put a number on the gap we had to price the transfer itself rather than quote a folklore figure. The gas for an ERC-20 USDT transfer was measured, not assumed: an eth_estimateGas call against the live Tether contract from a funded holder returned 46,479 gas, and two independent RPC providers returned the identical number. We then applied each chain's live gas price and the spot price of its native token, all read within the same few minutes on 16 September 2026.
| Rail | Measured cost | How we got there |
|---|---|---|
| Optimism | $0.00011 | 0.001001 gwei; execution only, excludes the L1 data fee |
| Solana | $0.00048 | 5,000 lamports base fee at SOL $96.88 |
| Base | $0.00092 | 0.008364 gwei; execution only |
| Polygon PoS | $0.0012 | 274.84 gwei at POL $0.0919 |
| BNB Chain | $0.0017 | 0.05 gwei at BNB $711.79 |
| Arbitrum One | $0.0024 | 0.021318 gwei; execution only |
| Ethereum (ERC-20) | $0.049 | 46,479 gas x 0.4412 gwei base fee, block 25,991,867, ETH $2,376.84 |
| Bitcoin (BTC, not USDT) | $0.21 | 141 vB at 2 sat/vB, tip height 967,311, BTC $75,179 |
| TRON (TRC-20) | $2.17-$4.36 | 64,895-130,285 energy x 100 sun, TRX $0.335 |
Two caveats we would rather state than bury. The layer-two figures are execution cost only and exclude the data fee each rollup pays to post to Ethereum, so treat Optimism, Base and Arbitrum as floors rather than totals. And the TRON energy quantities are the standard published figures for a USDT transfer to a warm and a cold address respectively; only the 100 sun energy price is first-party, read from the chain's own parameters. Everything else in the table is measured.
The ordering is the finding. The rail every crypto checkout page still recommends is the most expensive one on the board, by roughly 44x against Ethereum and more than a thousandfold against the cheap chains.
The markup, rail by rail
Put the two tables side by side and the withdrawal fee stops looking like a cost recovery and starts looking like a menu. The multiple in the right-hand columns is simply the posted fee divided by what we measured the transfer to cost.
| Rail | Real cost | Binance charges | Multiple | KuCoin multiple |
|---|---|---|---|---|
| Ethereum (ERC-20) | $0.049 | $0.30 | 6x | 113x |
| BNB Chain (BEP-20) | $0.0017 | $0.01 | 6x | 605x |
| Arbitrum One | $0.0024 | $0.10 | 42x | 425x |
| Polygon PoS | $0.0012 | $0.07 | 60x | 681x |
| Optimism | $0.00011 | $0.04 | 362x | 9,043x |
| Solana | $0.00048 | $0.30 | 619x | 3,097x |
| TRON (TRC-20) | $2.17 | $1.50 | 0.7x | 0.9x |
None of this makes an exchange dishonest. Custody, hot-wallet float, compliance screening and batching all cost real money, and a flat fee is a reasonable way to charge for a service whose underlying cost swings by an order of magnitude week to week. What it does mean is that "pick the cheap network" is advice about the exchange's price list, not about the blockchain, and a merchant who reasons from chain economics will route customers badly.
Note also which way the multiples run. The markup is largest precisely where the chain is cheapest, because a floor of a few cents to a third of a dollar per withdrawal is roughly where every exchange lands regardless of rail. On the fast, cheap chains that floor is effectively the entire fee.
TRON is the one rail sold below cost
The bottom row of that table is the only one where the multiple drops below 1, and it is worth sitting with. Binance charged 1.50 USDT to send USDT over TRON while the transfer itself burns $2.17 of energy to an address that already holds USDT, and $4.36 to one that does not. KuCoin's 1.99 is also under cost. Both are subsidising the rail.
Why an exchange can send TRC-20 cheaper than you can
- TRON lets you stake TRX for energy instead of burning it, so a large sender with staked capital pays in opportunity cost rather than in TRX destroyed per transfer.
- Exchanges send from warm addresses in volume, which is the 64,895-energy case rather than the 130,285-energy one.
- A retail user with no staked energy pays the full burn, every time, at the 100 sun price the chain publishes.
So the folklore is half-right for exactly the wrong reason. TRC-20 is not cheap; it is cheaper from an exchange than from your own wallet, which is the reverse of every other rail on the board. If your customer is paying from Binance and insists on TRON, they will pay 1.50 and you will lose 1.50 off the invoice. If the same customer moves that USDT to a personal wallet first and pays you from there, the chain takes two to four dollars off them instead.
Neither is a good outcome, and both are avoidable by offering a rail where the exchange fee and the chain cost are both small. On these three exchanges that means BNB Chain, Polygon or an Ethereum rollup.
How this reaches you: the underpaid invoice
Here is the part that turns an exchange's pricing decision into your support ticket. An exchange deducts the withdrawal fee from the amount being sent, not from the rest of the balance. A customer looking at an invoice for 100 USDT types 100 into the withdrawal field, and 98.50 leaves the building. Your gateway sees a payment that is 1.5% short and, depending on a setting most merchants never touch, either waves it through or parks the order.
This is not our inference. BTCPay Server's invoice documentation gives it as the textbook cause of a partial payment: an invoice ends up in the paidPartial state because "a buyer pays the invoice from the exchange wallet which takes a fee for their service and deducts it from a total." CoinGate says the same thing in its own guide to accepting underpaid orders, walking through an example where "the exchange deducts a fee of 0.0005 BTC" and the order lands short.
The shortfall is a flat number, so it hurts in inverse proportion to your order value:
| Customer pays from | $25 invoice | $50 | $100 | $1,000 |
|---|---|---|---|---|
| Binance, BNB Chain | 0.04% | 0.02% | 0.01% | 0.00% |
| Binance, Ethereum | 1.20% | 0.60% | 0.30% | 0.03% |
| Binance, TRON | 6.00% | 3.00% | 1.50% | 0.15% |
| KuCoin, TRON | 7.96% | 3.98% | 1.99% | 0.20% |
| KuCoin, Ethereum | 22.00% | 11.00% | 5.50% | 0.55% |
A 1% tolerance, which is what CoinGate suggests, covers a Binance Ethereum withdrawal on any invoice above $30. It does not cover a Binance TRON withdrawal until the invoice passes $150, or a KuCoin Ethereum one until it passes $550. If you sell anything priced under about fifty dollars, the tolerance you have set is probably decorative on the routes your customers actually use. The same arithmetic drives the "payment not received" tickets we catalogued in our guide to crypto payments that never arrive.
The minimum withdrawal is a floor under your smallest order
The fee is the number everyone compares. The minimum withdrawal is the one that silently removes routes, and it appears in none of the comparison pages we read while researching this.
What the floors rule out, on 16 September 2026
- KuCoin, USDT on Ethereum: 30 USDT minimum. A customer holding USDT there cannot settle a $12, $20 or $29 invoice on that rail at all. No tolerance setting on your side fixes it.
- KuCoin, USDT on BNB Chain: 10 USDT. The cheapest-fee rail at that exchange is also the one with the highest floor after Ethereum.
- Binance: 3 to 5 USDT across every rail. Low enough to be invisible for most merchants, but it still rules out micro-payments.
- HTX: 1 to 2 USDT. The lowest floors of the three, which is a genuine point in its favour for small-ticket sellers.
If you sell digital goods in the five-to-thirty dollar range, this is the constraint that bites first, and it bites before the customer ever sees an error. They open the withdrawal screen, the amount is below the minimum, and they go and pay with a card instead. You never find out. That is the failure mode to weigh when you decide which rails to enable, alongside the settlement timing we covered in when gateways actually pay out.
What to set, and what to put on the checkout page
Every gateway worth using has a tolerance setting for exactly this problem, and they are not calibrated the same way. We read the three that publish their ranges plainly — Cryptomus documents its on its payment fees page, the other two in their merchant guides:
| Gateway | Setting | Range | Their guidance |
|---|---|---|---|
| CoinGate | Underpaid cover | 0-10% | Recommends 1-2%, says it "will most likely cover over 90% of orders that are accidentally underpaid" |
| Cryptomus | Payment accuracy | 0-5% | Framed as covering a customer who "underpays by a few cents" |
| OxaPay | Underpaid cover | 0-60% | Names network fees among the causes; 10% accepts anything within 90% of the invoice |
| BTCPay Server | paidPartial state | n/a | Does not auto-accept; surfaces the shortfall as a distinct state for you to settle manually |
Set the percentage from your own order book, not from the vendor's default. Take your median order value, take the largest fee on the rails you actually enable, divide one by the other, and add a little. For a shop with $40 orders accepting USDT on Ethereum and BNB Chain, 1% is enough. For the same shop accepting TRON, you need 4% before a Binance customer clears it and 5% before a KuCoin one does — which is above Cryptomus's ceiling entirely. That is an argument for dropping the rail rather than raising the number.
The one line to add to your checkout
"Paying from an exchange? Add its withdrawal fee to the amount you send — exchanges take their fee out of the transfer, not out of your balance." It costs nothing, it is true on every exchange we checked, and it removes the single most common cause of a payment that arrives short.
Then pick the rail deliberately. A gateway that forwards straight to your wallet, like the non-custodial mode at NOWPayments, does not change any of the arithmetic above — the exchange's fee is already gone before the payment reaches anyone. What changes the arithmetic is offering BNB Chain, Polygon or a rollup alongside whatever you have now, so the customer with an exchange balance has a route that costs them a cent instead of two dollars.
Pick a gateway that lets you set the tolerance
Underpayment handling is a setting, and not every processor exposes it. We track tolerance, supported networks, fees and KYC for every gateway in the directory, so you can check before you integrate rather than after the first short payment.
Compare Crypto Payment Gateways →FAQ
What is the difference between an exchange withdrawal fee and a network fee?
A network fee is what the blockchain charges to include a transaction in a block. It moves with congestion and is paid to validators or miners. An exchange withdrawal fee is a price the exchange sets for sending on your behalf: a flat number per coin and per network that changes rarely. The two are unrelated. On 16 September 2026 we measured the real cost of a USDT transfer on Ethereum at about 4.9 cents, while Binance charged 0.30 USDT and KuCoin charged 5.50 for the same operation.
Why did my customer's crypto payment arrive short?
Almost always because they paid from an exchange account. The exchange deducts its withdrawal fee from the amount being sent rather than adding it on top, so a customer who types your invoice total into the withdrawal box sends that total minus the fee. BTCPay Server's documentation gives this as the standard cause of a partial payment: "a buyer pays the invoice from the exchange wallet which takes a fee for their service and deducts it from a total." The shortfall is the exchange's fee, not a customer error.
Is TRC-20 still the cheapest way to send USDT in 2026?
Not from an exchange, and not on-chain either. On 16 September 2026, Binance's published USDT withdrawal fee was 1.50 on TRON against 0.30 on Ethereum, 0.07 on Polygon and 0.01 on BNB Chain — the most expensive stablecoin rail on its own menu. KuCoin charged 1.99 on TRON. The one thing TRC-20 has going for it is that the exchange price sits below the real chain cost: we measured a TRON USDT transfer at $2.17 to $4.36 of burned energy the same day.
Which network should I tell customers to pay on?
Ask which exchange they are paying from, because the answer changes with it. For a Binance balance, BNB Chain at 0.01 USDT and Polygon at 0.07 are the cheapest rails by a wide margin and both settle in seconds. For a KuCoin balance nothing is cheap, but TRON at 1.99 beats Ethereum at 5.50. If you support only one rail beyond Ethereum, add a fast low-fee chain rather than TRON: on the exchanges we checked, TRON was never the cheapest option and was usually among the most expensive.
What underpayment tolerance should a merchant set?
Work backwards from the fees rather than picking a round number. CoinGate allows an underpaid cover up to 10% and recommends 1-2%, which it says "will most likely cover over 90% of orders that are accidentally underpaid". Cryptomus allows 0-5% and OxaPay allows 0-60%. A 1% tolerance absorbs a 0.30 USDT fee on any invoice above $30, but it does not absorb KuCoin's 5.50 fee until the invoice passes $550. If your typical order is small, the percentage is the wrong shape of setting and the rail is the thing to change.
Do exchanges profit from withdrawal fees?
On most rails, yes, and the margin is large. Comparing published fees against the cost we measured on 16 September 2026, Binance charged roughly 6x the chain cost on Ethereum, 60x on Polygon and 619x on Solana; KuCoin charged about 113x on Ethereum and over 3,000x on Solana. The exception is TRON, where both charged less than the transfer costs in burned energy. Custody, float and compliance are real costs, so this is not an accusation — but a withdrawal fee is a product price, not a pass-through.
Why is there a minimum withdrawal amount, and does it matter for payments?
The minimum stops the exchange sending dust that costs more to move than it is worth, and it matters more than most merchants expect. KuCoin's minimum USDT withdrawal on Ethereum was 30 USDT on 16 September 2026, so a customer with a KuCoin balance cannot settle a $12 invoice on that rail at all. Binance's minimums ran 3 to 5 USDT and HTX's 1 to 2. If you sell low-priced digital goods, the floor rules out routes before the fee does — and the customer usually just leaves.
Should I just ask customers to pay from a self-custody wallet?
It removes the underpayment problem but not the cost problem, and on one rail it makes things worse. From a personal wallet the customer pays the real network fee: about 4.9 cents on Ethereum, a fifth of a cent on BNB Chain and 21 cents on Bitcoin on 16 September 2026. On TRON it was $2.17 to $4.36, more than any exchange charged. The better advice is narrower than wallet versus exchange — offer a rail that is cheap in both cases, and say in your checkout copy that an exchange deducts its fee from the amount sent.
Affiliate disclosure: payyd.co earns a commission on sign-ups made through our /go/ links, including the NOWPayments link above. We have no affiliate relationship with Binance, KuCoin, HTX, CoinGate, Cryptomus, OxaPay or BTCPay Server, and they appear here because they publish the data this article is built on. Every withdrawal fee and minimum was read from the exchange's own public fee endpoint on 16 September 2026, and every chain cost was measured the same day against live RPC and mempool data — exchanges change these figures without notice, so check the current number in your own account before relying on one here. The layer-two costs exclude the rollup's L1 data fee and the TRON energy quantities are the standard published figures rather than our own measurement; both are noted in the table above.