Abonnementen binnen games stellen je in staat om gebruikers terugkerende voordelen te bieden voor een maandelijkse vergoeding. Abonnementen zijn vergelijkbaar met passen, maar terwijl de voordelen van een pas onbeperkt worden verleend, zijn de voordelen van een abonnement afhankelijk van de gebruiker die een maandelijkse vergoeding betaalt.
Abonnementen op Roblox hebben de volgende kenmerken:
- Automatische verlenging: Abonnementen worden automatisch verlengd, zijn geen eenmalige aankopen en kunnen worden geprijsd in lokale valuta of Robux.
- Robux-uitbetaling: Of een abonnement nu in lokale valuta of Robux wordt aangeschaft, je ontvangt de abonnementsinkomsten in Robux. Voor meer details, zie Verdien met abonnementen.
- Enkele niveaus: Alle abonnementen binnen een game kunnen gelijktijdig door gebruikers worden bezeten. Onderling exclusieve abonnementen worden niet ondersteund.
- Regionale prijzen: Regionale prijzen zijn standaard ingeschakeld voor abonnementen die in Robux worden verkocht en kunnen niet worden uitgeschakeld. Regionale prijzen zijn niet beschikbaar voor abonnementen die in lokale valuta worden verkocht.
Richtlijnen voor abonnementen
Voordat je je abonnementen maakt, zorg ervoor dat ze in overeenstemming zijn met Roblox's Gebruiksvoorwaarden en voldoen aan de lokale wetgeving. Elke game die zich bezighoudt met oplichting, probeert gebruikers te misleiden met valse aanbiedingen, of anderszins onze Gemeenschapsnormen schendt, zal worden verwijderd.
Je moet er ook voor zorgen dat je abonnementen aan de volgende richtlijnen voldoen:
- Bied duidelijke, onderscheidbare abonnementsopties aan: Gebruik korte, beknopte en zelfverklarende namen die de abonnementsopties van elkaar onderscheiden. Geef de prijs en duur voor elke optie op wanneer je in-game verkoopt.
- Bied dezelfde voordelen op verschillende platforms en apparaten aan: Ongeacht waar het abonnement is aangeschaft, zorg ervoor dat de gebruiker dezelfde voordelen ontvangt voor elk gegeven abonnementsplan.
- Ontwerp abonnementen zodat ze bij elkaar en bij de algehele game-aanbiedingen passen: Het indelen van dezelfde suite van voordelen, zoals het aanbieden van "Brons", "Zilver" en "Goud" niveaus die onderling exclusief zijn, is momenteel niet beschikbaar. Zorg ervoor dat abonnementen verschillende sets van voordelen vertegenwoordigen.
- Bied de voordelen voor de volledige termijn van het abonnement aan: Zodra een abonnementsaanbieding live is, eer de beschreven voordelen en trek geen voordelen in achter de schermen.
- Verwijs gebruikers niet naar een andere platform (zoals mobiel, web, enz.) om in-game aan te schaffen: Hoewel je vrij bent om met gebruikers buiten het platform te communiceren, is het verboden om de Roblox-app te gebruiken om gebruikers naar een andere aankoop te leiden.
- Stel geen extra vereisten voor om abonnement voordelen te verkrijgen nadat een gebruiker heeft betaald: Het vereisen van een gebruiker om extra taken uit te voeren, zoals het plaatsen op sociale media, om toegang te krijgen tot voordelen waarvoor ze hebben betaald, is verboden. Deze richtlijn heeft geen invloed op battle passes, die je zowel mag maken als op de markt mag brengen als een abonnementsaankoop.
Robux vs lokale valuta
Abonnementen kunnen worden geprijsd in Robux of lokale valuta. De volgende tabel vergelijkt de twee betalingsopties.
| Robux | Lokale valuta | |
|---|---|---|
| Geschiktheid | Alle makers | Vereist een account geverifieerd door ID of telefoonnummer |
| Platforms | Beschikbaar op alle platforms | Beschikbaar op Web, App Store en Google Play |
| Landen | Beschikbaar in alle landen die Roblox ondersteunen | Niet beschikbaar in Argentinië, China, Colombia, India, Indonesië, Japan, Rusland, Taiwan, Türkiye (Turkije), VAE, Oekraïne en Vietnam |
| Prijs | Elke hoeveelheid gelijk aan of groter dan 49 Robux | $2.99, $4.99, $7.99, $9.99 of $14.99 |
| Regionale prijzen | Standaard ingeschakeld | Niet beschikbaar |
| Uitbetalingen | 70% van de abonnementsinkomsten elke maand | 70% in de eerste maand, daarna 100% in de daaropvolgende maanden |
Abonnementen maken
Om een abonnement te maken:
- Klik op Abonnement maken.
- Upload een omslagafbeelding.
- Voer een unieke naam in. Je kunt geen twee abonnementen met dezelfde naam in dezelfde game hebben.
- Voer een beschrijving in die duidelijk de voordelen beschrijft die je aanbiedt.
- Selecteer een van de volgende betalingsopties:
- Abonnees betalen Robux: Vraag gebruikers de terugkerende abonnementsvergoeding in Robux. Als je deze optie selecteert, moet je een aangepaste prijs invoeren die groter is dan of gelijk aan 49 Robux. Regionale prijzen zijn standaard ingeschakeld voor het abonnement en kunnen niet worden uitgeschakeld.
- Abonnees betalen lokale valuta: Vraag gebruikers de terugkerende abonnementsvergoeding in hun lokale valuta. Als je deze optie selecteert, moet je een abonnementsprijs kiezen uit de 5 beschikbare prijsklassen.
- Selecteer een van de volgende producttypes:
- Duurzaam: Permanente items die blijven bestaan na gebruik of verwerving, zoals fysieke items zoals wapens. Als een abonnement een bundel van verschillende soorten goederen omvat, waarvan een of meer duurzaam zijn, zoals een waarde pakket met een zwaard en een potion, kies dan Duurzaam als producttype.
- Consumable: Tijdelijke opnieuw aan te schaffen items die vervallen na gebruik of verwerving, zoals consumptiepotions die tijdelijke boosts geven die na verloop van tijd vervallen.
- Valuta: Elk ruilmiddel dat gebruikers kunnen gebruiken om items binnen je game aan te schaffen.
- Klik op Abonnement maken.
Abonnementen activeren
Je kunt tot 50 abonnementen per game hebben tussen actieve en inactieve abonnementen.
Om een abonnement te koop aan te bieden, klik op ⋮ naast het abonnement dat je wilt activeren en selecteer Activeren. Actieve abonnementen zijn automatisch beschikbaar voor verkoop in het Winkel tabblad van de game details pagina, en kunnen aan je game worden toegevoegd via MarketplaceService functies.
Voordat je je abonnement voor de eerste keer activeert, moet je een verkorte versie van je gamenaam bevestigen. Deze verkorte gamenaam wordt aan de gebruiker getoond wanneer ze zich abonneren, en verschijnt naast de abonnementsnaam die je hebt gemaakt in Abonnementen maken.
Abonnementsstatussen
Abonnementen hebben twee mogelijke statussen:
- Actief: Actieve abonnementen zijn beschikbaar voor verkoop, waarbij abonnees hun abonnement kunnen verlengen aan het begin van de volgende periode.
- Inactief: Inactieve abonnementen zijn niet beschikbaar voor verkoop.
Om de status van een abonnement te wijzigen, klik op ⋯ in de rechterbovenhoek van de abonnements tegel en selecteer Activeren (als het abonnement momenteel inactief is) of Van de verkoop halen (als het abonnement momenteel actief is).
Als je Van de verkoop halen selecteert, krijg je de optie om bestaande abonnees hun abonnement te laten verlengen, of om toekomstige verlengingen voor huidige abonnees te annuleren. Als je niet van plan bent om de bijbehorende abonnementsvoordelen permanent uit je game te verwijderen, raden we aan om bestaande abonnees hun abonnement te laten verlengen.
Abonnementen bewerken
De velden die je kunt bewerken zijn afhankelijk van de betalingsmethode.
| Te bewerken veld | Abonnementen verkocht in Robux | Abonnementen verkocht in lokale valuta |
|---|---|---|
| Omslagafbeelding | Ja | Ja |
| Naam | Nee | Nee |
| Beschrijving | Ja | Ja |
| Betalingsmethode | Ja (kan wisselen naar lokale valuta) | Ja (kan wisselen naar Robux) |
| Prijs | Ja (eens in de 60 dagen) | Nee |
| Producttype | Nee | Nee |
| Actieve status | Ja | Ja |
Het wijzigen van de betalingsmethode heeft alleen invloed op nieuwe abonnementen. Bestaande abonnees blijven op hun oorspronkelijke betalingsmethode en moeten annuleren en opnieuw abonneren om te wisselen.
Abonnementen verwijderen
Om een abonnement te verwijderen, klik op ⋮ naast het abonnement dat je wilt verwijderen en selecteer Verwijderen.
Het verwijderen van een actief abonnement resulteert in volledige terugbetalingen voor actieve abonnees en nul Robux voor jou. In de meeste situaties, als je een abonnement wilt verwijderen, raden we aan om het eerst van de verkoop te halen, de optie te selecteren om alle verlengingen te annuleren, en te wachten tot de huidige periode is afgelopen.
Het verwijderen van een abonnement vereist de laatste vier cijfers van de abonnements-ID ter bevestiging.
Abonnementen integreren in een game
Controleer de abonnementsstatus van een gebruiker
Het volgende codevoorbeeld implementeert abonnementsdetectie in je game:
-- Voer deze code op de server uit
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- Vervang door je abonnements-ID
local function grantAward(player: Player)
-- Je moet de prijs die aan het abonnement is gekoppeld hier toekennen
end
local function revokeAwardIfGranted(player: Player)
-- Deze methode wordt aangeroepen voor elke speler die _geen_ abonnement heeft
-- Als je code abonnementen opslaat in Data Stores of een voordeel biedt dat moet worden 'ingetrokken'
-- moet je deze methode gebruiken om de intrekking te verwerken
end
local function checkSubStatus(player)
local success, response = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
warn(`Fout bij het controleren of speler een abonnement heeft: {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)Vervang een pas door een abonnement
Een optie om abonnementen in je game uit te rollen, is om een bestaande pas door een abonnement te vervangen. Dit is een geweldige optie als je snel abonnementen wilt implementeren zonder nieuwe functies of prijzen toe te voegen.
Bij het vervangen van een pas door een abonnement, houd het volgende in gedachten:
- Alle bestaande houders van de pas moeten de voordelen blijven ontvangen waarvoor ze hebben betaald.
- De pas moet van de verkoop worden gehaald, zodat nieuwe gebruikers in plaats daarvan het abonnement kunnen kopen.
- Abonnementen kunnen worden ingetrokken, wat betekent dat als je pas eerder zijn voordelen naar een data store heeft doorgegeven, je deze voordelen moet "ongedaan maken". Deze overweging is niet van toepassing op alle pasimplementaties, maar kan van toepassing zijn op complexere.
Het volgende codevoorbeeld vervangt een pas door een abonnement:
-- Voer deze code op de server uit
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local LEGACY_GAME_PASS_ID = 1234 -- Vervang door de ID van de pas die door een abonnement wordt vervangen
local SUBSCRIPTION_ID = "EXP-11111111" -- Vervang door je abonnements-ID
local function awardBenefit(player: Player)
-- Je moet het abonnement hier toekennen
end
local function revokeBenefitIfGranted(player: Player)
-- Deze methode wordt aangeroepen voor elke speler die _geen_ abonnement heeft
-- Als je code abonnementen opslaat in Data Stores of een voordeel biedt dat moet worden 'ingetrokken'
-- moet je deze methode gebruiken om de intrekking te verwerken
end
local function checkSubscriptionStatus(player: Player)
local success, result = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
print(`Fout bij het ophalen van abonnementsstatus: {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(`Fout bij het ophalen van passtatus: {result}`)
return
end
if result then
-- Als de speler de legacy pas heeft gekocht, hoeven we hun abonnementsstatus niet op te zoeken
-- omdat ze het voordeel levenslang hebben gekregen
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)
-- We blijven luisteren naar pasaankopen voor het geval de pas nog te koop is
MarketplaceService.PromptGamePassPurchaseFinished:Connect(onPromptGamePassPurchaseFinished)Vraag abonnement aankopen aan
Gebruikers kunnen abonnementen rechtstreeks kopen vanuit het Winkel tabblad van je game details pagina, maar je moet ook een manier toevoegen voor hen om abonnementen in-game aan te schaffen.
Wanneer je een abonnement aankoop aanvraagt, wordt UserSubscriptionStatusChanged geactiveerd als de speler al het abonnement bezit, wat helpt om scenario's te vangen waarin een speler een abonnement koopt vanuit het Winkel tabblad van je game details pagina terwijl ze al in-game zijn.
Hoewel je een abonnement aankoop kunt aanvragen vanuit de client, moet het controleren of een gebruiker al een abonnement heeft met GetUserSubscriptionStatusAsync vanaf de server worden gedaan.
Het volgende codevoorbeeld maakt een RemoteFunction die de client kan gebruiken om de status van een abonnement op te vragen:
--Deze code moet op de server worden uitgevoerd
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Maak een RemoteFunction die de client kan gebruiken om de abonnementsstatus op te vragen
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-- Deze code moet op de client worden uitgevoerd
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- Vervang door je abonnements-ID
local getSubscriptionStatusRemote = ReplicatedStorage:WaitForChild("GetSubscriptionStatus")
local purchaseSubscriptionButton = script.Parent.PromptPurchaseSubscription -- Vervang door je knop
local function playerHasSubscription()
-- Let op, als je abonnement een pas vervangt, moet je hier ook controleren of de pas in bezit is
local success, result = pcall(function()
return getSubscriptionStatusRemote:InvokeServer(SUBSCRIPTION_ID)
end)
if not success then
print(`Fout bij het ophalen van abonnementsstatus: {result}`)
return
end
return result.IsSubscribed
end
-- Verbergt de knop als de speler al het abonnement heeft
local function hideButtonIfPlayerHasSubscription()
if playerHasSubscription() then
purchaseSubscriptionButton.Visible = false
end
end
local function onPromptSubscriptionPurchaseFinished(player: Player, subscriptionId: string, didTryPurchasing: boolean)
if didTryPurchasing then
-- Het kan even duren voordat het abonnement is geregistreerd, dus we controleren of de aankoop binnen 10 seconden is doorgegaan
-- en verbergen de knop als dat zo is
task.delay(10, hideButtonIfPlayerHasSubscription)
end
end
-- Als de speler al het abonnement heeft, willen we de knop helemaal niet tonen
hideButtonIfPlayerHasSubscription()
purchaseSubscriptionButton.Activated:Connect(function()
MarketplaceService:PromptSubscriptionPurchase(Players.LocalPlayer, SUBSCRIPTION_ID)
-- Als de speler al het abonnement heeft, verberg de knop
hideButtonIfPlayerHasSubscription()
end)
MarketplaceService.PromptSubscriptionPurchaseFinished:Connect(onPromptSubscriptionPurchaseFinished)Andere relevante functies
Andere relevante functies die beschikbaar zijn in MarketplaceService zijn:
- GetSubscriptionProductInfoAsync, die de productinformatie van een abonnement retourneert. Inclusief of het abonnement is geprijsd in Robux of lokale valuta.
- GetUserSubscriptionPaymentHistoryAsync, die de betalingsgeschiedenis van een gebruiker voor abonnementen retourneert.
- GetUserSubscriptionStatusAsync, die de abonnementsstatus van een gebruiker retourneert.
Verdien met abonnementen
Voor abonnementen geprijsd in lokale valuta, verdien je Robux tegen een tarief van US $0.01 tot 1 Robux volgens de basisplatformprijs die je hebt geselecteerd, na platformkosten. Je verdient 70% van de abonnementswaarde in de eerste maand, en 100% vanaf de tweede maand. Deze inkomstenverdeling is consistent op alle platforms.
Bijvoorbeeld, als je maandelijkse abonnement is geprijsd op USD $5:
- Eerste maand: Je verdient 350 Robux (500 * 0.7 = 350)
- Tweede maand en verder: Je verdient het volledige bedrag van 500 Robux (500 * 1.0 = 500)
Voor abonnementen geprijsd in Robux, verdien je 70% van de abonnementswaarde elke maand. Deze inkomstenverdeling is consistent op alle platforms.
Bijvoorbeeld, als je maandelijkse abonnement is geprijsd op 500 Robux:
- Eerste maand: Je verdient 350 Robux (500 * 0.7 = 350)
- Tweede maand en verder: Je blijft 350 Robux verdienen (500 * 0.7 = 350)
Inkomsten uit abonnementen in lokale valuta zijn onderhevig aan een wachtperiode van 30 dagen en worden aan je Robux-saldo toegevoegd nadat de volledige termijn van het abonnement is verstrekt.
Inkomsten uit abonnementen in Robux volgen dezelfde wachtperiode als passen en ontwikkelaarsproducten, wat ongeveer 5 dagen is.
Terugbetalingen
Voor abonnementen in lokale valuta, als een gebruiker een terugbetaling aanvraagt via hun bank of app store binnen de wachtperiode van 30 dagen, wordt de hold geannuleerd en ontvang je de uitbetaling voor die transactie niet.
Terugbetalingen die buiten het holdvenster worden ontvangen, resulteren in het bedrag van de uitbetaling voor de terugbetaalde transactie dat van je Robux-saldo wordt afgetrokken. Als je game eigendom is van een Groep en het saldo van de Groep minder is dan het bedrag dat moet worden afgetrokken, wordt het resterende bedrag van het Robux-saldo van de Groepseigenaar afgetrokken.
Wanneer gebruikers hun actieve abonnementen annuleren of niet verlengen, ontvangen ze niet automatisch terugbetalingen. Ze moeten handmatig terugbetalingen aanvragen, die per geval worden behandeld. Voor meer informatie over het terugbetalingsproces voor gebruikersabonnementen, kijk in het helpcentrum.
Uitbetalingen
Je kunt je abonnementsuitbetalingen vinden in Robux-saldo ⟩ Mijn transacties.
Abonnement en Groep Abonnement uitbetalingen verschijnen onder Binnenkomende Robux, terwijl terugbetalingen worden gegroepeerd onder Uitgaande Robux als een Uitbetalingsomkering. De subpagina's voor abonnementen en groep abonnementen bieden aanvullende informatie voor hun respectieve categorieën.

Om terugbetalingsinformatie voor individuele gebruikers te bekijken, gebruik GetUserSubscriptionPaymentHistoryAsync.
Abonnementsanalyses
Abonnementsanalyses helpen je de succes van individuele abonnementen te meten, trends te identificeren en potentiële toekomstige inkomsten te voorspellen. Abonnementen worden toegevoegd aan de abonnementsanalyses pagina nadat ze voor de eerste keer zijn geactiveerd en worden niet verwijderd wanneer ze worden gedeactiveerd of verwijderd. Je kunt kant-en-klare analyses bekijken via het Creator Dashboard, of je kunt abonnementsupdates in realtime vastleggen met webhooks.
Via het Creator Dashboard
Om toegang te krijgen tot abonnementsanalyses op het Creator Dashboard:
- Ga naar je Creations pagina op Creator Dashboard en selecteer je game.
- Ga naar Monetization ⟩ Abonnementen.
- Selecteer het Analyses tabblad.
Abonnementsanalyses volgen de volgende statistieken:
- Abonnementen: Het totale aantal actieve abonnementen in je game.
- Geschatte inkomsten: De netto-inkomsten die door games zijn verdiend na kosten. Inclusief geen terugbetalingsinformatie.
- Abonnees uitsplitsing: De verschillende soorten abonnees.
- Nieuw: Het aantal abonnement aankopen door nieuwe abonnees.
- Verlengd: Het aantal verlengde abonnementen dat in een eerdere periode is aangeschaft.
- Herleefd: Het aantal nieuwe abonnementen dat is aangeschaft door gebruikers die eerder hebben geannuleerd.
- Annuleringen: Het aantal abonnementen dat niet is verlengd. Dit omvat alle annuleringen, ongeacht de trigger, of het nu gaat om annulering door de gebruiker, annulering van het abonnement door de maker, of op andere manieren.
- Annuleringen zijn anders dan terugbetalingen. Geannuleerde abonnementen zijn abonnementen die niet langer zullen verlengen maar volledig zijn betaald voor de rest van de factureringscyclus, terwijl terugbetalingen het betaalde abonnementsbedrag aan de gebruiker teruggeven.
- Abonnementen per platform: Het aantal abonnementen dat op elk platform is aangeschaft.
- Platforminkomsten: De netto-inkomsten die zijn verdiend via abonnementen die op elk platform zijn aangeschaft.
Deze informatie is zichtbaar in de vorm van grafieken op basis van een datumbereik onder het Trends tabblad, en als een uitgebreide lijst van totale aangeboden abonnementen onder het Geschiedenis tabblad.

Via webhooks
De Cloud API Webhook-functie omvat triggers voor vier abonnementsgebeurtenissen: geannuleerd, gekocht, terugbetaald en verlengd. Deze meldingen worden onmiddellijk geactiveerd, zodat je in realtime kunt reageren of je eigen aangepaste analyses kunt maken. Voor meer informatie over het instellen van een webhook, zie Webhook-meldingen.