When a trade offer in Ripple incurs transit fees, who pays them? When two trade orders in Ripple are matched and they incur a transit fee for exchanging IOUs, which of the parties pays the transit fee? Is this transit fee already included in the order or is it added later? I.e. are trade offers WYSIWYG?
Transfer fees are charged whenever accounts with one set have a balance moved between other accounts. For payments, the sender always pays no matter which balances are adjusted, for trades the account 'sending/giving' pays.

So if there is a trade of USD/Bitstamp for BTC/DividendRippler between two accounts (it doesn't matter which entered the initial trade offer or if it is a BUY or SELL order) then the account that gives USD pays the 0.2% Bitstamp transfer fee and the account that gives BTC pays the 0.15% DividendRippler transfer fee.

Another example, if the trade was for USD/Bitstamp and XRP then the account giving XRP would pay no fee and the account giving USD would pay Bitstamp's 0.2% fee.

The fee is not pre-calculated into the trade offer but calculated when trades are executed. It's even possible for the issuing account to change their transfer rate/fee¹ between when the offer is posted and when it's executed, in which case the rate in effect at the time the offer is executed is the one that applies.

¹ Presumably gateways change their transfer rate rarely and according to their published policies. E.g. some gateways have promised a maximum they'll never exceed and promised to give 30 days notice before any increase. Ripple doesn't enforce any such policies however.

See also some related Ripple forum posts (that basically say the same thing):


Re: Transaction fee on the BTC/XRP in built-in Exchange? 
Re: Transaction fee on the BTC/XRP in built-in Exchange?


[Edit] Small correction:
Although the overall exchange rate/price isn't adjusted to affect the transfer rate, the shown amount of the offer (the funded portion) may be adjusted as the transfer rate changes. [Ignore the rest of this if you're not interested in the details of "partially funded" offers.]

I just noticed an example of this on a trade offer that is internally represented as "taker gets 10 GBP/Bitstamp; taker pays 2940 XRP". Normally this would display on the GBP/XRP order book as an ASK with "Ask Price 294 XRP", "Size 10 GBP". If the account making the offer had at least 10.02 GBP (10 * the transfer rate of 1.002) this is what would be shown. (Since to fill the offer the offer taker would get 10 GBP but the offer maker would have to give up 10.02 GBP to cover the transfer fee).

However, the account making the offer has a balance of exactly 10 GBP/Bitstamp so due to the transfer rate this offer is considered not fully funded. Internally the offer also has fields "taker gets funded 9.980039920159681 GBP; taker pays funded 2934.131736 XRP". So this shows up in the GBP/XRP order book as an ASK with "Ask Price 294", "Size 9.980039 GBP". Note that the ask price hasn't changed, just the total amount. Someone taking 5 GBP of the offer (for 1470 XRP) would get exactly 5 GBP but the offer maker would give 5.01 GBP to cover the transfer fee. Since the offer maker only has 10 GBP the fee has to come out of that leaving only ~9.98 GBP funded.

If the transfer rate were to change the funded portion should also change. If the account were to get another 0.02 GBP (or more) the offer would be considered fully funded. If the account spends GBP and where to make their balance exactly 5.01 GBP the funded portion should change to show 5 GBP.