What eighteen swap providers charge

Every provider this site talks to, asked for a price on the same transfer at the same moment. What each pays out, what it keeps against the open market, the smallest and largest it will accept — and, further down, what each one says when a transfer is below its floor, which turns out to be a different sentence from every one of them.

0.05 BTC into USDT (TRC-20)

ProviderPays outKeepsTakes fromUp to
BitXchange3,486.0249760.72%0.0007119314.23858457
Changelly3,484.0906020.78%0.00042744641.15198692
ChangeHero3,481.110.86%0.00049817no stated limit
Swapuz3,481.080.86%0.0005700042.717503
Mistex3,479.0156250.92%0.000840009.57
FixedFloat3,475.194711.03%0.000147651.93245591
SimpleSwap3,470.8455981.16%0.00017570no stated limit
PegasusSwap3,464.9873051.32%0.0001423910.00
Exolix3,464.9873051.32%0.0006977110.00
GhostSwap3,463.5997741.36%0.00042744641.15198692
ChangeNOW3,462.9877561.38%0.00017250no stated limit
ETZ-Swap3,460.026191.46%0.000925936.959
SageSwap3,458.6489281.50%—no stated limit
BitcoinVN3,440.2266332.03%0.000538101.42265935
StealthEX3,420.9217282.58%0.00017424712.20
SideShift3,411.490703892.85%0.000381070.85441554

“Keeps” is the gap between what a provider pays and what the same amount is worth at mid-market, taken from the public ticker endpoints of several large exchanges. Every provider builds a margin into its rate; none of them states it. The point of this column is that it is stated.

The same refusal, no two alike

The same request again at 0.00002 BTC — far below every provider’s minimum. Each one refuses, and no two refuse alike. Some name the floor, some name the pair, one answers with a JSON-RPC error code and one with a status that has nothing to do with amounts.

  • ghostswapGhostSwap quote: HTTP 400 Amount is below the minimum for btc → usdtrx. Minimum: 0.00042744 btc.
  • changellyChangelly getExchangeAmount [-32602]: Invalid amount for pair btc->usdtrx. Minimal amount is 0.00042744 btc
  • changenowChangeNOW estimate: HTTP 400 Out of min amount
  • simpleswapSimpleSwap /estimates?tickerFrom=btc&networkFrom=btc&tickerTo=usdt&networkTo=trx&amount=0.00002&fixed=false: HTTP 422 Amount does not fall within the range. Min: 0.0001757, max: null — Unprocessable Entity
  • stealthexStealthEX /rates/estimated-amount: HTTP 400 InvalidAmount: Amount is out of range
  • pegasusswapPegasusSwap exchange-coin: HTTP 400 Minimum amount to exchange is 0.00014239
  • exolixExolix /rate: {"fromAmount":0.00002,"toAmount":0,"message":"Amount to exchange is below the possible min amount to exchange","minAmount":0.00069771,"maxAmount":10}
  • swapuzAmount to exchange is below the possible min amount to exchange. requested 0.00002 , required 0.0006
  • changeheroChangeHero getExchangeAmount: Amount is less than minimal: 0.0004976692000000 btc (-32602)
  • etzswapETZ-Swap /rate: Rate amount too small
  • bitcoinvnBitcoinVN /api/quotes: HTTP 400 {"error":{"message":"Validation Failed","code":400,"details":{"children":{"depositAmount":{"errors":["Minimum order size is 0.00053810 BTC."]}}}}}
  • mistexMistex returned no rate
  • sageswapSageSwap /v1/rate?input_currency=btc_mainnet&output_currency=usdt_trx&input_currency_amount=20000&rate_type=FLOATING: HTTP 422 {"message":"Validation error","error_code":"validation_error","errors":{"input_currency_amount":"Value of the transaction is too small. Minimum swap amount: 0.0
  • bitxchangeBitXchange /price?from=btc&to=usdt&amount=0.00002&from_network=BTC&to_network=TRC20: HTTP 400 {"detail":"Incorrect amount. Minimum deposit in BTC is 0.0007119292285392494","code":400}

This matters to anybody integrating more than one of them. A router has to tell “too small” apart from “wrong coin” apart from “not authorised”, and they give it no common shape to work from — no shared code, no shared status, and in one case a success status carrying a failure in prose. The network names page is the same problem in a different register.

How often each one actually answers

Every comparison this site runs is kept. Across 6240 recorded fan-outs, this is how often each provider returned a price when it was asked, how far behind the best available quote it came, and how often it was the best. A provider that advertises a pair and answers half the time is offering something different from one that answers every time, and no provider publishes this about itself.

ProviderAnsweredOn its pairsBehind bestWas bestPairs
FixedFloat99.9%(6236/6240)100.0%1.14%31.2%59
SideShift40.8%(2544/6233)99.7%1.66%6.4%33
CCECash65.3%(949/1453)99.3%1.06%40.9%7
ChangeNOW97.4%(6070/6234)97.8%9.76%1.8%50
SageSwap92.9%(3072/3306)92.9%1.44%6.8%27
PegasusSwap64.4%(2174/3375)89.7%1.50%20.0%20
SimpleSwap86.5%(5391/6234)86.9%5.50%0.0%48
StealthEX81.5%(5077/6233)84.1%2.90%0.1%47
ChangeHero50.9%(2685/5275)83.2%1.62%1.8%33
BitcoinVN82.2%(3255/3958)82.2%2.97%0.2%35
Changelly71.2%(4440/6233)71.3%0.19%36.8%50
GhostSwap67.4%(4200/6233)67.5%0.99%0.0%49
Swapuz65.5%(3854/5880)65.6%0.97%4.0%52
BitXchange62.1%(744/1199)62.1%0.58%39.5%26
Mistex60.5%(2032/3358)60.5%0.28%20.2%32
xmr2cex59.5%(401/674)59.5%2.42%0.0%6
Exolix44.9%(1479/3292)58.1%0.43%2.9%29
ETZ-Swap30.1%(1516/5042)30.2%0.79%6.7%38

Not in the table, and measured all the same: Swapgate, 969 of 1650 fan-outs answered before it came off in 0.240.0; EasyBit, 0 of 79 fan-outs answered before it came off in 0.215.0. Both left because their partner accounts required identifying the operator of this site, which is a fact about us. Ranking a provider nobody here can route to would read as advice, and a withdrawn credential answering nothing would read as a verdict on a desk that earned neither.

Closed: LetsExchange, which stopped trading on 1 October 2026.

“Behind best” is the average gap to the best quote in the same fan-out — same pair, same amount, same second — so zero would mean always paying the most of anyone who answered. It is measured against the providers who were actually there, rather than against a market price, which is what makes the rows comparable with one another. A figure printed as a fraction has not yet been measured enough times to be worth stating, and says how far off it is.

Which of these are one price

For every two providers that have answered the same fan-out, the gap between their payouts was measured, and then how much that gap moves. Across 163 pairings the typical one wanders 37 basis points as each desk follows its own book. These do not wander. A gap that holds still is not two prices — it is one price quoted twice with a fixed markup between.

Two providersGap moves byFixed gapFan-outsPairs
ETZ-Swap and Mistex0.23 bp54.6 bp99629
ETZ-Swap and PegasusSwap0.63 bp9.2 bp107815
Exolix and SageSwap0.70 bp19.0 bp102615
Mistex and PegasusSwap0.73 bp45.4 bp128317
Swapgate and Swapuz1.85 bp30.7 bp126743
Changelly and GhostSwap2.98 bp59.2 bp478649

The same arithmetic on the pairings with the most behind them, none of which it flagged: ChangeNOW and FixedFloat, 81 bp over 6936 fan-outs; ChangeNOW and SimpleSwap, 56 bp over 6164 fan-outs; FixedFloat and SimpleSwap, 95 bp over 6158 fan-outs; ChangeNOW and StealthEX, 73 bp over 5942 fan-outs; FixedFloat and StealthEX, 60 bp over 5941 fan-outs; SimpleSwap and StealthEX, 76 bp over 5548 fan-outs. Publishing what the method cleared, on larger samples than it flagged, is what makes the table above a measurement rather than a list of suspicions.

Measured again in two halves on 10 November — 6,302 recorded moments split at the median one — to see whether any of this formed recently. No pairing crossed the threshold in either direction: nothing formed and nothing broke. The record starts 15 October, so that is twenty-six days and says nothing about before them.

This is not an ownership claim. Two companies reselling one upstream desk would read exactly like this. What is measured is that the price comes from the same place — which is the part that matters for splitting an amount or routing through Monero, because an outage, a freeze or an exit reaching one price source reaches everything quoting from it. A split now deals its legs across sources rather than across names. Any provider here who reads this as wrong is invited to say so; it will be re-measured and republished either way.

What a no-KYC directory says about the same eight

None of this is measured here. It is kycnot.me’s reading of each provider’s own terms, read off their pages between 30 September 2026 and 19 October 2026. It is published here because the single most useful fact about this list is one no provider advertises: nine of the eleven are Shotgun KYC, level 3 of 4 — each of those can demand identification, or hold funds, in the middle of a transfer it has already accepted. PegasusSwap is the exception, and the only one here whose terms say identity is never requested at all; it still screens deposits, and a flagged one can be held. Splitting a transfer does not change that. It changes how much of it any one of them is holding when it happens.

Seven providers compared above have no listing there and so do not appear in this table. An absent rating is not a good one. It means a directory somebody else maintains has not reached them yet, and treating that as a clean record would let a gap in another project’s coverage read as a verdict. What each provider’s own terms permit, quoted exactly, is on the counterparty risk page — along with the providers evaluated here and refused.

ProviderScoreKYC gradeListingReviewed there
ChangeHeroReports of withheld funds since September 2026; shotgun KYC.5/10D3 of 4community, unchecked28 September 2026
SideShiftMonero and Zcash delisted; Tor access refused.5/10D3 of 4checked by their team6 September 2026
FixedFloat4/10D3 of 4not stated3 September 2026
ETZ-SwapGuaranteed no KYC. Their terms return funds on an internal risk flag without requiring identity verification. Approved rather than verified; two years, registered in Ukraine.8/10A0 of 4community, unchecked21 October 2026
PegasusSwapTerms state identity information is never requested, collected or verified. Deposits are still screened, and a flagged one can be held.9/10A0 of 4checked by their team1 October 2026
ExolixAn unresolved 2026 vulnerability exposed around 355,000 swaps — deposit and withdrawal addresses paired, with hashes and amounts. This site will not route a Monero hop through them.5/10D3 of 4checked by their team13 September 2026
StealthEXIdentity documents retained five years.4/10D3 of 4checked by their team13 September 2026
ChangeNOWMandatory verification for users in the EU, US, UK, Canada and Australia.4/10D3 of 4community, unchecked12 August 2026
GhostSwapUnresolved incident since September 2026: reports of roughly $50k in withheld, unrefunded swaps.3/10D3 of 4community, unchecked18 September 2026
SimpleSwap3/10D3 of 4community, unchecked—
ChangellyFlagged for operating abnormally or showing exit-scam patterns.2/10D3 of 4community, unchecked1 June 2025

Read the middle column before the number. Four of these entries are community submissions nobody at that site has checked, and the lowest score here is one of them, last touched in June 2025 — old enough that it describes a company that may no longer exist in that form. The three marked as checked were reviewed this month. SimpleSwap has no date because its page prints one without a year, and a date inferred from context is not a date. This table is worth publishing and is not worth treating as a verdict.

Not asked

CCECash (CCECASH_QUOTE_ADDR_TRON) — this one has no credentials configured on this deployment, so it was never sent the request. That is a gap here, not a judgement on the provider.

xmr2cex (xmr2cex only sells Monero) — this one does not trade this pair, so there is nothing to ask. That is their limit, stated, not a gap here.

How to read these numbers

The table shows what answered, which is not the same as what exists. A provider can be absent from it for four quite different reasons, and they are kept apart above: it refused the request, it does not trade this pair at all, it has no key configured here, or it quoted and simply sits lower down. Only the first two are statements about the provider, and only the third is one about this deployment.

They are a reading rather than a constant. Minimums here are recalculated by each provider continuously and drift between one request and the next — the same pair measured twice in an hour returned floors differing in the fourth decimal. Margins move with the market. What holds across readings is the shape: which providers are cheap, which are dear, which state a ceiling and which do not, and which cannot be relied on to answer at all.

Nothing here is an endorsement or a partnership. These are the services this router queries, priced against each other because that is the only way to know what any of them costs. Checked 13 November 2026.

Price this transfer live or see what splitting it costs.