Retiring PointsService

Hi Creators,

PointsService has been deprecated for years and we are now announcing to retire it on June 30th, 2023. If you still want to keep the corresponding features in your experience, we suggest updating to use Data Stores instead.

After June 30th, all AwardPoints() will return success but not update the backend. All get APIs (GetAwardablePoints(),GetGamePointBalance(),GetPointBalance()) will return 0.

We realize that despite the service being deprecated some experiences still use it in a meaningful way therefore we offer to migrate data from PointsService to a Roblox data store of your choice for experiences that need it.


In order to have PointsService data migrated, you need to complete the following steps before May 31st, 2023:

  1. Incorporate the migration module into your experience (source code below). This module should be a drop-in replacement for the PointsService in most cases.

  2. Fill out this form to let us know that your experience needs to have data migrated.

Source Code

Below is the source code of the migration module. It should be added as a ModuleScript in your experience.

-- change the datastore name as desired
local datastoreName = "_rbx_UserPoints"
local pointsAwarded ="BindableEvent")

local ds = game:GetService("DataStoreService"):GetOrderedDataStore(datastoreName)
local ps = game:GetService("PointsService")

return {
	AwardPoints = function(self: any, userId: number, amount: number)
		if userId <= 0 then
			error('User id must be positive')
		if amount <= 0 then
			error('Point amount must be positive')

		-- optimistically assume that the user has already been migrated
		local finalPoints = ds:UpdateAsync(userId, function (currentPoints: number?): number?
			if not currentPoints then
				-- oops, not actually migrated
				return nil
			return currentPoints + amount

		if not finalPoints then
			-- this user has not been migrated, migrate it now
			local legacyPoints = ps:GetGamePointBalance(userId)

			finalPoints = ds:UpdateAsync(userId, function (currentPoints: number?): number
				if not currentPoints then
					-- still not migrated, add point amount from the legacy system
					-- to the amount of points awarded
					return legacyPoints + amount
					-- the user must have been migrated from another instance;
					-- disregard legacy points and proceed as usual
					return currentPoints + amount
		if finalPoints then
			pointsAwarded:Fire(userId, amount, finalPoints, finalPoints)

	GetGamePointBalance = function(self: any, userId: number): number
		if userId <= 0 then
			error('User id must be positive')

		-- optimistically assume the user has been migrated
		local points = ds:GetAsync(userId)
		if not points then
			-- user not migrated yet, query legacy system
			points = ps:GetGamePointBalance(userId)

		return points

	GetPointBalance = function(self: any, userId: number): number
		return 0

	GetAwardablePoints = function(self: any): number
		return 2^31 - 1
	PointsAwarded = pointsAwarded.Event,

To use the module, add the following line to the beginning of each script file that uses PointsService:

local PointsServiceWrapper = require(script.Parent.PointsServiceWrapper)

Then replace each call to PointsService:AwardPoints with PointsServiceWrapper:AwardPoints and each call to PointsService:GetGamePointBalance with PointsServiceWrapper:GetGamePointBalance.


What happens if I don’t fill out the migration request form?

  • If you don’t migrate, the points data for your experience will be lost. PointsService data will only be migrated for experiences indicated on the migration form.

What happens if I fill out the form but don’t incorporate the migration module into my experience?

  • The migration module is required to ensure that data is migrated correctly and no data is lost. We cannot guarantee the completeness of the migrated data if the migration module is not used.

Please let us know if you have any questions or concerns.

The Roblox Creator Services Team


This topic was automatically opened after 10 minutes.

I’m kind of surprised it has taken this long. Points has been fairly useless for a long time now, and the removal of game leaderboards a long time ago really made it just borderline worthless. However I do feel sadness for the games that do require it, but I’m happy Roblox is making an effort to ensure these games continue to function.


About time it would happen. In my opinion, you guys should’ve revamped it instead ngl, like adding leaderboards back and maybe even showing stats to other people on profiles. I have a lot of ideas but I guess you guys are retiring it anyway.


I can’t think of a single game that still uses PointsService, so I guess this was bound to come sooner or later. Huge props to staff for writing out a full replacement module for those who still use it!

One tiny thing though; there’s a lingering backtick here.
Might wanna remove that so someone doesn’t accidentally copy it


Kill it! This was one of the more useless features, especially when DataStore originally came out.


I used to use PointsService despite deprecation due to the fact that is the only way to export data from a Roblox experience (to either a different experience in a different session or a website) without running into global rate-limits or having an external database (OpenCloud has a fixed limit for requests). While this implementation is no longer used by me, that is simply because I am no longer making cross-experience play in my Roblox experiences however there is still a need for a feature similar to the hacky PointsService workaround I used.


This was still a thing?
I remember using it on work on a pizza place in 2017 and later leardboards got removed, i didn’t care about the leardboards being removed, and was kinda surprised it was still there when there was no use.

1 Like

This is a terrible update. Roblox is now permanently and irrevocably ruined. It has officially gone corpo, no longer listening to or caring about the community.



No one has cared about or used points for years. It hasn’t been maintained. It used to be the currency of Roblox before Robux/Tix. That’s about it. The rest were just tycoons and people abusing points to give themselves infinite points.

Points have been nothing special. Not sure what you want


No one has cared about or used points for years. It hasn’t been maintained. It used to be the currency of Roblox before Robux/Tix.

That is incredibly incorrect, it was just a system devs used to award points to players that could be viewed on a leaderboard via the website’s game page.

It was largely removed several years ago


Don’t even know why you guys removed the PointsService feature on games. Was a good feature that made me actually grind back in the day.


It appears that I was thinking of the wrong points


Welp, there goes all the points i got in work at a pizza place


Which can be replaced by better systems by the developers themselves?


Goodbye old friend :wave:. Will always remember you popping up everytime I completed an obby, a tycoon or in pizza place.


I’m not surprised that this is being removed. It’s been so unused for so long now. The only games I can think are games that have been around since 2015-2018. Other than that, I don’t see a single modern game with PointService.

1 Like

Those systems are usually straight up garbage. Back then games were different.


So far, most people replying here are happy with the update (myself included). I think Roblox is listening to the community here. Points service has not been a thing for years and it’s no surprise that it’s being removed.


Yet another iconic Roblox memory going away, but for good.

Question: I have a Capture The Flag game that still gives points to users when they Capture The Flag, but I dont need that in my game, so can i just leave this alone or do i have to put in a script to make sure the point system goes away?