Game passes and developer products are the main ways to make money from your Roblox game. Game passes are permanent one-time purchases that usually give permanent perks (like a VIP role or exclusive cosmetic). Developer products are consumable items that players can buy multiple times, like a damage boost or extra currency.

You'll set these up in the Creator Dashboard, then script them to trigger rewards when players buy them. Let's build both.

Create a Game Pass

Game passes are permanent purchases tied to a specific game. Head to the Creator Dashboard and open your game.

  1. Click Monetization in the left sidebar.
  2. Select Game Passes.
  3. Click Create a Game Pass.
  4. Upload an icon (at least 512×512 pixels — make it eye-catching).
  5. Give it a name and description. Be clear: "VIP Access" is better than "Cool Pass".
  6. Set the price in Robux. New games often start at 99 or 199 Robux.
  7. Click Create.

Copy the game pass ID from the page. You'll need this in your script. It looks like a long number.

Create a Developer Product

Developer products are consumable and can be bought multiple times. They're ideal for boosts, currency, or one-use power-ups.

  1. In Monetization, select Developer Products.
  2. Click Create a Developer Product.
  3. Pick an icon and write a name and description.
  4. Set the price.
  5. Choose the product type: Consumable (can buy again) or Non-Consumable (one purchase per player).
  6. Click Create.

Copy the product ID as well.

Script Game Pass Purchases

When a player buys a game pass, you detect it and give them the reward. Use MarketplaceService to handle this.

Create a new Script (not LocalScript) in ServerScriptService. This script will listen for purchases across all players.

ServerScriptService → GamePassHandler
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")

-- Replace with your actual game pass ID
local VIP_PASS_ID = 123456789

-- Function to give the reward
local function giveVIPReward(player)
    -- Add VIP tag, give them a badge, unlock features, etc.
    print(player.Name .. " bought VIP!")
    -- Example: create a value to mark them as VIP
    local vipTag = Instance.new("BoolValue")
    vipTag.Name = "IsVIP"
    vipTag.Value = true
    vipTag.Parent = player
end

-- Check if player already owns the pass on join
local function onPlayerJoin(player)
    local success, owns = pcall(function()
        return MarketplaceService:UserOwnsGamePassAsync(player.UserId, VIP_PASS_ID)
    end)
    
    if success and owns then
        giveVIPReward(player)
    elseif not success then
        print("Error checking game pass for " .. player.Name)
    end
end

-- Listen for purchase confirmation
MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(player, passId, purchased)
    if passId == VIP_PASS_ID and purchased then
        giveVIPReward(player)
    end
end)

-- Connect to existing players
Players.PlayerAdded:Connect(onPlayerJoin)