When a developer triggers MarketplaceService:PromptProductPurchase(), players can keep the purchase prompt open indefinitely. This means they may complete the purchase even if the developer no longer intends the product to be available (for example, after a timer expires, when the player state changes, or for any other reason).
Although developers can implement server-side validation to deny benefits after the fact, this creates a frustrating user experience: players may spend Robux but receive nothing.
A clean solution would be to add a new API: MarketplaceService:CancelPrompt()
This function would immediately close any active purchase prompt on the CoreGui, giving developers explicit control to cancel product offers at any time.
There is currently a tricky workaround that developers use, but it is not ideal:
local GuiService = game:GetService("GuiService")
local function closePrompt()
GuiService:InspectPlayerFromUserId(1)
GuiService:CloseInspectMenu()
end
Instead of relying on such hacks, it would be far more consistent and safe if Roblox provided a built-in way to dismiss product prompts. This would prevent wasted purchases, improve player trust, and give developers better control over product purchase flows.