Player identifiers in 2026: how to stop players losing their characters
Xbox identifiers are gone and the license identifier can change for some players. What does that mean for your database?
Cfx.re made two changes to player identifiers this year. If you tie characters, bans or whitelists to a single identifier, you need to act.
What changed
- 27 April 2026: the
xbl:(Xbox Live) andlive:(Microsoft PUID) identifiers were removed fromGetPlayerIdentifiers. According to Cfx.re, this helps platform integrity and player privacy. - From 24 June 2026: to combat abuse of hacked or stolen Rockstar accounts, the
license:orlicense2:identifier can change for a small number of players. On servers that tie progress to that identifier, those players suddenly look like new players.
Affected players can pick another linked identity as their default in the client, either from the notice or in the settings. That's possible until 24 June 2027. After that, your staff will need to migrate their characters.
What to do as a developer
- Remove
xblandlivefrom your code everywhere, for example in whitelist checks and ban scripts. - Store all of a player's identifiers, not just the license. That way you can always tell that a "new" player is actually someone you know.
- Build an admin command that links a character to a new identifier. Your staff will need it.
-- Store all identifiers on every join, so you can migrate later
AddEventHandler('playerConnecting', function(name, setKickReason, deferrals)
local src = source
local ids = {}
for _, identifier in ipairs(GetPlayerIdentifiers(src)) do
local kind, value = identifier:match('^(%w+):(.+)$')
if kind then ids[kind] = value end
end
-- ids.license, ids.license2, ids.discord, ids.fivem, ...
-- Write these to your own table, for example with oxmysql
end)