And what if the DM says “no, you’ve never shopped here before, the shopkeepers don’t know you and have no reason to give you a discount”? Or even, “make a Charisma check to try to negotiate for the discounted price?” I think the player would be entirely justified in protesting. They have a feature that says they get a discount. Not that they get a discount if the DM feels like it, not that they get a discount in settlements where they’ve established themselves, not that they can make a Charisma check to get a discount. It just says they get it, full stop. And therein lies the problem. There’s no accounting for the circumstances of the purchase. The feature says you get a discount, players should be able to count on their features to do what they say they do, and DMs should be able to account for various in-world circumstances. With this rule, all three of those things can’t be preserved, one of them must be compromised.
My problem is that a player-facing ability shouldn’t be putting the DM in a position to have to do that. The player’s role is to describe what their character does and the DM’s role is to describe how the world responds to that. This feature encroaches on the DM’s ability to perform their role by saying whatever they describe must result in a 20% discount for the character of player who takes this feature.