RBLXEssentials
$4.99 Roblox Studio pack

Codes System

Codes System lets you hand out redeemable codes for a launch, a video or a Discord drop, and lets players claim them from a menu. You write the codes in the RBLX Essentials Plugin. No script editing.

Or take every paid pack together for $34.99, instead of $55.94 bought one at a time.

Codes System

Core Features

The Codes menu in game
Redeem menuIncluded. A HUD button, a text box, and a reply for each outcome: redeemed, unknown, already used, expired.
The five reward types, and a custom one by name
Reward typesCash, Diamonds, any leaderstat, Spins for the Roulette wheel, or a pet. Custom rewards are a ModuleScript you drop in, and it shows up in this list by name.
Picking an expiry date in the plugin
Expiration dateA date per code, picked from a calendar. Past it, the code stops working.

Setup

1Drag the .rbxm into Studio
2Hit Install in the plugin
3Write your codes. Press Play.

Developer API

CodesSystem: redeem & hasRedeemed
local codes = ctx.require("CodesSystem")

-- Second return: the reward, or the reason it was refused.
local ok, result = codes.redeem(player, "LAUNCH")

if ok then
    -- { Code = "LAUNCH", Type = "Cash", Amount = 1000 }
    print(result.Code, result.Type, result.Amount)
else
    print(result)  -- "AlreadyRedeemed"
end

-- Claimed already? Case and spaces do not matter.
local claimed = codes.hasRedeemed(player, "launch")
A refusal is one of eight reasons, never a sentence, so the wording on screen stays yours:
  • Empty: nothing was typed
  • NoSuchCode: no code by that name
  • AlreadyRedeemed: this player has claimed it
  • Expired: past its date
  • CodeDisabled: misconfigured, switched off at startup
  • TooFast: too many wrong guesses, throttled
  • NoData: the save has not loaded yet
  • GrantFailed: the reward itself errored
Redeem RemoteFunction: for your own UI
-- From a LocalScript, if you swap in your own menu
local RS = game:GetService("ReplicatedStorage")
local remotes = RS.RBLXEssentials.Kernel.Remotes.CodesSystem

local reply = remotes.Redeem:InvokeServer("LAUNCH")

if reply.Success then
    print(reply.Code, reply.Type, reply.Amount)
else
    print(reply.Error)  -- one of the eight reasons
end
The server checks every rule again and the throttle lives there, not in the button, so your own menu is exactly as safe as the included one.

Customisation

Custom rewards
A custom reward module in the Explorer, under CodesSystem and CustomRewards
Write your own rewards as ModuleScripts. GrantPet ships as an example, and the docs show how to write more.
Redeem messages The Messages settings, with a live preview of the Codes menu above them Change what the player is told in each case.
Works with General UI Kit The Codes menu open inside General UI Kit's HUD, with its icon rail, music player and cash counter Install both and General UI Kit's Codes menu is the one that runs, styled with the rest of your interface.
Or design the menu yourself The same Codes panel redesigned in a black and blue style Restyle it however you like. The pack finds the panel's parts by name, not by look.

Works great with

Datastore
Datastore & Purchase SystemRequired
UI Kit
General UI KitStyling
Sound System
Sound SystemSounds
Roulette
Roulette SystemSpins
Notifications
Notifications SystemToasts

Only Datastore & Purchase System is required, because it is what remembers who claimed what. The other four are optional and the pack works without any of them.

Documentation

Every field, the plugin panels and the version history live at rblxessentials.com/docs.

Updates

📋 Version history and changelogs for all packs are available at rblxessentials.com/docs#changelog.

The rest of the ecosystem

Every pack saves through Datastore, plays its sounds through Sound System and puts its menu on the same HUD. Nothing needs wiring between them.

Codes System

Redeemable Roblox codes written in a settings panel: cash, items, spins or your own reward modules, with expiry dates and one redemption per player.