I don't think the last part of this concerning the final print on the original exchange is necessarily true. Quite often I will want to take an offer or sell a bid where the bid/offer is resting at a certain exchange. I would prefer not to have it filled there due to taking liquidity charges, so I will send it on a "free" exchange such as the CBOE. The CBOE may match, but more often than not, the order is in fact filled on the other exchange and not only do I pay for taking liquidity on that exchange, I also pay a linkage fee. So if there is a .50 offer on the BATS, I may send a .50 bid to the CBOE. I will see the trade done on the BATS (if the CBOE doesn't match).
Well, there will be 2 trades, one at the away exchange, and one at the originating exchange. Your order will be printed at the originating exchange. The order what is sent away is not your order per se. Fees has nothing to do with it, although, you might (like in your case) be charged back the fees for the offset trade done at the away exchange. This is not my opinion, this is the way it works.
I'm not an expert here, I am just stating what I see in time and sales. I will see only 1 trade printed on the away exchange. I will not see any trade printed at the exchange the order was directed to.
What the heck does that mean? If a stock is not in the penny program, options can't be quoted in pennies. You won't generally be able to enter a single option order in a penny increment, but you can enter a spread in a penny increment.
If you sent the 0.50 bid to CBOE, wouldn't the 0.50 offer on BATS be matching your bid order on CBOE? But either way, wouldn't you still be removing liquidity on BATS if CBOE sent your order to BATS and your order is immediately tradable on BATS? I think the only way for your order to be considered to be liquidity-adding is if the price of the order that you sent to BATS is worse than what's on BATS and then the market moves to your price and BATS executes your order, then you get the rebates on BATS. Anyway here is what this user manual of BATS says about its order-matching mechanism: "At the core of the system are several Matching Units. Each matching unit handles a bin of symbols, which can be reallocated to balance the load across the system. The matching unit compares the limit price of an incoming order with the price of resting limit orders on the BATS Order Book and the price of other markets’ displayed quotes. If the order is immediately marketable against the BATS Order Book, and the BATS quote is equal to or better than the consolidated quote, an immediate match is made and communicated back to Users. If another market is displaying a better quote, the order will be handled depending on a User’s instructions (e.g., forwarded to the other market to attempt to fill the order, posted to the BATS book, cancelled, etc.)." https://www.sec.gov/rules/other/2010/batsy/batsexchusermanual.pdf
Thats the issue. I don't want to be filled on the Bats here and remove liquidity (and be charged). If the .50 offer is soley on the BATS, I would prefer to be filled on an exchange that doesn't charge for removing liquidity. Thats why I route to the CBOE. The CBOE may match and fill me there at .50, but if no MM wants the order it will be sent to the BATS. I will then pay the removing liquidity fee and an extra linkage fee.
Well if you are entering a market order yeah for sure you would want to send it to an exchange that doesn't charge you for removing liquidity like CBOE provided that it can be filled on CBOE otherwise you would still end up paying for removing liquidity if the order ended up getting sent to other exchanges like BATS that charge you higher exchange fees for removing liquidity. So I guess the answer to OP's question is yes exchanges do see orders on other exchanges and unless you instruct to specifically leave the order on the exchange books, they do get sent to other exchanges to be filled if the price matches. The only thing if your order is sent to COB as a spread, then other exchanges won't see it and won't fill the order for the individual legs and your order would only be filled as a spread with all of the legs executed at the same time? Is that correct?