Choose according to the promise, not the button style
A game pass represents a privilege a player should buy once, while a developer product supports repeatable purchases such as a potion, revive, or currency pack. Start with the promised behavior before choosing the payment mechanism. If the customer expects a permanent cosmetic collection, repeatedly selling the same entitlement is confusing. If an item is consumed after use, a permanent ownership flag does not describe its balance correctly. Write the benefit, duration, quantity, and restoration behavior in a product note. That note should be understandable to a player and precise enough for a programmer to test. A polished shop can contain both formats when their differences remain visible.
Compare the ongoing responsibilities
Permanent access requires checking ownership and restoring benefits across sessions. A consumable requires tracking quantities or one-time activations and accounting for every completed purchase. The first model creates maintenance obligations around an enduring entitlement; the second creates repeated fulfillment obligations. Neither is automatically easier in every project. Consider a revive: the game must decide whether it can be used now, saved for later, or converted to a stored credit if the player disconnects. Explain that behavior before purchase. Do not sell a benefit that becomes impossible to deliver because the customer moved to another stage while payment was being confirmed. Your commercial design and your state model need to describe the same outcome.
Create a useful decision table in your project notes
List each proposed offer, whether it can be bought repeatedly, where its state lives, and what happens after a rejoin. A permanent VIP badge belongs naturally beside an ownership query. A pack of one hundred coins needs a durable credited balance and a record that the corresponding receipt was handled. A temporary boost needs a defined start and end condition. Keep implementation complexity in the decision, not just expected revenue. If your first release has no reliable profile system yet, a complex consumable economy may be premature. A small deterministic catalog can teach you more about demand and delivery than several interconnected purchases whose state is difficult to reconcile.
Prompt a developer product from a clear interface action
The example below belongs in a LocalScript under a shop button and uses the player's own explicit activation to open the purchase prompt. Replace the identifier with your product. The short cooldown reduces accidental repeated prompts; it is not a security boundary. The script intentionally grants nothing. A canceled prompt, a closed window, or a client-side event must not become a reward. Keep the visible quantity and price accurate, using platform-supplied product information where your pricing setup requires it. If an item cannot currently be delivered, disable that purchase entry and explain why rather than inviting the player into a prompt you know the server cannot fulfill.
-- LocalScript under a TextButton. Prompt only; no rewards are granted here.
local Players = game:GetService("Players")
local MarketplaceService = game:GetService("MarketplaceService")
local button = script.Parent
local PRODUCT_ID = 123456789 -- Your own developer product ID.
local busy = false
button.Activated:Connect(function()
if busy then return end
busy = true
local ok = pcall(function()
MarketplaceService:PromptProductPurchase(Players.LocalPlayer, PRODUCT_ID)
end)
if not ok then warn("Purchase prompt unavailable") end
task.delay(2, function() busy = false end)
end)
-- Fulfill purchases only in the server-owned ProcessReceipt integration.Process receipts through one authoritative path
Use the server's supported receipt-processing integration for developer products. Validate the product identifier, buyer, and receipt identity, then make fulfillment idempotent: handling the same receipt again must not add another reward. Do not grant consumables from PromptProductPurchaseFinished. The server should acknowledge a receipt only after durable fulfillment has succeeded; uncertain or failed processing needs a retry-compatible result. Keep a single owner for this callback instead of letting several unrelated scripts overwrite it. A production purchase ledger must also consider record growth and recovery, not just a temporary in-memory set. This article's prompt example is deliberately separate from that persistence layer so it cannot be mistaken for complete transaction handling.
Price both formats without making play exhausting
For a permanent pass, compare the lasting benefit with the ongoing free experience. For a consumable, consider how often a player might reasonably want it and whether the game is manufacturing frustration to force that demand. Use a clear quantity and avoid implying a renewable benefit is permanent. Model net proceeds with the applicable fee and transaction context, but do not treat gross purchase counts as profit. Support, balancing, and storage incidents can grow with repeat sales. Review whether people who decline purchases still have a satisfying path through the game. A product strategy is healthier when customers choose useful additions rather than paying to escape intentionally unpleasant design.
Test interruptions before expanding the shop
Create a test matrix covering purchase cancellation, delayed confirmation, server shutdown, player departure, repeated receipt delivery, and unknown product identifiers. For passes, confirm that rejoining restores the benefit without another purchase. For consumables, confirm that a delayed receipt leads to one durable grant and a comprehensible balance. Document the expected result before testing each case. Once the small catalog behaves reliably, review player feedback and expand only where a new offer serves a distinct need. The strongest strategy often combines a few understandable permanent benefits with optional repeatable items, but the right mix depends on your game's pace and your ability to maintain trustworthy fulfillment.
Official references and current requirements
Policy details were checked on October 31, 2026. Fees, eligibility, and program rules can change; check the official requirements before publishing or requesting a payout.
