How to make a game pass on Roblox

Create the pass on the Creator Hub, script what it does, sell it from an in-game button and test it — with complete, server-safe Luau.

Updated October 23, 20268 min read

A game pass is a one-time purchase that gives a player a permanent perk in your game: VIP access, 2× cash, a special tool. It is the simplest way to earn Robux from a Roblox game. Making one has two halves — creating the pass on the Creator Hub, and scripting what it does in Studio. This guide covers both, with complete scripts.

Game pass or developer product?

Game passDeveloper product
BoughtOnce, owned foreverAny number of times
Good forVIP, 2× cash, permanent tools, extra slotsCurrency packs, revives, boosts
ScriptCheck ownership with UserOwnsGamePassAsyncMust grant in the ProcessReceipt callback

Start with passes: they are simpler to script and safer to get right. Developer products need a ProcessReceipt handler that grants the item reliably even if the server restarts mid-purchase.

Step 1: Create the pass on the Creator Hub

  1. 1

    Open your game's passes

    Go to create.roblox.com, open Creations, select your game, then Monetization → Passes and press Create pass.

  2. 2

    Upload an icon and name it

    The icon can be up to 512×512 (.png, .jpg or .bmp) and is cropped to a circle, so keep the important part in the middle. Add a name and a description that says exactly what the buyer gets, pick a category, and press Create pass.

  3. 3

    Put it on sale and set a price

    Open the pass, go to its sales settings, turn on Item for Sale and enter a price in Robux. Roblox moves these menus around from time to time; if you don't see them, check the official passes page.

  4. 4

    Copy the pass ID

    In the pass list, open the ⋯ menu on your pass and choose Copy Asset ID. You'll paste this number into the scripts below.

Step 2: Script what the pass does

Insert a Script in ServerScriptService and paste this. It checks ownership when a player joins, and also grants the perk the moment someone buys it in-game — UserOwnsGamePassAsync alone can miss a purchase made during the current session.

GamePasses.server.lua
-- ServerScriptService > GamePasses (Script)
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")

local VIP_PASS_ID = 0 -- paste your pass ID here

local function grantVip(player)
	player:SetAttribute("VIP", true)
	-- Give the perk here: a tool, a 2x multiplier, a door that opens...
end

local function checkPass(player)
	local ok, owns = pcall(function()
		return MarketplaceService:UserOwnsGamePassAsync(player.UserId, VIP_PASS_ID)
	end)
	if ok and owns then
		grantVip(player)
	end
end

-- Players who already own the pass get it when they join.
Players.PlayerAdded:Connect(checkPass)
for _, player in Players:GetPlayers() do
	task.spawn(checkPass, player)
end

-- Players who buy it during this session get it right away.
MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(player, passId, wasPurchased)
	if wasPurchased and passId == VIP_PASS_ID then
		grantVip(player)
	end
end)

The perk is stored as a VIP attribute on the player, so any other server script can check it. For example, a 2× cash pass in a tycoon is one line:

2x cash
-- In the script that pays the player (e.g. the tycoon collector):
local multiplier = owner:GetAttribute("VIP") and 2 or 1
cash.Value += value * multiplier

Step 3: A button that sells the pass

Players can buy passes from your game's Store tab, but most sales happen in-game. Add a ScreenGui named ShopGui to StarterGui, a TextButton inside it named BuyVip, and a LocalScript inside the button:

BuyVip LocalScript
-- StarterGui > ShopGui > BuyVip (TextButton) > LocalScript
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")

local VIP_PASS_ID = 0 -- the same ID as on the server

script.Parent.Activated:Connect(function()
	MarketplaceService:PromptGamePassPurchase(Players.LocalPlayer, VIP_PASS_ID)
end)

Step 4: Test the purchase

  • Press Play in Studio and click the button. The purchase window opens as a test purchase — no Robux are spent.
  • After the test purchase, check that the VIP attribute appears on your player (select it in Explorer under Players while the test runs).
  • If the window says the item is not for sale or nothing opens, check Output, the pass ID in both scripts, and that the pass is on sale.

What you earn

  • 70% of the price. Roblox keeps 30% as a marketplace fee. A 100 Robux pass earns you 70 Robux.
  • Robux arrive as pending first. Sales show as pending for a few days before you can spend or cash them out.
  • Regional pricing is on by default. Roblox may lower the price in some countries (never above your price). Show prices from the API rather than typing them into your UI.
  • Passes only sell inside their own game. Since mid-2026, other games can't sell your passes.

Earned Robux can later be exchanged for real money through DevEx, if you meet its requirements (age 13+, at least 30,000 earned Robux, a verified email and tax forms). The current rate is listed on Roblox's DevEx page.

Pass ideas that sell without ruining the game

  • 2× cash or 2× speed of progress — the classic for tycoons and simulators.
  • VIP area or chat tag — status, no gameplay advantage.
  • Extra inventory or pet slots.
  • A cosmetic trail or tool. Avoid “instant win” passes; they make the game boring for the buyer, too.

FAQ

How much do you earn from a Roblox game pass?

You receive 70% of the price in Robux; Roblox keeps 30% as a marketplace fee. The Robux are pending for a few days before you can use them.

Why doesn't my game pass work right after buying it?

UserOwnsGamePassAsync can miss a purchase made in the current session. Also listen to MarketplaceService.PromptGamePassPurchaseFinished on the server and grant the perk when wasPurchased is true.

Can I test a game pass purchase without spending Robux?

Yes. Purchases started while testing in Studio are test purchases and do not charge Robux.

What is the difference between a game pass and a developer product?

A game pass is bought once and owned forever. A developer product can be bought many times, like a currency pack, and must be granted in a ProcessReceipt callback.

Keep reading