They can haggle if they want, or they can just accept the initial offer; that’s up to them.
It’s like this: say you find a Jasper as part of a treasure horde. Instead of just saying “that’s a Jasper, it’s worth 50 gold,” I describe the gem, e.g. “it’s an opaque gemstone mottled with dark orange, red, and brown.” A player can attempt to appraise it if they want; in this case, I’d probably call for a DC 15 Intelligence check; proficiency with Jewler’s Tools would be applicable, as would a dwarf’s Stonecunning. On a success, I’d tell them it’s a Jasper, and give them an expected price range (I’d get this range by rolling twice for its value; if I got the same result twice, I’d just say they can expect it to sell for “about [the rolled value]”). Then, when they later go to barter or sell it, I’d roll (using the same dice code as I use for appraisal) for the initial offer. 50 would be the average result, since a Jasper is a 50gp gem, but I might roll higher or lower. Specifically, my dice code for a 50 gp gem is 2d4x10, so they’d get a an offer of between 20 and 80 gp. It’s up to them if they want to take the offer or try to haggle for more (with Charisma checks and such).