How to make a licensed system on Roblox

Hello developers,
In this tutorial ,you will learn how to make a licensed system like the Check me in system, where you buy a license which costs 5k to make the check me in work

This tutorials explains how to make a system like that

Choosing a way for making it

1.Module script
2.Google Spreedsheets
3. Making an api for it

This is in the difficulty of:

Very Hard

Now since module script method is the easiest, and most common way
I’ll tell how to make one system with that

:warning: Note: Updating the module script is manual work, and you cannot expect an automated
But you can get a message on Discord that someone purchased your license

Step 1: Making the purchase license gui

You could make any custom gui
I am gonna make one gui which looks discord
The gui does not matter, but you should make one purchase license button

I made this so far, I know it don’t look good, but you can make your own gui, and make the buttons

Make 2 dev products

Make the buttons prompt the dev product purchases/gamepass for license

Now you can either make a discord webhook with a proxy for messaging, like if the player buys the license, the server sends a message to your server

or you should check the purchases of your game manually, and then give them the access

Step 2: Giving access to the purchased users

Now you should probably know module scripts, as we are gonna use module script for this

So when your making your licensed thing, to check if player have license, you should

Name your module script MainModule and save it to Roblox, and you do this

Why not write it there in the script, why in another module script?
Its simple, when you write in the script, the script can be edited by the developer, while if you use require, the script loads in testing mode or in playing mode only, so there is a less chance, player can edit it, also since the owner of the module is the license giver, only they can edit and save to roblox

So, there is a very less chance, developers can fake license
But note that, highly experienced scripters, can change the module and create a licensee and change the licensee to their module script, so you must accept the fact that, there is a chance that atleast one developer can use your model without license

Coming back to the module script

Also you can a thing, you can check if the player owns the gamepass, the license gamepass or you can also check using the table, but you have to manually enter userid in the table


local module = {}
local gamepassid = 000 -- optional, only if your using gamepasses for license
local mps = game:GetService("MarketplaceService")

local tableofplayerid = {129301,193201921} -- if anyone purchases license, add their user id here

function module:GetLicenseStatus(idofplr)
    if table.find(tableofplayerid,idofplr) or mps:UserOwnsGamepassAsync(idofplr,gamepassid) == true then -- checks if player have the license

return module

Now the script, server side script:

local module = require(00000000)

if module:GetLicenseStatus(game.CreatorId) == "None" then -- if it returns "None" it means the player got no license
    print("No license")

Now if you make a model of your check-in or something which needs license, do this to check if game owner got license

Step 3: Done

The tutorial is done, hope you like it, it works and I tested it too

Support me



What’s stopping someone just inserting their own UserId into the table of player IDs and the system thinking they have a license?


They cannot do it, the module is a script saved in Roblox, only the owner of the script can edit the script and save it to roblox again, this module isnt present in the game to change it or add their userid


In other words, when people purchase a license, they’ll have to wait for the game developer to update the module?

Why not just use game passes, or temporary developer products that expire after a certain amount of time?



Oh wait I forgot that exists


It’s really nice, but why not simply just use gamepasses/devproducts, they can be more efficient tho, and maybe more beneficial. :wink:

But overall good job


datastores is better as its automated, gamepasses is 999999x more efficient than datastored and your method.


The tutorial was updated, now this system also supports gamepasses

Thanks for suggestions @HugeCoolboy2007 @commitblue @Valkyrop


I don’t think this is limited to “highly experienced developers”. It’s trivial to change a module script being required.


No like you can actually keep a security key in the model and the module script, and then check if the keys match, just in case if they change the module script, their security key does not match

To avoid finding the key, you can probably make it confusing

local code = "1020293"

Better way:

local main = "1000000"
main += 20293

By looking at it, its x3 harder than normal one, only experienced scripts know what the actual code is

But… that’s not harder to work around? They don’t even need to touch the other modulescript if they can just remove the check from the main script.

1 Like

That’s the uh the main thing, now look
If I want to avoid that removing of the script this is how I do it

if main == 193092 then -- if its correct then
   -- then the thing works, like we put the function here

Now, you might say what if they remove the main? thing, yes then can remove, but we keep that verification at each point of the client/server stuff, so if they break this, the whole thing breaks up

But, I wouldn’t say someone would attempt to re-write the whole system, instead of paying 55 robux, if they can make their own system, why would they even use the model? only normal scripts who don’t have much experience, buy this, because why would a scripter, who knows how to make this, buy it, they will rather make one on own, with their own idea

What exactly is the purpose of this…? We have gamepasses which are ideally one time purchases? This just seems like a performance waste

1 Like

Maybe you should’ve looked a tad bit deeper before making a tutorial on this :stuck_out_tongue:
It’s good experience though, a bit of programming doesn’t hurt anyone

If you do plan to make a gamepass-whitelist hybrid however, I recommend Data Stores or HttpService & Pastebin over tables that need to be updated directly

Good work

That makes no sense, developers can actually remove the gamepass line of your code, that isn’t a proper system, atleast this is better than system, its not a waste, its just a license system

Yes I have 4 years experience, but I forgot it because I have worst memory, also I tried to make one at first, it wasn’t working fine, because the developers don’t really need to have, the game owner should have it

Modules can also easily be downloaded and edited
For example you can entierly remove the VIP/donation systems in every popular administration/moderation (HD Admin, Adonis, et cetera) scripts. Though it’ll seem a bit odd for someone to do so, it’s possible!

Unless you obfuscate your code (which WILL 100% make it look sketchy), then a proper “licensing system” isn’t entirely possible.


But what stops them from inserting the model instance in the game and add their user ids? Since roblox removed private modules this security is not possible anymore

1 Like


dont make it in client.


I would consider this a poor method to monetizing plugins. A better method would be to make it work through gamepasses, or better yet, make it free.

It might be better to have your post peer-reviewed next time to avoid having a barrage of critical replies.

Anybody can also edit the code to have it do whatever your want. Instead of requiring the module for players, for example, they could just replace it with their own table of players.

1 Like

Gamepasses can easily be bypassed.

A better solution would just to be make a lite version of the plugin for free and have a “pro” version of the plugin for robux. A lot of plugins do this for monetization.