Invented prices are one of the most damaging failures for a support agent, because a customer will quote it back to you later.
What has worked for us on client builds is close to your structure, with one addition: tests. We keep a small set of questions the agent must refuse or hand over, such as a price for a plan that does not exist or a discount nobody approved, and run them on every prompt or model change. If any answer contains a number that is not in the source data, the build fails.
It turns a vague concern about hallucination into a clear acceptance criterion. Did you find the agent behaved differently when the pricing data was missing entirely versus partially present?