Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Maker-Taker Fees and Rebates Explained

Maker-taker fees explained with arithmetic: what a venue keeps between the taker fee and the maker rebate, and how that gap steers where brokers route orders.

Maker-taker fees are the two prices a stock exchange puts on the same trade: a taker fee charged to the order that removes liquidity from the book, and a maker rebate paid to the order that was already resting there. The exchange keeps the gap between the two. The whole schedule is quoted in mils, where one mil is $0.0001 per share. That makes one cent 100 mils, and the long-standing 30 mil ceiling on taker fees three tenths of a cent.

What is maker-taker pricing?

A limit order priced where nobody will trade with it immediately rests on the exchange's book and makes liquidity. The best-priced resting orders across all the exchanges form the national best bid and offer, the quote on your screen. An order that executes on arrival against one of those resting orders takes liquidity. Every execution pairs one of each, and the two roles say nothing about who is a professional. A retail market order takes. A retail limit order that sits for twenty minutes and then fills makes.

How much does an exchange keep on each share?

Take a venue charging 30 mils to take and paying 22 mils to make. Those figures are a worked example in the range of published US equity schedules, not a quote from any one venue. Both sides settle on the same execution:

  • The taker is billed $0.0030 per share.
  • The maker is credited $0.0022 per share.
  • The exchange keeps $0.0008 per share.
  • The printed execution price is untouched by all of it.

On a 1,000 share fill the venue collects $3.00, pays out $2.20, and books $0.80. Push a million shares through the same schedule and it reads $3,000 in, $2,200 out, $800 kept. That eight mil gap, across billions of shares a day, is an exchange's transaction revenue line. A venue competing for resting orders competes by raising the rebate, which pushes its taker fee up against the regulatory ceiling, and it collects on volume either way.

How big is 30 mils next to the spread?

A per share fee only means something next to the spread it is charged against. The panel below takes one hour of national best bid and offer quotes on July 15, 2026, for four household names, and measures the spread in mils.

QueryOne hour of NBBO spreads, measured in mils (Jul 15, 2026)
The exact SQL behind every number
WITH quotes AS
(
    SELECT
        ticker,
        round((toFloat64(ask_price) - toFloat64(bid_price)) * 10000) AS spread_mils
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'KO', 'MSFT', 'SPY')
      AND sip_timestamp >= '2026-07-15 14:00:00'
      AND sip_timestamp <  '2026-07-15 15:00:00'
      AND bid_price > 0
      AND ask_price > bid_price
)
SELECT
    ticker,
    toUInt32(round(avg(spread_mils)))                    AS avg_spread_mils,
    round(100 * countIf(spread_mils = 100) / count(), 1) AS pct_at_one_cent
FROM quotes
GROUP BY ticker
ORDER BY avg_spread_mils
Run this yourself

The tightest of the four, KO, averaged 147 mils over the hour and sat at exactly one cent for 58.2% of its quotes. The widest, MSFT, averaged 928 mils. Now hold the schedule against those numbers. A one cent spread is 100 mils wide, and a 30 mil taker fee is close to a third of it. The fee schedule operates on the same scale as the quote itself.

Why a rebate is a sub-penny price

Here is the part most explanations skip. A displayed quote in a stock priced $1.00 or more has to be in whole pennies, and our sub-penny rule post walks through that increment in detail. A venue that wants to offer one side of the market a better effective price has no room left inside the quote.

The fee schedule is the room. A maker who buys 100 shares at $50.00 and collects a 22 mil rebate has an effective cost of $49.9978 per share. A taker who buys the same 100 shares at $50.00 and pays a 30 mil fee has an effective cost of $50.0030. One printed price, two net prices, both of them sub-penny. Quoting increments are regulated in pennies while access fees and rebates are regulated in mils, and the fee schedule is where sub-penny competition between venues happens.

What is an inverted, or taker-maker, exchange?

An inverted venue runs the schedule backwards: it pays a rebate to the order that takes liquidity and charges a fee to the order that posts it. The venue still keeps the gap.

Queue priority is what a poster buys on such a book. A resting order pays for its place and in return tends to sit near the front of a shorter queue at the same displayed price, while the taker rebate pulls marketable orders in. Nasdaq BX and Cboe EDGA have run inverted schedules for years, and operators commonly run one book of each kind, so a router can pick a side per order.

Where does a maker-taker rebate send your order?

A broker with a marketable order to place has a menu: 18 registered US stock exchanges on different schedules, plus off-exchange wholesalers and dark pools. Here is where one liquid name's shares actually printed across a single session.

QueryWhere one liquid name's shares printed, by venue (Jul 15, 2026)
The exact SQL behind every number
WITH
    by_venue AS
    (
        SELECT
            toInt32(exchange) AS venue_code,
            sum(size)         AS shares,
            count()           AS prints
        FROM global_markets.stocks_trades
        WHERE ticker = 'AAPL'
          AND sip_timestamp >= '2026-07-15 04:00:00'
          AND sip_timestamp <  '2026-07-16 04:00:00'
        GROUP BY venue_code
    ),
    venue_names AS
    (
        SELECT
            toInt32(id) AS venue_code,
            any(name)   AS venue_name
        FROM global_markets.stocks_exchanges
        WHERE asset_class = 'stocks'
        GROUP BY venue_code
    )
SELECT
    if(empty(n.venue_name), concat('Participant ', toString(v.venue_code)), n.venue_name) AS venue,
    round(100 * v.shares / sum(v.shares) OVER (), 2)                                     AS pct_of_shares,
    toUInt32(round(v.shares / v.prints))                                                 AS avg_trade_size
FROM by_venue AS v
LEFT JOIN venue_names AS n USING (venue_code)
ORDER BY v.shares DESC
LIMIT 12
Run this yourself

The busiest destination, Nasdaq, carried 37.15% of the day's shares at an average print of 149 shares. Rows whose names carry TRF are trade reporting facilities, the tape where off-exchange executions get printed, and no exchange fee or rebate touches those shares.

This is where the conflict sits. A broker earns rebates on the orders it posts and pays fees on the orders it takes, and at scale those amounts are a real line item. Best execution is a duty owed on the fill the customer gets, and the venue that pays the broker most is not automatically the venue that fills best. Two published receipts expose the tension: the Rule 605 and 606 reports, where 605 measures realized execution quality venue by venue and 606 names the venues a broker routed to along with its rebate arrangements. For the rest of the retail cost stack, see what it costs to trade a stock. For the other side of the fill, how market makers make money covers the firm's economics rather than the venue's.

Why a per share fee weighs more on cheap stocks

An access fee is charged per share, and the quote it is charged against is a price per share. The ratio between them moves with the price. This panel takes every US stock priced $1.00 or more with real volume on July 15, 2026, buckets by price, and states a 30 mil fee as basis points of the notional traded. One basis point is 0.01%.

QueryA 30 mil per share fee as basis points of notional, by price band (Jul 15, 2026)
The exact SQL behind every number
WITH closes AS
(
    SELECT toFloat64(close) AS close_px
    FROM global_markets.stocks_daily_aggs
    WHERE date = '2026-07-15'
      AND ifNull(otc, 0) = 0
      AND close >= 1
      AND volume >= 100000
)
SELECT
    multiIf(close_px < 5,   '$1 to $5',
            close_px < 20,  '$5 to $20',
            close_px < 50,  '$20 to $50',
            close_px < 100, '$50 to $100',
            close_px < 250, '$100 to $250',
                            '$250 and up') AS price_band,
    count()                                AS stock_count,
    round(avg(30 / close_px), 2)           AS fee_bps_at_30_mils
FROM closes
GROUP BY price_band
ORDER BY min(close_px)
Run this yourself

In the $1 to $5 band, 30 mils averages 13.52 basis points of notional across 712 names. In the $250 and up band it averages 0.08. Same fee, a very different bite out of the money changing hands. Rule 610 treats the bottom of the range separately: for quotes under $1.00 the cap is a percentage of the price rather than a flat per share amount.

What is the Rule 610 access fee cap?

Rule 610(c) of Regulation NMS caps what an exchange may charge to access a protected quotation. Since the rule took effect the cap has been $0.0030 per share for quotes priced $1.00 and above, and 0.3% of the quotation price below $1.00. The 30 mil ceiling is why published taker fees cluster just underneath it.

That number has been under active revision. In September 2024 the SEC adopted amendments lowering the cap to $0.0010 per share at $1.00 and above, and to 0.1% of the price below $1.00, alongside a requirement that any fee or rebate on an execution be determinable at the time of execution. The compliance date has moved more than once: first set at the opening business day of November 2025, extended by exemptive order to November 2026, and extended again to November 2027 as of June 2026, while the Commission reconsiders other parts of Regulation NMS. Read every cap figure on this page as a citation with a date attached. The durable part is the mechanism: a ceiling on the taker fee is a ceiling on the rebate a venue can fund out of it.

FAQ

What does maker-taker mean in trading?

It is an exchange pricing model. The order that posts liquidity to the book, the maker, receives a per share rebate. The order that removes it, the taker, pays a per share fee, and the exchange keeps the difference.

What is a maker rebate?

A per share credit an exchange pays when a resting order gets executed against, quoted in mils, where one mil is $0.0001 per share. A rebate in the low twenties of mils sits in the range of long-published US schedules. It is credited to the firm that entered the order, which is not always the end customer.

What is an inverted exchange?

A venue that reverses the usual schedule, paying the taker and charging the maker. Firms post on an inverted book in exchange for queue priority at the same displayed price.

Does maker-taker pricing affect where my broker routes my order?

It is one of the inputs, and the outcome is disclosed rather than hidden. A broker's Rule 606 report lists the venues it sent orders to and describes its rebate arrangements, and the Rule 605 reports show the execution quality those venues delivered.

What is the access fee cap?

The Rule 610(c) limit on what an exchange can charge to access a protected quote. It has stood at 30 mils per share for stocks at $1.00 and above. A 2024 SEC amendment lowers it to 10 mils, with a compliance date extended to November 2027 as of June 2026.

Data notes and venue code reference

The trade panel counts every print the tape carried for that ET calendar date, premarket and after hours included, with no condition filtering, and maps each participant code to a venue name through the reference below. The quote panel reads a single hour of that session, a slice chosen to keep the panel cheap to rerun rather than a statement about when the session starts or ends. The 30 mil figure in the price band panel is a stated assumption, the long-standing Rule 610(c) ceiling, not a fee any named venue charges.

QueryRegistered US stock exchanges and their participant codes
The exact SQL behind every number
SELECT
    toInt32(id)        AS participant_code,
    any(name)          AS exchange_name,
    any(acronym)       AS acronym,
    any(mic)           AS mic,
    any(operating_mic) AS operator_mic
FROM global_markets.stocks_exchanges
WHERE asset_class = 'stocks'
  AND type = 'exchange'
GROUP BY participant_code
ORDER BY participant_code
Run this yourself

Every panel above ships with the SQL that produced it. To measure a fee schedule against your own names and dates, ask the question in plain English on the Strasmore terminal.