We consider a two-echelon distribution system in which a supplier distributes a product to N competing retailers. The demand rate of each retailer depends on all of the retailers' prices, or alternatively, the price each retailer can charge for its product depends on the sales volumes targeted by all of the retailers. The supplier replenishes his inventory through orders (purchases, production runs) from an outside source with ample supply. From there, the goods are transferred to the retailers. Carrying costs are incurred for all inventories, while all supplier orders and transfers to the retailers incur fixed and variable costs. We first characterize the solution to the centralized system in which all retailer prices, sales quantities and the complete chain-wide replenishment strategy are determined by a single decision maker, e.g., the supplier. We then proceed with the decentralized system. Here, the supplier chooses a wholesale pricing scheme; the retailers respond to this scheme by each choosing all of his policy variables. We distinguish systematically between the case of Bertrand and Cournot competition. In the former, each retailer independently chooses his retail price as well as a replenishment strategy; in the latter, each of the retailers selects a sales target, again in combination with a replenishment strategy. Finally, the supplier responds to the retailers' choices by implementing his own cost-minimizing replenishment strategy. We construct a perfect coordination mechanism. In the case of Cournot competition, the mechanism applies a discount from a basic wholesale price, based on the sum of three discount components, which are a function of (1) annual sales volume, (2) order quantity, and (3) order frequency, respectively.