The approach we're taking towards shops in ToZ is to keep it simple and transparent. In the previous game things were overly complicated resulting in a lot of confusion for players and staff alike. Staff spent undue time managing shops without much insight into how they worked.
City taxes by material type, city taxes by item type, clan affiliation discounts, individual merchant markups by item and material type, the individual character's barter skill, and more. There were no official standards on what was appropriate for any of those values which lead to a lot of unofficial standards that could vary greatly from one cohort of staff to the next.
While shops are a necessary part of any MUD we don't feel they need to be so complex that a player must spent hours understanding them. In response to that and the above stated goals below is an explanation of how shops will work at release time (subject to individual weakness in response to a desire for more complexity).
Shops will have a universal mark up on the value of items they sell and an inverse mark down on the value of items they will buy. At this time there's no mechanism for changing a single shop's buy / sell percentages, and we plan to keep it like that.
The larger an organization a shop represents the less likely they are to buy things from others. These would represent merchants who have been tasked solely with bringing in coin and emptying out inventory. Their organization will have others who may or may not buy goods from the public. OOC this is to keep things from getting out of control with grindy, craft-to-riches-without-rp behavior.
There is also the option, on the staff side, to set a merchant as barter only. This will make them refuse to use coins for trading. A player will have to offer a set of goods of equal or greater value than what they want from the merchant before the merchant will accept a trade. Barter merchants will never operate at a loss, but they also do not require a profit. Breaking even is good enough for them.
The commands for trading range from the simple list/buy #/sell <item> (which only work with coin (as opposed to barter) merchants), to offer / barter. The offer commands lets a character offer an item from their inventory for something in the merchants list. The offer is shown to the player, their items on the left, the merchant's items on the right, and a coin value for everything offered versus requested.

A player can keep adding items to the offer or cancel the offer at any time. If the player is happy with the offer, and the items offered are at least break even for the merchant, the player can use the 'barter' command to close the deal. Items are exchanged, but any value of what the player offered over break even is lost.
This is, admittedly, a simple system. We've tried to make the messages as clear and helpful as possible so players can trade without confusion and are never surprised by the results. Like other subsystems, shops are there to support roleplay and story telling, not be the focus of micromanaging interactions with NPCs and engaging in grind activities.