How to sell ranks to Bedrock players on a Java server
25 October 2026 · 5 min read
On many servers a third of the players or more are on Bedrock: a phone, a tablet, an Xbox, a PlayStation, a Switch. They join your Java server through Geyser, and in the game they look like everyone else. In the store they do not, and that is where sales go wrong: a name the checkout cannot find, a link they cannot click, a rank that went to someone else. This post goes through what is different for a Bedrock player and what to set up, so they can buy as easily as a Java player.
How a Bedrock player is on your server
Two plugins do the work. Geyser translates between Bedrock and Java, so a Bedrock client can join a Java server. Floodgate lets them in without a Java account, with their Xbox account instead.
That second part is what matters for a store. A Bedrock player has no Minecraft Java name, so Floodgate gives them one on your server:
- The Xbox gamertag, with a prefix in front. By default the prefix is a dot, so the gamertag
Steve Gamerbecomes.Steve_Gamer. - Spaces become underscores, and the name is cut at 16 characters, the most a Minecraft name can have.
- A fixed UUID built from their Xbox account, so they keep the same UUID when they change their gamertag.
A Java store that looks names up at Mojang does not know .Steve_Gamer, because Mojang only knows Java accounts. That is the main reason Bedrock players cannot buy on many stores.
What to set up
On Minecraftstore.io there is one setting, and the rest follows:
- Check your Floodgate prefix. Open
plugins/floodgate/config.ymland look atusername-prefix. It is a dot unless someone changed it. - Set the same prefix in the dashboard. Open Servers and fill it in under Bedrock players. Your commands then get the name the way your server knows it.
At the checkout a player picks Java or Bedrock. A Bedrock player types their Xbox gamertag, and we look it up with GeyserMC and show the name they will have on your server, like .Steve_Gamer. From the /buy menu in the game, Bedrock is picked for them and their name is already filled in. The full setup is in the Bedrock guide.
Commands that reach a Bedrock player
{player} in a command becomes the name with the prefix, so most commands need no change:
lp user {player} parent add vip
turns into lp user .Steve_Gamer parent add vip for a Bedrock player.
If you want to be completely sure a rank lands on the right account, use the UUID instead. LuckPerms takes a UUID wherever it takes a name, and the UUID never changes:
lp user {uuid} parent add vip
That also covers a Bedrock player who changes their gamertag between paying and joining.
Whichever you pick, send a test to a Bedrock name once before you rely on it. If the test ends as done but nothing arrived, the prefix in the dashboard and in Floodgate are probably not the same.
The link problem, and the QR code
On Java, clicking a product in the /buy menu puts a checkout link in chat. Bedrock players cannot click links in chat, so the plugin sends them the address as text. On a phone that is annoying; on a console it is worse, because most consoles have no good browser to pay with.
From plugin version 1.4.0 the plugin solves that with a map: a Bedrock player gets a QR code on a map in their hand. They point their phone camera at the screen and pay on the phone, while they stay in the game. The map disappears when they have paid, after 5 minutes, or when they leave, and it cannot be dropped or put in a chest. /buy qr shows it again.
If your Bedrock players buy from a console, this is the single biggest thing you can do for them. Make sure the plugin is up to date.
Perks that work on Bedrock
Most of what you sell works the same for a Bedrock player: a rank, a prefix in chat, a chat colour, extra homes, a kit, crate keys. Check the ones that depend on what the player's game can show:
- Items or cosmetics from a resource pack, such as hats or custom models, need their own setup in Geyser, or a Bedrock player sees the plain item underneath. Look at one on a Bedrock device before you sell it.
- Menus and GUIs from other plugins usually work, because Geyser translates chests and inventories, but test the ones a perk depends on.
- Anything with clickable chat, such as a "click here to claim" message, does not work on Bedrock. Give those players a command to type instead.
A Bedrock player who paid for a hat and sees a leather helmet will ask for a refund, so it is worth five minutes on a phone to check.
Things that go wrong, and why
| What happens | Why |
|---|---|
| The checkout cannot find the gamertag | GeyserMC only knows players who joined a Geyser server at least once. Ask them to join your server once and try again |
| A player says they are Bedrock, but their Java name works | They linked their Bedrock account to a Java account in Floodgate, so they play, and buy, as the Java account |
| The rank went to nobody | The prefix in the dashboard is not the one Floodgate uses |
| The rank went to another player | Someone bought for the gamertag without the prefix, as a Java name. Bedrock names always start with the prefix on your server |
A player who charges back or abuses the store can be banned by their gamertag too. The ban is on the account, so a new gamertag does not get around it. See Banning players.
Tell your Bedrock players
Many Bedrock players have learned that server stores are not for them, because so many do not work with a gamertag. One line in your Discord and at spawn fixes that: "Bedrock players can buy too: /buy, then scan the code with your phone."
Open a store for free and let every player on your server buy, whatever they play on.
Open your store in a few minutes
Free until you sell something. Players pay, the rank arrives in the game.