VeilSwap
← All posts
Explainers2026-10-299 min read

How Long Do Crypto Swap Refunds Take? We Measured

A 601-second deposit window, a 24-hour desk and a 26.2 MvB mempool: three clocks decide refund time. Measured on our own 119 orders and today's chain data.

At 14:05:01 UTC today I created a 100 USDT-TRC20 → XMR order on veilswap.io just to watch the clock. The API returned a deposit address and validUntil 2026-10-29T14:15:02.483Z — 601 seconds, not the 30 minutes our own expiry rule allows. That gap is where any honest answer to "how long does a refund take" starts. A refund is not a button: it is a provider decision, then a new outgoing transaction, then a confirmation, and those three things run on three different clocks. Our own order table shows the shape of it: 119 orders since 24 September, 19 paid, 94 expired, 5 failed, and exactly one refunded. That single refund flipped to "refunded" 1,506 minutes after creation — 25 hours and 6 minutes. (XMR to USDT exit)

Three clocks, not one

A refund is a fresh transaction sent from the provider's own inventory back to an address you supplied. Nothing is reversed; the deposit you sent still sits where it landed. So the wall time you feel is a decision (does this order get refunded, at what value, on whose desk) plus a broadcast (the provider's withdrawal system building and signing a transaction) plus a confirmation (miners or validators including it). Two of those three happen inside the provider and are invisible to you. Only the last one is on a public chain — which is why "the blockchain is slow" is usually the wrong explanation. (how Monero fees work)

Clock one: the decision, measured in hours

The deposit window is the part you can see. Fixed-rate venues freeze the quote for 10 minutes and require the exact amount; FixedFloat's own FAQ says that if the payment is late or off by any amount, you are offered "a refund or continue the exchange at the market rate". Locally we cancel at 30 minutes from creation, but only after the provider still reports waiting, the sweep is throttled to every 2 minutes, late deposits are looked back for 6 hours, and anything the provider no longer recognises is force-closed at 24 hours. On the provider side, ChangeNOW's FAQ puts refunds after a failed identity check at "within 24 hours", minus network fees. That is an operations promise, not a chain promise. Our one refunded order at 25.1 hours matches a 24-hour desk, not a 10-minute window. (how Monero fees work)

Clock two: the mempool does not care whose refund it is

At 14:02 UTC the Bitcoin mempool held 67,743 transactions and 26.20 MvB. 85.8% of that volume was bidding below 0.5 sat/vB; only 3.68 MvB, 14.0%, bid 1 sat/vB or more. A refund sent at 1 sat/vB therefore queues behind 22.52 MvB, which at the recent median block size of 1.56 MB is roughly 14 blocks. The last 15 blocks, 973,679 to 973,693, were all more than 99% full and arrived a median 6.7 minutes apart, a mean 12.8, with one gap of 50.4 minutes and two gaps over 30 minutes out of fourteen. Fourteen blocks at that pace is 90 minutes to three hours before the transaction even reaches one confirmation. Recommended fees at the same moment were 6, 5, 4, 2 and 1 sat/vB — the spread tells you the queue is real and paying more actually buys position. (how Monero fees work)

What a refund actually costs

Refunds are not free and they are not the same size on every chain. A typical one-input, two-output Bitcoin refund is about 141 vB: 141 sat at 1 sat/vB, USD 0.11 at 80,249, or 846 sat and USD 0.68 at 6 sat/vB. On TRON, block 87,536,451 carried 653 transactions, 109 of them with energy consumption: 85 at exactly 64,285 energy and 19 at exactly 130,285. At getEnergyFee = 100 sun that is 6.4285 versus 13.0285 TRX, plus 345 bytes of bandwidth, so 6.7735 TRX (USD 2.25) or 13.3735 TRX (USD 4.43) at TRX 0.331535 — the expensive tier is what you hit when the destination's USDT balance slot is written from zero. A Monero refund of 1,534 bytes at 20,000 piconero per byte is 0.00003068 XMR, about USD 0.018. FixedFloat states plainly that a refund is "the amount sent minus the network fee", and that it sends at the current network fee — so the cost is taken at whatever the market charges that minute, out of what comes back. (XMR to USDT exit)

Clock three: the address decides whether the clock runs at all

I tested the two failure modes at 14:04 UTC. An order body without a refund address returns HTTP 400 with "missing_refund_address: a refund address is required — if the swap fails, funds can only be returned there". A refund address of TXyzNotARealAddress123 returns 400 with "invalid_refund_address: not a TRON address (expect T followed by 33 base58 characters)". Both fields are checked before any money moves, which is the point: the refund address is a required part of the order, not an optional nicety. The catalogue today listed 515 assets across 74 networks, six of which need an extra ID — XRP, USDC-Algo, XLM, HBAR, ATOM and NEIRO on Ethereum. A refund goes back on the original asset and original network only. An address on a different network is not a refund, it is a second loss. ChangeNOW's FAQ adds a harder edge: coins sent to a SegWit BTC deposit address can only be refunded as BTC, so LTC, BCH or BSV sent there cannot come back, and a deposit below the minimum carries no refund guarantee at all. (recovering misdirected funds)

The anatomy of our 25-hour refund

Here is the same event as a timeline, with the measured numbers in place. T+0: order created, 10-minute deposit window (601 seconds, measured). T+10 min: the window closes, and the provider's offer becomes refund or market-rate continuation. T+30 min: our local rule marks the order expired, but only if the provider still reports waiting, and the sweep only runs every two minutes. T+6 h: the late-deposit lookback ends; funds arriving after that go to manual handling. T+n hours: the provider's risk or operations review queues the refund; the published figure is 24 hours. Then the broadcast at the current fee, and one confirmation at today's congestion is tens of minutes at best. T+25 h 06 min: our row flipped to refunded, with the provider status REFUND. (how Monero fees work)

Six things that shorten the wait

1) Paste the refund address before you send anything, on the same network as the asset you are depositing. 2) Send the exact amount inside the window; a shortfall turns a swap into a refund decision. 3) Keep the order id and the deposit hash — the hash is the only thing that proves the money arrived. 4) Do not re-send to the same address after expiry; the lookback is six hours and a second deposit only muddies the record. 5) Do not open a second order "to fix it"; that doubles the fee and the paper trail. 6) If the asset needs a memo or tag, the refund address needs one too. (recovering misdirected funds)

The wall time compresses into a single line: decision in hours, broadcast in minutes, confirmation unpredictable — and the chain is the smallest of the three. That is why a refund that takes a day is not evidence of a broken service, and a refund that takes ten minutes is not evidence of a fast one. It is evidence of which desk picked up the ticket. Quotes at 14:04 UTC, for scale: 100 USDT-TRC20 gave 0.14688512 XMR (680.80 USD per XMR against 597.82 spot), 1 XMR gave 579.321202 USDT, 0.01 BTC gave 1.31526425 XMR at 131.52642 XMR per BTC, the corridor floor was 19.737089 and the ceiling 175,575.932493 USDT. Treat those as writing-time numbers; the live page is the only current one. (XMR to USDT exit)

Frequently asked questions

How long does a crypto swap refund actually take?

Expect a day, not minutes. Our one refunded order flipped 1,506 minutes (25 h 06 min) after creation, and ChangeNOW's FAQ puts refunds after a failed identity check at within 24 hours, minus network fees. The chain part is small: at 14:02 UTC the mempool held 26.20 MvB and a 1 sat/vB transaction queued behind 22.52 MvB, about 14 blocks.

Do I get the full amount back?

No. Providers deduct the network fee at the moment they send, and FixedFloat states it is "the amount sent minus the network fee". Measured cost today: about 141 sat (USD 0.11) for a BTC refund at 1 sat/vB, 6.7735 to 13.3735 TRX (USD 2.25 to 4.43) for a TRC20 refund, and 0.00003068 XMR (USD 0.018) on Monero.

Can a refund go to an exchange deposit address?

It can be sent there, but then the exchange's crediting rules apply, including memos for the six catalogue assets that need one and its own minimum deposit. Ours rejects a malformed refund address before the order exists: 400 "invalid_refund_address: not a TRON address (expect T followed by 33 base58 characters)". A wallet you control removes one whole stage from the wait.

Keep reading

All articles →

Ready to swap?

No account · No KYC · No email

Exchange now
How Long Do Crypto Swap Refunds Take? We Measured — VeilSwap