I've tried multiple things but still can't get it to work, here's the code
local MarketplaceService = game:GetService('MarketplaceService')
local function processReceipt(receiptInfo)
local player = game:GetService('Players'):GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
--Player doesn't exist / left game.
return Enum.ProductPurchaseDecision.NotProcessedYet
end
--Script below controls what happens if bought.
print(player.Name .. ' just bought ' .. receiptInfo.ProductId)
player.leaderstats.Stage.Value = player.leaderstats.Stage.Value + 1
player.Character:MoveTo(Vector3.new(player.leaderstats.Stage.Value))
return Enum.ProductPurchaseDecision.PurchaseGranted
end
MarketplaceService.ProcessReceipt = processReceipt
Thanks, for your service.

2 comments
It would be helpful if you said what these 'multiple things' were. If it's teleporting you but not to the correct location, maybe you haven't defined the where stage.value + 1 is
Well, that is in another script in 'ServerScriptService'. Not local.