Assinaturas dentro dos jogos permitem que você ofereça benefícios recorrentes aos usuários por uma taxa mensal. As assinaturas são semelhantes aos passes, mas enquanto os benefícios de um passe são concedidos indefinidamente, os benefícios de uma assinatura são condicionais ao pagamento da taxa mensal pelo usuário.
As assinaturas no Roblox têm as seguintes características:
- Renovação automática: As assinaturas são renovadas automaticamente, não são compras únicas, e podem ter preços em moeda local ou Robux.
- Pagamento em Robux: Seja uma assinatura comprada em moeda local ou Robux, você recebe a receita da assinatura em Robux. Para mais detalhes, consulte Ganhe com assinaturas.
- Única camada: Todas as assinaturas dentro de um jogo podem ser possuídas por usuários simultaneamente. Assinaturas mutuamente exclusivas não são suportadas.
- Preços regionais: Preços regionais estão habilitados por padrão para assinaturas vendidas em Robux e não podem ser desativados. Preços regionais não estão disponíveis para assinaturas vendidas em moeda local.
Diretrizes para assinaturas
Antes de criar suas assinaturas, certifique-se de que elas estejam alinhadas com os Termos de Uso do Roblox e em conformidade com as leis locais. Qualquer jogo que participar de fraudes, tentar enganar usuários com ofertas falsas ou de alguma forma violar nossos Padrões da Comunidade será removido.
Você também deve garantir que suas assinaturas sigam estas diretrizes:
- Forneça opções de assinatura claras e distinguíveis: Use nomes curtos, sucintos e autoexplicativos que diferenciem as opções de assinatura umas das outras. Especifique o preço e a duração de cada opção ao comercializar no jogo.
- Ofereça os mesmos benefícios em todas as plataformas e dispositivos: Independentemente de onde a assinatura foi comprada, certifique-se de que o usuário receba os mesmos benefícios para qualquer plano de assinatura.
- Projete assinaturas para se encaixar entre si e na oferta geral do jogo: Não está atualmente disponível a criação de níveis mutuamente exclusivos da mesma suíte de benefícios, como oferecer níveis "Bronze", "Silver" e "Gold". Certifique-se de que as assinaturas representam 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, honre os benefícios descritos e não revogue benefícios por trás das cenas.
- Não direcione usuários para comprar em outra plataforma (como mobile, web, etc.) dentro do jogo: Embora você esteja livre para se comunicar com os usuários fora da plataforma, usar o aplicativo Roblox para direcionar usuários a compras em outros lugares é proibido.
- Não condicione os benefícios da assinatura a requisitos adicionais uma vez que o usuário pagou: Exigir que um usuário realize tarefas adicionais, como postar em redes sociais, para obter acesso aos benefícios pelos quais pagou é proibido. Esta diretriz não impacta passes de batalha, os quais você pode tanto criar quanto comercializar como uma compra de assinatura.
Robux vs moeda local
As assinaturas podem ter preços em Robux ou moeda local. A tabela a seguir compara as duas opções 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 |
| Preços Regionais | Habilitado por padrão | Indisponível |
| Pagamentos | 70% dos ganhos da 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.
- Faça upload de uma imagem de capa.
- Insira um nome que seja único. Você não pode ter duas assinaturas com o mesmo nome no mesmo jogo.
- Insira uma descrição que descreva claramente os benefícios que você está oferecendo.
- Selecione uma das seguintes opções de pagamento:
- Assinantes pagam Robux: Cobre 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. Preços Regionais estão habilitados por padrão para a assinatura e não podem ser desativados.
- Assinantes pagam moeda local: Cobre dos usuários a taxa de assinatura recorrente na moeda local deles. Se você selecionar esta opção, deve escolher um preço de assinatura entre os 5 níveis de preço disponíveis.
- Selecione um dos seguintes tipos de produto:
- Durável: Itens permanentes que persistem após o 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 duráveis, como um pacote de valor com uma espada e uma poção, escolha Durável como tipo de produto.
- Consumível: Itens temporários que podem ser comprados novamente e que expiram após uso ou aquisição, como poções consumíveis que concedem aumentos temporários que expiram com o tempo.
- Moeda: Qualquer meio de troca que os usuários possam usar para comprar itens dentro do seu jogo.
- Clique em Criar Assinatura.
Ativar assinaturas
Você pode ter até 50 assinaturas por jogo, entre ativas e inativas.
Para colocar uma assinatura à venda, clique em ⋮ ao lado da assinatura que você deseja ativar e selecione Ativar. As assinaturas ativas estão automaticamente disponíveis para venda na aba Loja da página de detalhes do jogo, e podem ser adicionadas ao seu jogo através das funções MarketplaceService.
Antes de ativar sua assinatura pela primeira vez, você deve confirmar uma versão abreviada do nome do seu jogo. Este nome abreviado do jogo é exibido ao usuário quando ele assina e aparece ao lado do nome da assinatura que você criou em Criar assinaturas.
Estados da Assinatura
As assinaturas podem ter dois estados possíveis:
- Ativa: Assinaturas ativas estão disponíveis para venda, com assinantes podendo renovar sua assinatura no início do próximo período.
- Inativa: Assinaturas inativas não estão disponíveis para venda.
Para mudar o estado de uma assinatura, clique em ⋯ no canto superior direito do bloco da 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, você receberá a opção de permitir que assinantes existentes renovem sua assinatura, ou cancelar renovações futuras para os assinantes atuais. Se você não planeja remover permanentemente os benefícios associados da sua assinatura do jogo, recomendamos que você deixe os assinantes existentes renovarem 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 mudar para moeda local) | Sim (pode mudar para Robux) |
| Preço | Sim (uma vez a cada 60 dias) | Não |
| Tipo de produto | Não | Não |
| Estado ativo | Sim | Sim |
Mudar o método de pagamento só afeta novas assinaturas. Assinantes existentes permanecem no seu método de pagamento original e devem cancelar e se reinscrever para mudar.
Excluir assinaturas
Para excluir uma assinatura, clique em ⋮ ao lado da assinatura que você deseja excluir e selecione Excluir.
Excluir uma assinatura ativa resulta em reembolsos totais para os assinantes ativos e zero Robux para você. Na maioria das situações, se você deseja excluir 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.
Excluir uma assinatura requer os últimos quatro dígitos do ID da assinatura para confirmação.
Integrar assinaturas em um jogo
Verificar o status de assinatura de um usuário
O seguinte exemplo de código implementa a detecção de assinatura em seu jogo:
-- 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 a recompensa associada à assinatura aqui
end
local function revokeAwardIfGranted(player: Player)
-- Este método é chamado para cada jogador que _não_ tem a assinatura
-- Se seu código salva assinaturas em Armazenamento de Dados ou fornece algum benefício que precisa ser 'revogado'
-- você deve usar este método para lidar com 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 tem a 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 implementar assinaturas em seu jogo é substituir um passe existente por uma assinatura. Esta é uma ótima opção se você deseja implementar rapidamente assinaturas sem adicionar novos recursos ou recompensas.
Ao substituir um passe por uma assinatura, tenha em mente o seguinte:
- Todos os titulares existentes do passe devem continuar a receber o benefício pelo qual pagaram.
- O passe deve ser retirado da venda para que novos usuários possam comprar a assinatura em vez disso.
- Assinaturas podem ser revogadas, o que significa que se seu passe anteriormente persistia seus benefícios em um armazenamento de dados, 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 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_ tem a assinatura
-- Se seu código salva assinaturas em Armazenamento de Dados ou fornece algum benefício que precisa ser 'revogado'
-- você deve usar este método para lidar com 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 o status da assinatura deles
-- 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 a ouvir compras de passes caso o passe ainda esteja à venda
MarketplaceService.PromptGamePassPurchaseFinished:Connect(onPromptGamePassPurchaseFinished)
Solicitar compras de assinatura
Os usuários podem comprar assinaturas diretamente na aba Loja da página de detalhes do seu jogo, mas você também deve adicionar uma forma para eles comprarem 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 aba Loja da página de detalhes do seu jogo enquanto já está no jogo.
Embora você possa solicitar uma compra de assinatura 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()
-- Note que 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 demorar um pouco para a assinatura ser registrada, então verificaremos se a compra concluiu em 10 segundos
-- e esconderemos o botão se isso acontecer
task.delay(10, hideButtonIfPlayerHasSubscription)
end
end
-- Se o jogador já tiver a assinatura, não queremos mostrar o botão
hideButtonIfPlayerHasSubscription()
purchaseSubscriptionButton.Activated:Connect(function()
MarketplaceService:PromptSubscriptionPurchase(Players.LocalPlayer, SUBSCRIPTION_ID)
-- Se o jogador já tiver 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 do produto de uma assinatura. Inclui se a assinatura está com preço em Robux ou moeda local.
- GetUserSubscriptionPaymentHistoryAsync, que retorna o histórico de pagamentos de assinaturas de um usuário.
- GetUserSubscriptionStatusAsync, que retorna o status da assinatura de um usuário.
Ganhe com assinaturas
Para assinaturas com preço 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 estiver com preço de USD $5:
- Primeiro mês: Você ganha 350 Robux (500 * 0.7 = 350)
- Segundo mês em diante: Você ganha o valor total de 500 Robux (500 * 1.0 = 500)
Para assinaturas com preço 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 estiver com preço de 500 Robux:
- Primeiro mês: Você ganha 350 Robux (500 * 0.7 = 350)
- Segundo mês em diante: Você continua ganhando 350 Robux (500 * 0.7 = 350)
Os ganhos de assinaturas em moeda local estão sujeitos a um período de espera de 30 dias e serão adicionados ao seu saldo de Robux após o término total da assinatura ter sido entregue.
Os ganhos de assinaturas em Robux seguem o mesmo período de espera 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 espera de 30 dias, a espera será cancelada e você não receberá o pagamento por essa transação.
Reembolsos recebidos fora da janela de espera resultarão na dedução do montante de pagamento da transação reembolsada do seu saldo de Robux. Se seu jogo for propriedade de um Grupo e o saldo do Grupo for menor que o montante a ser deduzido, o restante será deduzido do saldo de Robux do Proprietário do Grupo.
Quando os usuários cancelam ou falham em renovar 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 assinaturas de usuários, confira o centro de ajuda.
Pagamentos
Você pode encontrar seus pagamentos de assinatura em Saldo em Robux ⟩ Minhas Transações.
Os pagamentos de Assinatura e Assinatura de Grupo aparecem sob Robux de Entrada, enquanto os reembolsos são agrupados sob Robux de Saída como um 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 sobre reembolsos para usuários individuais, utilize GetUserSubscriptionPaymentHistoryAsync.
Análise de Assinaturas
Análise de assinaturas ajuda você a avaliar o sucesso de assinaturas individuais, identificar tendências e prever ganhos potenciais futuros. As assinaturas são adicionadas à página de análise de assinaturas após serem ativadas pela primeira vez e não são removidas quando desativadas ou excluídas. Você pode acessar análises prontas através do Painel do Criador, ou pode capturar atualizações de assinaturas em tempo real usando webhooks.
Através do Painel do Criador
Para acessar a análise de assinaturas no Painel do Criador:
- Vá para sua página de Criações no Painel do Criador e selecione seu jogo.
- Vá para Monetização ⟩ Assinaturas.
- Selecione a aba Análise.
A análise de assinaturas rastreia as seguintes métricas:
- Assinaturas: O número total de assinaturas ativas em seu jogo.
- Receita estimada: A receita líquida obtida pelos jogos após taxas. Não inclui informações sobre reembolsos.
- Divisão de assinantes: Os diferentes tipos de assinantes.
- Novo: O número de compras de assinaturas por assinantes de primeira viagem.
- Renovado: O número de assinaturas renovadas compradas em um período anterior.
- Ressuscitado: O número de novas assinaturas adquiridas por usuários que haviam cancelado anteriormente.
- Cancellations: O número de assinaturas que não foram renovadas. Isso inclui todas as cancelamentos, independentemente do gatilho, seja cancelamento pelo 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 serão mais renovadas, mas foram pagas em sua totalidade para o restante do ciclo de cobrança, enquanto reembolsos devolvem ao usuário o valor pago da assinatura.
- Assinaturas por plataforma: O número de assinaturas compradas em cada plataforma.
- Ganhos da plataforma: A receita líquida obtida através de assinaturas compradas em cada plataforma.
Essas informações são visíveis na forma de gráficos com base 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 Webhook da API Cloud inclui gatilhos para quatro eventos de assinatura: cancelada, comprada, reembolsada e renovada. Essas notificações são acionadas imediatamente, para que você possa responder em tempo real ou criar suas próprias análises personalizadas. Para mais informações sobre como configurar um webhook, consulte Notificações de Webhook.