We model a market in which nonstrategic vendors sell items of different types and offer bundles at discounted prices triggered by demand volumes. Each buyer acts strategically in order to maximize her utility, given by the difference between product valuation and price paid. Buyers report their valuations in terms of reserve prices on sets of items, and might be willing to pay prices different than the market price in order to subsidize other buyers and to trigger discounts. The resulting price discrimination can be interpreted as a redistribution of the total discount. We consider a notion of stability that looks at unilateral deviations, and show that efficient allocations - the ones maximizing the social welfare - can be stabilized by prices that enjoy desirable properties of rationality and fairness. These dictate that buyers pay higher prices only to subsidize others who contribute to the activation of the desired discounts, and that they pay premiums over the discounted price proportionally to their surplus - the difference between their current utility and the utility of their best alternative. Therefore, the resulting price discrimination appears to be desirable to buyers. Building on this existence result, and letting N, M and c be the numbers of buyers, vendors and product types, we propose a O(N^2+NM^c) algorithm that, given an efficient allocation, computes prices that are rational and fair and that stabilize the market. The algorithm first determines the redistribution of the discount between groups of buyers with an equal product choice, and then computes single buyers' prices. Our results show that if a desirable form of price discrimination is implemented then social efficiency and stability can coexists in a market presenting subtle externalities, and computing individual prices from market prices is tractable.