GameDevGenie logo GameDevGenie

How to Make Developer Products on Roblox

Updated

Unlike Gamepasses which are purchased once and owned forever, Developer Products can be bought repeatedly. They are the foundation of game monetization: coin bundles, revives, potion boosts, and battle crates. Here is how to create and script them.

Step 1: Create a Developer Product

  1. 1 Open your experience in the Creator Dashboard at create.roblox.com.
  2. 2 In the left sidebar menu, open Monetization Products → Developer Products.
  3. 3 Click Create Developer Product.
  4. 4 Upload a 512×512 icon, enter a clear item name (e.g., “100 Gold Coins”), and set your Robux price.
  5. 5 Click Create Developer Product and copy the numeric Product ID.

Roblox retains 30% of each product sale; developers receive 70%. You can calculate your exact payout using the Roblox Tax Calculator.

Step 2: Prompt the Purchase in Game

To prompt the purchase when a player clicks a shop button in your UI, place this LocalScript inside your shop button:

local MarketplaceService = game:GetService("MarketplaceService")
local player = game:GetService("Players").LocalPlayer

local PRODUCT_ID = 0000000 -- Replace with your Developer Product ID

script.Parent.Activated:Connect(function()
	MarketplaceService:PromptProductPurchase(player, PRODUCT_ID)
end)

Step 3: Handle Purchases with ProcessReceipt (Server)

Developer Products MUST be processed securely on the server using MarketplaceService.ProcessReceipt. Put this Script in ServerScriptService:

local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")

local PRODUCT_ID = 0000000 -- Replace with your Product ID

MarketplaceService.ProcessReceipt = function(receiptInfo)
	local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
	if not player then
		return Enum.ProductPurchaseDecision.NotProcessedYet
	end

	if receiptInfo.ProductId == PRODUCT_ID then
		-- Grant reward safely (e.g. add coins to leaderstats)
		local leaderstats = player:FindFirstChild("leaderstats")
		if leaderstats and leaderstats:FindFirstChild("Coins") then
			leaderstats.Coins.Value += 100
		end
		return Enum.ProductPurchaseDecision.PurchaseGranted
	end

	return Enum.ProductPurchaseDecision.NotProcessedYet
end

Developer Product FAQ

What is the difference between a Gamepass and a Developer Product?

A Gamepass can only be bought once per account (e.g. VIP access). A Developer Product can be purchased infinitely (e.g. gold coins or extra lives).

Is it free to create a Developer Product?

Yes. Creating developer products is free. Roblox takes a standard 30% fee when a player buys one.

What happens if ProcessReceipt returns NotProcessedYet?

Roblox will retry executing the receipt function when the player rejoins until PurchaseGranted is returned, ensuring players never lose purchased goods during server crashes.

More Roblox Guides