In some games, such as Plz Donate, products are displayed to players with their listing price. To reduce the number of requests made to the Roblox API, caching the details of this product is the best solution. When a player purchases the product, they will pay whatever the item is worth when they receive the prompt as long as the price is the same. There is no issue with this up until the point of displaying this to players.
If the server caches the price, a player-owned item can be repriced. The server would see the prompt as a 1,000,000 R$ purchase when in reality the player only paid 10 R$. The server would need to make a second request for updated details, which at any time risks failing.
Include the price the player actually paid for the item within the event. Instead of just giving the ID of the purchased product along with a receipt ID, provide the price of the item when they bought it.
This would allow PromptPurchaseFinished and PromptGamePassPurchaseFinished to provide developers with access to the amount spent similar to how product receipts include