The first time I exported a full year of my own fills and summed the fee column, the number was embarrassing. Every single fill was tagged taker. Same exchange as everyone else, same printed fee schedule, and I was paying the expensive rate on both sides of every trade, including boring entries I had planned days in advance. Nothing about my trading needed that speed. I was paying for immediacy out of habit.
Maker and taker fees are one of those things most traders half-know. The schedule sits on every exchange's pricing page, two columns, maker cheaper than taker, and people glance at it once and never check which column they actually live in. The gap between those columns, compounded over a year of routine trades, is often the difference between a strategy that clears its costs and one that quietly bleeds.
What the matching engine actually sees
An exchange is, at its core, an order book. Bids stacked on one side, asks on the other. When you place a limit order that does not immediately match anything, it rests in the book and waits. You have added liquidity, a live price someone else can trade against, so when it eventually fills you are the maker of that trade. When you place an order that executes instantly against a resting order, you have removed liquidity, and you are the taker.
People shorthand this as limit orders are makers and market orders are takers, which is mostly true but wrong in a way that costs money. A limit buy priced above the current best ask crosses the spread and fills immediately, and it pays the taker fee even though the ticket said limit. The matching engine checks one thing, whether your order rested in the book before filling or crossed and filled on arrival, and it charges you accordingly.
Stop losses are a common surprise here. On most venues a triggered stop fires as a market order, so your protective stop is a taker by construction. That is fine, a stop exists to get you out right now and immediacy is worth paying for. The problem is when your unhurried routine entries pay the same premium for speed they never use.
Why exchanges pay for patience
The two-tier pricing exists because the exchange's real product is depth. A thick order book means tight spreads and low slippage, which attracts volume, which attracts more resting orders, and the flywheel spins. Takers consume that depth and get something genuinely valuable in return, a guaranteed instant fill. Makers supply the depth and carry risk while they wait, since a resting order can get picked off the moment the market moves. So exchanges price the two sides the way you would expect. They charge for immediacy, and they discount, or outright subsidize, patience.
At the aggressive end this becomes the rebate model, where high-volume makers pay a negative fee, meaning the exchange pays them per fill, funded out of the taker fees on the other side of those same trades. The structure was popularized on electronic equity venues long before crypto existed, and crypto exchanges adopted it more or less wholesale. It is why professional market-making firms can quote two-sided prices all day across hundreds of pairs, the rebate plus the spread is the business. As a retail trader you will usually not see negative fees, those live in the top volume tiers, but the same logic gives you a maker rate that is often half the taker rate or better, and on derivatives venues the gap tends to be wider than on spot.
Same schedule, very different bills
Here is the part that surprised me when I ran my own numbers. Two traders on the same venue, same tier, same printed schedule, can pay wildly different amounts for identical activity. Suppose a venue charges roughly 0.05% taker and 0.02% maker. A trader who enters and exits with market orders pays about 0.10% per round trip. A trader who rests limits on both sides pays about 0.04%. The difference is roughly 0.06% per round trip, which sounds like nothing until you multiply it by a year of activity.
The estimation recipe fits on a napkin. Take your actual round trips per year, your average position size, and the maker-taker gap per side on your venue, then multiply the three. Someone doing a couple of hundred round trips a year at a few thousand dollars each is often looking at a three-figure annual difference, and anyone moving real size is looking at far more. The precise number matters less than the exercise, because the same fee export tells you what fraction of your taker fills actually needed to be taker fills. In my case it was maybe one in five.
Fees are easy to underrate because they never show up as one painful line item. They shave every trade a little, winners and losers alike, and the more frequent and disciplined your trading, the larger the share of your edge they quietly eat.
Moving routine trades to the cheap column
The fix is to sort your trades by how much immediacy they actually need, then restructure the ones that need none. My rough workflow looks like this.
- Export your fill history and filter for taker fills. Most exchanges tag each fill maker or taker in the export.
- For each recurring type of trade, ask whether it truly needed to fill within seconds. Stops, news reactions, and exits from a position moving against you all do. Scheduled DCA buys, planned rebalances, and scaling into a level you picked in advance almost never do.
- For the unhurried ones, switch to limit orders placed at or just inside the best bid or ask on your side, and turn on the post-only flag. Post-only tells the engine to reject the order rather than let it cross, so you cannot accidentally pay taker on a mispriced ticket.
- If you are entering size, ladder it. Several resting orders spaced below the current price will often all fill across normal intraday movement, every one of them at the maker rate.
- Check whether your venue's volume tiers or native-token discounts stack with maker pricing. They usually do, and the combined rate on routine entries can get very small.
Two honest caveats, because maker orders are cheaper for a reason. The first is missed fills. A resting bid only fills if price comes down to meet it, and sometimes price just leaves without you. If you then chase, you pay the taker fee anyway plus a worse price, which is the worst of both worlds. The second is adverse selection, which is subtler. Your resting bid fills most reliably at the exact moments price is falling through it, so a maker fill is, on average, a fill into short-term weakness. For a long-horizon entry that is fine and arguably a feature. For a short-term trade it can quietly cost more than the fee it saved.
My rule of thumb after living with this for a while: if being wrong on timing by a few hours would not change whether I want the trade, it goes in as a post-only limit and sits. If timing is the whole point, I pay taker without complaint, since that is exactly what the fee buys. Most of my volume, it turned out, was in the first bucket while pretending to be in the second.
Start with the export. One month of fills, sum the taker fees, recompute what those same fills would have cost at your maker rate, then take roughly half the difference as realistic, since some maker attempts will miss and a few chases will happen. Multiply by twelve and see if the number moves you. For most people trading with any regularity it does, and the change in habit costs nothing but a little patience, which is the one input the fee schedule actually rewards.