Passe no Roblox: como criar, vender e a data que muda a venda entre jogos
Passe cobra uma vez por um privilegio permanente. Este guia cobre a ordem certa de criar, os limites de preco, por que o privilegio nao e automatico e o que a documentacao oficial marcou para 30 de maio de 2026.
Produzido com IA a partir das fontes citadas abaixo, e conferido por checagens automáticas contra essas mesmas fontes. Nenhuma pessoa leu este texto antes da publicação. Política Editorial

Se o seu jogo vende um passe que é usado em outro jogo seu — ou se você monta pacotes que atravessam o seu catálogo —, existe uma data na documentação oficial da Roblox que você precisa ter olhado: 30 de maio de 2026. É o dia em que a venda de passes entre jogos foi marcada para ser desativada.
Essa data já passou. Este texto explica o que o passe é, como se cria um do jeito certo, o que a documentação diz sobre a venda entre jogos e como conferir, em código, se algum fluxo seu ainda depende disso.
O problema
A confusão começa antes da data. Passe e produto de desenvolvedor são coisas diferentes, e escolher errado custa retrabalho de loja inteira.
Segundo a documentação, o passe existe para cobrar do usuário uma taxa única em Robux por um privilégio dentro do jogo: entrada numa área restrita, um item de avatar no jogo, um poder permanente. Para o que o jogador pode comprar várias vezes — poção, poder temporário, moeda de jogo — a própria página manda usar produto de desenvolvedor.
A regra prática é a repetição, não o preço: se o mesmo jogador pode querer aquilo duas vezes, não é passe.
O segundo problema é de sequência. Antes de criar um passe é preciso que o jogo já esteja publicado e acessível na Roblox. Quem tenta montar a monetização antes de publicar trava logo no primeiro passo, e a mensagem que aparece não deixa isso óbvio.
E o terceiro é o que motivou este texto: a venda entre jogos. Se a sua arquitetura assume que um passe comprado no jogo A libera algo no jogo B, a documentação recomenda migrar para transferências de Robux antes da data marcada, justamente para não haver interrupção de serviço.
Passo a passo
O caminho oficial para criar um passe tem uma ordem fixa:
- Publique o jogo primeiro. Sem isso o passe não existe como opção.
- Vá em Creations e selecione o jogo.
- Vá em Monetization, depois Passes.
- Clique em Create pass.
- Envie a imagem do ícone. A documentação é específica: ela não pode passar de 512x512 pixels, não deve ter detalhe importante fora dos limites circulares, e precisa estar em
.jpg,.pngou.bmp. - Escreva nome e descrição.
- Escolha a categoria — é ela que organiza o item na loja dentro do jogo.
- Clique em Create pass de novo, para confirmar.
O detalhe do círculo é o que mais pega gente desprevenida: a imagem é enviada quadrada e exibida recortada. Texto encostado no canto some.
Depois de criado, você precisa do ID do passe para qualquer coisa em script. Ele sai em Monetization ⟩ Passes: passe o mouse sobre a miniatura, clique no botão de reticências e escolha Copy Asset ID.
Há ainda duas regras que valem checar antes de publicar a venda:
- Se o passe for usado como recompensa aleatória, a documentação manda revisar a política de itens virtuais randomizados antes.
- Se você usa otimização de preço, o script precisa rodar no cliente, para que cada usuário veja o preço personalizado dele.
Esse segundo ponto é fácil de errar de um jeito silencioso: um script de servidor buscando preço mostra o mesmo número para todo mundo, e você não descobre olhando o seu próprio jogo.
Vender fora do jogo
Dá para vender o passe também na aba Store da página do jogo, e o caminho é outro: em Monetization ⟩ Passes, passe o mouse sobre o passe, abra o menu de reticências, selecione o passe, vá em Sales e ligue o botão Item for Sale. Depois é preencher o preço em Robux e salvar.
O preço tem limites definidos: o mínimo é 1 Robux e o máximo é 1 bilhão de Robux. E o valor que você digita afeta diretamente quanto de Robux você recebe por venda — não é um número decorativo.
O privilégio não é automático
Esta é a parte que mais surpreende quem está montando a primeira loja: comprar o passe não dá nada ao jogador por si só. A documentação é direta — você precisa atribuir manualmente os privilégios do passe a quem comprou.
O caminho recomendado é usar PlayerAdded quando o jogador entra no jogo, verificar se ele já possui o passe e então conceder o que o passe promete. E há uma instrução de lugar: o script fica em ServerScriptService, para que o servidor cuide dos privilégios — não o cliente.
Para o momento da compra existe o evento PromptGamePassPurchaseFinished, que avisa quando o fluxo terminou e se deu certo. É nele que você concede o privilégio a quem acabou de comprar, sem esperar o jogador sair e voltar.
O histórico é seu problema
Um detalhe que a documentação declara e quase ninguém lê: a Roblox não registra o histórico de compras de passes por usuário específico. Você pode solicitar o download dos dados de vendas, mas se quiser saber quem comprou o quê e quando, guardar isso é responsabilidade sua.
Quem descobre isso tarde geralmente descobre no pior momento: quando um jogador reclama que pagou e não recebeu, e não há de onde tirar a resposta.
Artefato
O script abaixo faz duas coisas: lê a informação do passe pelo caminho oficial e mostra o preço. Ele existe para você confirmar, no seu jogo, que o ID está certo e que o passe está à venda — antes de amarrar qualquer lógica nele.
Dois pontos que a documentação marca e que o script respeita: a chamada é GetProductInfo, e o segundo parâmetro para passe precisa ser Enum.InfoType.GamePass. Trocar isso por outro tipo devolve dados de outra coisa, ou nada.
O pcall não é zelo: a chamada vai à rede e pode falhar por motivos que não têm relação com o seu código.
Erro comum
O erro mais caro aqui não é de sintaxe — é de arquitetura, e ele só aparece quando já está em produção.
Supor que o passe atravessa jogos. Se o seu jogo A vende um passe que o jogo B consulta, esse é exatamente o desenho que a documentação marcou para desativar em 30 de maio de 2026, recomendando integrar transferências de Robux antes da data para evitar interrupção. Se você montou isso e nunca voltou a olhar, o momento de conferir é agora, não quando um jogador abrir um tíquete.
O segundo erro é confundir o tipo do item. Um passe vendido onde deveria haver produto de desenvolvedor não quebra: ele simplesmente limita a receita, porque o jogador que compraria cinco vezes compra uma só. Isso não aparece em log de erro nenhum — aparece no gráfico de receita, meses depois, como um número que nunca cresce.
O terceiro é o da otimização de preço rodando no servidor. O preço exibido fica igual para todos, a personalização não acontece, e como o jogo funciona, ninguém investiga.
E o quarto é o ícone: enviar uma arte retangular com o nome do passe escrito na borda. O recorte circular corta o texto, e o que sobra na loja é uma imagem sem identificação.
Há ainda um quinto, e é o que gera tíquete de suporte: colocar a concessão do privilégio no cliente em vez do servidor. A documentação pede o script em ServerScriptService justamente porque quem decide o que o jogador ganhou não pode ser a máquina do jogador. Funciona nos testes, e some no primeiro jogador que recarrega a página.
O sexto é não guardar nada. Como o histórico por usuário não existe do lado da Roblox, um jogo sem registro próprio não tem como responder "esse jogador comprou?" seis meses depois — e a resposta padrão vira devolver o benefício por educação, o que é uma política cara.
Próximo passo
Se você tem passes publicados, faça esta varredura, nesta ordem:
- Liste os passes que outro jogo seu consulta. Qualquer verificação de posse feita fora do jogo que vendeu o passe entra na lista.
- Para cada um, decida o substituto. A recomendação da própria documentação é transferência de Robux.
- Confira o tipo de cada item. Passe para compra única, produto de desenvolvedor para o que se compra de novo.
- Rode o script acima com cada ID. Ele responde em uma execução se o ID está certo e se o item está à venda.
Se você ainda vai criar o primeiro passe, comece pela ordem certa: publicar o jogo, criar o passe, copiar o ID e só então escrever a lógica. A tentação de escrever o script primeiro é grande, e o ID que falta é o que faz perder a tarde.
Para o que se compra mais de uma vez, a página de produtos de desenvolvedor é o lugar de continuar — e a decisão entre os dois formatos, feita antes de montar a loja, é a que evita refazer tudo depois.
Fontes
- Passes | Documentation - Roblox Creator Hub — consultada em
Artefato pronto pra usar
-- ServerScriptService: o servidor decide o que o jogador ganhou, nunca o cliente.
-- Cobre os dois momentos: quem JA tinha o passe ao entrar, e quem compra agora.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local PASS_ID = 0000000 -- troque pelo ID do seu passe (Copy Asset ID)
local function concederPrivilegio(player)
-- ponha aqui o que o passe promete: velocidade, area, item.
-- e o UNICO lugar que concede, para nao haver duas verdades.
local humanoid = player.Character and player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = 32
end
end
local function jogadorTemOPasse(player)
local ok, tem = pcall(function()
return MarketplaceService:UserOwnsGamePassAsync(player.UserId, PASS_ID)
end)
if not ok then
-- chamada de rede falha por motivo que nao e o seu codigo.
-- negar em silencio e pior que avisar: registre e siga.
warn("falha ao checar o passe de " .. player.Name .. ": " .. tostring(tem))
return false
end
return tem
end
Players.PlayerAdded:Connect(function(player)
if jogadorTemOPasse(player) then
concederPrivilegio(player)
end
player.CharacterAdded:Connect(function()
-- o personagem renasce e o privilegio some com ele: reaplique.
if jogadorTemOPasse(player) then
concederPrivilegio(player)
end
end)
end)
MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(player, passId, comprou)
if comprou and passId == PASS_ID then
concederPrivilegio(player)
-- o historico por usuario NAO existe do lado da Roblox:
-- se voce precisa saber quem comprou, grave aqui.
end
end)


