Assinaturas dentro das experiências permitem que você ofereça aos usuários benefícios recorrentes por uma taxa mensal. Assinaturas são semelhantes a passes, mas enquanto os benefícios de um passe são concedidos indefinidamente, os benefícios de uma assinatura são contingentes ao pagamento mensal pelo usuário.
As assinaturas no Roblox possuem as seguintes características:
- Renovação automática: As assinaturas são renovadas automaticamente, não são compras únicas, e podem ser precificadas em moeda local ou Robux.
- Pagamento em Robux: Independentemente de uma assinatura ser comprada em moeda local ou Robux, você recebe a receita da assinatura em Robux. Para mais detalhes, veja Ganhe com assinaturas.
- De um único nível: Todas as assinaturas dentro de uma experiência podem ser possuídas por usuários simultaneamente. Assinaturas mutuamente exclusivas não são suportadas.
- Precificação regional: Precificação Regional está habilitada por padrão para assinaturas vendidas em Robux e não pode ser desativada. A Precificação Regional não está disponível para assinaturas vendidas em moeda local.
Diretrizes de Assinatura
Antes de criar suas assinaturas, assegure-se de que elas estão alinhadas com os Termos de Uso do Roblox e estão em conformidade com as leis locais. Qualquer experiência que envolva fraudes, tente enganar os usuários com ofertas falsas ou viole nossos Padrões da Comunidade será removida.
Você também deve garantir que suas assinaturas sigam estas diretrizes:
- Forneça opções de assinatura claras e distintas: Use nomes curtos, sucintos e autoexplicativos que diferenciem as opções de assinatura. Especifique o preço e a duração de cada opção ao comercializar dentro da experiência.
- Ofereça os mesmos benefícios em todas as plataformas e dispositivos: Independentemente de onde a assinatura foi comprada, assegure-se de que o usuário receba os mesmos benefícios para qualquer plano de assinatura.
- Projete assinaturas que se encaixem umas nas outras e nas ofertas gerais da experiência: O escalonamento do mesmo conjunto de benefícios, como oferecer níveis "Bronze", "Silver" e "Gold" que são mutuamente exclusivos, não está disponível atualmente. Assegure-se de que as assinaturas representem conjuntos distintos de benefícios.
- Ofereça os benefícios por toda a duração da assinatura: Uma vez que uma oferta de assinatura está ativa, cumpra os benefícios descritos e não revogue benefícios nos bastidores.
- Não direcione usuários a comprar em outra plataforma (como mobile, web, etc.) dentro da experiência: Embora você esteja livre para se comunicar com usuários fora da plataforma, usar o aplicativo Roblox para direcionar usuários a comprar em outro lugar é proibido.
- Não condicione os benefícios da assinatura a requisitos adicionais uma vez que um usuário pagou: Exigir que um usuário realize tarefas adicionais, como postar em mídias sociais, para obter acesso aos benefícios pelos quais pagou é proibido. Esta diretriz não impacta passes de batalha, que você pode criar e comercializar como uma compra de assinatura.
Robux vs moeda local
As assinaturas podem ser precificadas em Robux ou moeda local. A tabela a seguir compara os dois formatos de pagamento.
| Robux | Moeda local | |
|---|---|---|
| Elegibilidade | Todos os criadores | Requer uma conta verificada por ID ou número de telefone |
| Plataformas | Disponível em todas as plataformas | Disponível na Web, App Store e Google Play |
| Países | Disponível em todos os países que suportam Roblox | Indisponível na Argentina, China, Colômbia, Índia, Indonésia, Japão, Rússia, Taiwan, Türkiye (Turquia), UAE, Ucrânia e Vietnã |
| Preço | Qualquer valor igual ou superior a 49 Robux | $2.99, $4.99, $7.99, $9.99 ou $14.99 |
| Precificação regional | Habilitada por padrão | Indisponível |
| Pagamentos | 70% dos ganhos de assinatura a cada mês | 70% no primeiro mês, depois 100% nos meses subsequentes |
Criar assinaturas
Para criar uma assinatura:
- Clique em Criar Assinatura.
- Carregue uma imagem de capa.
- Digite um nome que seja único. Você não pode ter duas assinaturas com o mesmo nome na mesma experiência.
- Insira uma descrição que descreva claramente os benefícios que você está oferecendo.
- Selecione uma das seguintes opções de pagamento:
- Assinantes pagam em Robux: Cobra dos usuários a taxa de assinatura recorrente em Robux. Se você selecionar esta opção, deve inserir um preço personalizado maior ou igual a 49 Robux. Precificação Regional é habilitada por padrão para a assinatura e não pode ser desativada.
- Assinantes pagam em moeda local: Cobra dos usuários a taxa de assinatura recorrente em sua moeda local. Se você selecionar esta opção, deve escolher um preço de assinatura dentre os 5 níveis de preço disponíveis.
- Selecione um dos seguintes tipos de produto:
- Durável: Itens permanentes que persistem após uso ou aquisição, como itens físicos como armas. Se uma assinatura incluir um pacote de diferentes tipos de bens, com um ou mais deles sendo duráveis, como um pacote de valor com uma espada e uma poção, escolha Durável como o tipo de produto.
- Consumível: Itens temporários re-compraíveis que expiram após uso ou aquisição, como poções consumíveis que concedem impulsos temporários que expiram com o tempo.
- Moeda: Qualquer meio de troca que os usuários possam usar para comprar itens dentro de sua experiência.
- Clique em Criar Assinatura.
Ativar assinaturas
Você pode ter até 50 assinaturas por experiência entre assinaturas ativas e inativas.
Para colocar uma assinatura à venda, clique em ⋮ ao lado da assinatura que você deseja ativar e selecione Ativar. Assinaturas ativas estão automaticamente disponíveis para venda na guia Loja da página de detalhes da experiência e podem ser adicionadas à sua experiência através das funções MarketplaceService.
Antes de ativar sua assinatura pela primeira vez, você deve confirmar uma versão encurtada do nome da sua experiência. Este nome encurtado da experiência é exibido ao usuário quando ele se inscreve e aparece ao lado do nome da assinatura que você criou em Criar assinaturas.
Estados da assinatura
As assinaturas têm dois estados possíveis:
- Ativo: Assinaturas ativas estão disponíveis para venda, com assinantes podendo renovar sua assinatura no início do próximo período.
- Inativo: Assinaturas inativas não estão disponíveis para venda.
Para alterar o estado de uma assinatura, clique em ⋯ no canto superior direito do bloco de assinatura e selecione Ativar (se a assinatura estiver atualmente inativa) ou Retirar da Venda (se a assinatura estiver atualmente ativa).
Se você selecionar Retirar da Venda, será oferecida a opção de permitir que assinantes existentes renovem sua assinatura ou cancelar renovações futuras para assinantes atuais. Se você não planeja remover permanentemente os benefícios associados à assinatura de sua experiência, recomendamos que você permita que assinantes existentes renovem sua assinatura.
Editar assinaturas
Os campos que você pode editar dependem do método de pagamento.
| Campo editável | Assinaturas vendidas em Robux | Assinaturas vendidas em moeda local |
|---|---|---|
| Imagem de capa | Sim | Sim |
| Nome | Não | Não |
| Descrição | Sim | Sim |
| Método de pagamento | Sim (pode alternar para moeda local) | Sim (pode alternar para Robux) |
| Preço | Sim (uma vez a cada 60 dias) | Não |
| Tipo de produto | Não | Não |
| Estado ativo | Sim | Sim |
Alterar o método de pagamento afeta apenas novas assinaturas. Assinantes existentes permanecem em seu método de pagamento original e devem cancelar e reinscrever para alterar.
Deletar assinaturas
Para deletar uma assinatura, clique em ⋮ ao lado da assinatura que você deseja deletar e selecione Deletar.
Deletar uma assinatura ativa resulta em reembolsos completos para assinantes ativos e zero Robux para você. Na maioria das situações, se você deseja deletar uma assinatura, recomendamos que você a retire da venda primeiro, selecione a opção de cancelar todas as renovações e aguarde o término do período atual.
Deletar uma assinatura requer os últimos quatro dígitos do ID da assinatura para confirmação.
Integrar assinaturas em uma experiência
Verificar o status da assinatura de um usuário
O seguinte exemplo de código implementa a detecção de assinatura em sua experiência:
-- Execute este código no servidor
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- Substitua pelo ID da sua assinatura
local function grantAward(player: Player)
-- Você deve conceder o prêmio associado à assinatura aqui
end
local function revokeAwardIfGranted(player: Player)
-- Este método é chamado para cada jogador que NÃO possui a assinatura
-- Se seu código salva assinaturas em Data Stores ou fornece algum benefício que precisa ser 'revogado'
-- você deve usar este método para gerenciar a revogação
end
local function checkSubStatus(player)
local success, response = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
warn(`Erro ao verificar se o jogador possui assinatura: {response}`)
return
end
if response.IsSubscribed then
grantAward(player)
else
revokeAwardIfGranted(player)
end
end
local function onUserSubscriptionStatusChanged(player: Player, subscriptionId: string)
if subscriptionId == SUBSCRIPTION_ID then
checkSubStatus(player)
end
end
Players.PlayerAdded:Connect(checkSubStatus)
Players.UserSubscriptionStatusChanged:Connect(onUserSubscriptionStatusChanged)
Substituir um passe por uma assinatura
Uma opção para lançar assinaturas em sua experiência é substituir um passe existente por uma assinatura. Esta é uma ótima opção se você deseja implementar rapidamente assinaturas sem adicionar novos recursos ou prêmios.
Ao substituir um passe por uma assinatura, tenha em mente o seguinte:
- Qualquer titular existente do passe deve continuar a receber o benefício pelo qual pagou.
- O passe deve ser retirado da venda para que novos usuários possam comprar a assinatura em vez disso.
- As assinaturas podem ser revogadas, o que significa que se seu passe anteriormente persistiu seus benefícios a um Data Store, você precisa "desfazer" esses benefícios. Essa consideração não se aplica a todas as implementações de passe, mas pode se aplicar a implementações mais complexas.
O seguinte exemplo de código substitui um passe por uma assinatura:
-- Execute este código no servidor
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local LEGACY_GAME_PASS_ID = 1234 -- Substitua pelo ID do passe que está sendo substituído por uma assinatura
local SUBSCRIPTION_ID = "EXP-11111111" -- Substitua pelo ID da sua assinatura
local function awardBenefit(player: Player)
-- Você deve conceder a assinatura aqui
end
local function revokeBenefitIfGranted(player: Player)
-- Este método é chamado para cada jogador que NÃO possui a assinatura
-- Se seu código salva assinaturas em Data Stores ou fornece algum benefício que precisa ser 'revogado'
-- você deve usar este método para gerenciar a revogação
end
local function checkSubscriptionStatus(player: Player)
local success, result = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
print(`Erro ao buscar status da assinatura: {result}`)
return
end
if result.IsSubscribed then
awardBenefit(player)
else
revokeBenefitIfGranted(player)
end
end
local function onPlayerAdded(player: Player)
local success, result = pcall(function()
return MarketplaceService:UserOwnsGamePassAsync(player.UserId, LEGACY_GAME_PASS_ID)
end)
if not success then
print(`Erro ao buscar status do passe: {result}`)
return
end
if result then
-- Se o jogador comprou o passe legado, não precisamos verificar seu status de assinatura
-- pois eles têm o benefício concedido por toda a vida
awardBenefit(player)
return
end
checkSubscriptionStatus(player)
end
local function onUserSubscriptionStatusChanged(player: Player, subscriptionId: string)
if subscriptionId == SUBSCRIPTION_ID then
checkSubscriptionStatus(player)
end
end
local function onPromptGamePassPurchaseFinished(player: Player, purchasedPassID: number, purchaseSuccess: boolean)
if purchaseSuccess and purchasedPassID == LEGACY_GAME_PASS_ID then
awardBenefit(player)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players.UserSubscriptionStatusChanged:Connect(onUserSubscriptionStatusChanged)
-- Continuaremos ouvindo por compras de passe, caso o passe ainda esteja à venda
MarketplaceService.PromptGamePassPurchaseFinished:Connect(onPromptGamePassPurchaseFinished)
Solicitar compras de assinatura
Os usuários podem comprar assinaturas diretamente na guia Loja da página de detalhes da sua experiência, mas você também deve adicionar uma maneira para eles adquirirem assinaturas dentro do jogo.
Quando você solicitar uma compra de assinatura, UserSubscriptionStatusChanged é acionado se o jogador já possui a assinatura, o que ajuda a capturar cenários onde um jogador compra uma assinatura na guia Loja da página de detalhes da sua experiência enquanto já está em jogo.
Embora você possa solicitar uma compra de assinatura a partir do cliente, verificar se um usuário já possui uma assinatura com GetUserSubscriptionStatusAsync deve ser feito a partir do servidor.
O seguinte exemplo de código cria uma RemoteFunction que o cliente pode usar para solicitar o status de uma assinatura:
--Este código deve ser executado no servidor
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Crie uma RemoteFunction que o cliente pode usar para solicitar o status da assinatura
local getSubscriptionStatusRemote = Instance.new("RemoteFunction")
getSubscriptionStatusRemote.Name = "GetSubscriptionStatus"
getSubscriptionStatusRemote.Parent = ReplicatedStorage
getSubscriptionStatusRemote.OnServerInvoke = function(player: Player, subscriptionId: string)
assert(typeof(subscriptionId) == "string")
return MarketplaceService:GetUserSubscriptionStatusAsync(player, subscriptionId)
end
-- Este código deve ser executado no cliente
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- Substitua pelo ID da sua assinatura
local getSubscriptionStatusRemote = ReplicatedStorage:WaitForChild("GetSubscriptionStatus")
local purchaseSubscriptionButton = script.Parent.PromptPurchaseSubscription -- Substitua pelo seu botão
local function playerHasSubscription()
-- Nota: se sua assinatura estiver substituindo um passe, você precisará verificar se o passe é possuído aqui também
local success, result = pcall(function()
return getSubscriptionStatusRemote:InvokeServer(SUBSCRIPTION_ID)
end)
if not success then
print(`Erro ao buscar status da assinatura: {result}`)
return
end
return result.IsSubscribed
end
-- Esconde o botão se o jogador já tiver a assinatura
local function hideButtonIfPlayerHasSubscription()
if playerHasSubscription() then
purchaseSubscriptionButton.Visible = false
end
end
local function onPromptSubscriptionPurchaseFinished(player: Player, subscriptionId: string, didTryPurchasing: boolean)
if didTryPurchasing then
-- Pode levar um tempo para que a assinatura seja registrada, então verificaremos se a compra foi concluída em 10 segundos
-- e esconderemos o botão se isso ocorreu
task.delay(10, hideButtonIfPlayerHasSubscription)
end
end
-- Se o jogador já possui a assinatura, não queremos mostrar o botão
hideButtonIfPlayerHasSubscription()
purchaseSubscriptionButton.Activated:Connect(function()
MarketplaceService:PromptSubscriptionPurchase(Players.LocalPlayer, SUBSCRIPTION_ID)
-- Se o jogador já tem a assinatura, esconda o botão
hideButtonIfPlayerHasSubscription()
end)
MarketplaceService.PromptSubscriptionPurchaseFinished:Connect(onPromptSubscriptionPurchaseFinished)
Outras funções relevantes
Outras funções relevantes disponíveis em MarketplaceService são:
- GetSubscriptionProductInfoAsync, que retorna as informações sobre o produto de uma assinatura. Inclui se a assinatura está precificada em Robux ou moeda local.
- GetUserSubscriptionPaymentHistoryAsync, que retorna o histórico de pagamento da assinatura de um usuário.
- GetUserSubscriptionStatusAsync, que retorna o status da assinatura de um usuário.
Ganhe com assinaturas
Para assinaturas precificadas em moeda local, você ganha Robux a uma taxa de US $0.01 a 1 Robux de acordo com o preço base da plataforma que você selecionou, após as taxas da plataforma. Você ganha 70% do valor da assinatura no primeiro mês, e 100% a partir do segundo mês. Essa divisão de receita é consistente em todas as plataformas.
Por exemplo, se sua assinatura mensal é precificada em USD $5:
- Primeiro mês: Você ganha 350 Robux (500 * 0.7 = 350)
- A partir do segundo mês: Você ganha o valor total de 500 Robux (500 * 1.0 = 500)
Para assinaturas precificadas em Robux, você ganha 70% do valor da assinatura a cada mês. Essa divisão de receita é consistente em todas as plataformas.
Por exemplo, se sua assinatura mensal é precificada em 500 Robux:
- Primeiro mês: Você ganha 350 Robux (500 * 0.7 = 350)
- A partir do segundo mês: Você continua a ganhar 350 Robux (500 * 0.7 = 350)
Os ganhos de assinaturas em moeda local estão sujeitos a um período de retenção de 30 dias e serão adicionados ao seu saldo de Robux após a plena entrega da duração da assinatura.
Os ganhos de assinaturas em Robux seguem o mesmo período de retenção que passes e produtos de desenvolvedor, que é de aproximadamente 5 dias.
Reembolsos
Para assinaturas em moeda local, se um usuário solicitar um reembolso através de seu banco ou loja de aplicativos dentro do período de retenção de 30 dias, a retenção será cancelada e você não receberá o pagamento por essa transação.
Reembolsos recebidos fora da janela de retenção resultarão na dedução do valor do pagamento da transação reembolsada do seu saldo de Robux. Se sua experiência é de propriedade de um Grupo e o saldo do Grupo é inferior ao valor a ser deduzido, o restante será deduzido do saldo de Robux do Proprietário do Grupo.
Quando os usuários cancelam ou não renovam suas assinaturas ativas, eles não recebem automaticamente reembolsos. Eles devem solicitar reembolsos manualmente, que são tratados caso a caso. Para mais informações sobre o processo de reembolso de assinatura do usuário, confira o central de ajuda.
Pagamentos
Você pode encontrar seus pagamentos de assinatura em Saldo de Robux ⟩ Minhas Transações.
Pagamentos de Assinatura e Assinatura do Grupo aparecem sob Incoming Robux, enquanto reembolsos são agrupados sob Outgoing Robux como uma Reversão de Pagamento. As subpáginas de assinaturas e assinaturas de grupo fornecem informações adicionais para suas respectivas categorias.

Para visualizar informações de reembolso para usuários individuais, use GetUserSubscriptionPaymentHistoryAsync.
Análise de Assinaturas
Análise de Assinaturas ajuda você a avaliar o sucesso de assinaturas individuais, identificar tendências e prever potenciais ganhos futuros. As assinaturas são adicionadas à página de análise de assinaturas após a primeira vez que são ativadas e não são removidas quando são desativadas ou deletadas. Você pode acessar análises prontas através do Painel do Criador, ou você pode capturar atualizações de assinatura em tempo real usando webhooks.
Através do Painel do Criador
Para acessar a análise de assinaturas no Painel do Criador:
- Vá até sua página de Criações no Painel do Criador e selecione sua experiência.
- Vá para Monetização ⟩ Assinaturas.
- Selecione a aba Análise.
A análise de assinaturas rastreia os seguintes métricas:
- Assinaturas: O total de assinaturas ativas em sua experiência.
- Receita estimada: A receita líquida obtida pelas experiências após taxas. Não inclui informações de reembolso.
- Divisão de assinantes: Os diferentes tipos de assinantes.
- Novos: O número de compras de assinatura por assinantes de primeira viagem.
- Renovadas: O número de assinaturas renovadas compradas em um período anterior.
- Ressuscitadas: O número de novas assinaturas compradas por usuários que tinham cancelado anteriormente.
- Cancelamentos: O número de assinaturas que não foram renovadas. Isso inclui todos os cancelamentos, independentemente do gatilho, seja cancelamento do usuário, desativação da assinatura pelo criador ou por outros meios.
- Cancelamentos são diferentes de reembolsos. Assinaturas canceladas são assinaturas que não renovam mais, mas são pagas integralmente pelo restante do ciclo de cobrança, enquanto reembolsos retornam o valor da assinatura paga ao usuário.
- Assinaturas por plataforma: O número de assinaturas compradas em cada plataforma.
- Ganhos por plataforma: A receita líquida obtida através de assinaturas compradas em cada plataforma.
Essa informação é visível na forma de gráficos baseados em um intervalo de datas na aba Tendências, e como uma lista abrangente de total de assinaturas oferecidas na aba Histórico.

Através de webhooks
O recurso Cloud API Webhook inclui gatilhos para quatro eventos de assinatura: cancelado, comprado, reembolsado e renovado. Essas notificações são acionadas imediatamente, permitindo que você responda em tempo real ou crie suas próprias análises personalizadas. Para mais informações sobre como configurar um webhook, veja Notificações de Webhook.