The first time I compared two fills side by side I assumed I had made a mistake in the spreadsheet. Same coin, same size, same minute, one on a commission-free retail app and one on an exchange with a visible maker-taker fee. The app charged me nothing, and the app fill was worse. Not by a little. The difference was larger than the fee I had been so pleased to avoid. That is roughly the whole story of retail crypto execution, and once you see it you cannot unsee it.
The reason is that the price on your screen and the venue where your order fills are two different things, and the app has no reason to make that obvious. When you hit buy in a lot of these apps, your order does not walk into an order book and match against another trader. It gets internalized, which means the app or a market maker it works with fills you against their own inventory, or it gets routed to a wholesaler who paid for the right to see your order first. The price you get is a price they are willing to offer, not the best price available across the market at that instant.
What payment for order flow actually is
In equities this arrangement has a name that traders argue about constantly, payment for order flow, and the crypto version works on the same principle even when nobody calls it that. A market maker pays a broker, or an app, for the exclusive right to fill its customers' orders. The broker gets paid, the customer trades commission-free, and the market maker makes money on the spread and on the fact that retail flow is, on average, uninformed and therefore safe to trade against.
That last part is the key. Market makers do not fear retail orders the way they fear another market maker, because retail is not usually trading on information the maker does not have. So they can offer retail a tight-looking price, capture the difference between what they pay for the coin and what they sell it to you for, and pocket the gap. Nothing here is illegal or even hidden if you read the disclosures. It is just structured so the cost never appears as a line item you can point to.
The honest way to think about it is that you moved the fee from a place you can see to a place you cannot. On an exchange the fee is printed. In an internalized model the fee is buried inside a slightly worse price, and a slightly worse price on every trade adds up faster than a small explicit fee does, especially if you trade often.
The spread is the fee
Here is the mental model I use. On any trade there is a mid price, which is the midpoint between the best bid and the best ask, and that is roughly the fair value at that moment. A market taker on an exchange pays a printed fee and fills close to the ask or the bid depending on direction. A retail app user pays no printed fee but fills at a price that is a bit further from mid than an exchange taker would get. The distance from mid is the cost, whether it is labeled or not.
So the comparison you want is not zero fee versus some fee. It is total cost versus total cost. Total cost is roughly the explicit fee plus the distance between your fill price and the fair mid at the moment you traded. On a commission-free app the first term is zero and the second term is doing all the work. On an exchange the first term is visible and the second term is usually smaller because you are matching against a real book.
A rough rule I keep in my head: the wider the spread on the asset and the smaller your trade, the more a commission-free app can hide, and the more likely a real exchange is quietly cheaper. Big liquid coins have tight spreads, so the hidden cost is small and convenience often wins. Thin or newly listed tokens have wide spreads, and that is exactly where internalized fills get expensive, because the maker has room to price you badly without you noticing.
How to measure the fill you actually got
You do not need a trading desk to check this. You need to capture two numbers at the moment you trade and do arithmetic later.
- Write down the mid price at the instant you place the order. Best bid plus best ask, divided by two, from a real exchange order book, not the app's displayed price.
- Record your actual fill price from the confirmation, the all-in number including any spread or fee baked in.
- Take the difference between your fill and the mid, and express it as a fraction of the mid. That is your slippage from fair value in basis points. One basis point is one hundredth of a percent.
- Do this maybe ten times across different sizes and different assets, then compare the average against what a maker-taker exchange would have charged you as a printed fee for the same trades.
If your average distance from mid on the app is bigger than the exchange's taker fee, the free trade was not free and you are paying for the convenience. If it is smaller, the app is genuinely competitive for what you trade and you can stop worrying about it. Either way you now have a number instead of a feeling.
The failure mode I see most often is people benchmarking against the wrong price. They compare their fill to the price the app showed them one second earlier, decide it looks fine, and never check it against an independent book. The app's displayed price is not neutral. Benchmark against a venue that has no stake in making your fill look good.
When the real exchange wins
Put all of it together and a few patterns hold up. Small trades in liquid majors, the app is usually fine and the convenience is worth it. Larger trades, thinner assets, or anything you do frequently enough that basis points compound, a real exchange with a printed fee and a visible order book tends to cost less even after the fee. And if you cannot get an independent mid price to check your fill against, treat that as a warning rather than a comfort, because a venue confident in its pricing has no reason to make comparison hard.
This is part of why we built execution at Blockcircle to route non-custodially across a lot of exchanges rather than through a single internalized book, so the fill happens against real liquidity and you can see where it went. But you do not need any particular tool to protect yourself here. You need the habit of comparing your fill to an independent mid instead of trusting the word free. Do that a handful of times and you will know exactly which of your venues is quietly charging you, and roughly how much, which is more than most people trading these markets can say.