Skip to Content
FluxStore is currently invite-only. Some sections of this documentation are still being written and expanded.
Sales & MarketingLoyalty Rewards

Loyalty Rewards

This feature requires a Pro plan.

Loyalty Rewards gives every player a points wallet they build up by buying, voting, and referring friends, then spend as a discount at checkout. Points are a per-player balance tied to their username, and you control how they’re earned, what they’re worth, and when they expire.

The currency label is brandable per store. Call them “Points”, “Gems”, “Coins”, or whatever fits your server. Throughout this page, “label” refers to whatever singular or plural name you’ve configured.

How Loyalty Rewards Work

Players accumulate points from the activities you enable, then redeem them at checkout for a currency discount. A player with 500 points and a redemption rate of “50 points = $1 off” can knock $10 off their next order. Points are debited when the order is paid, and restored if the order is later refunded.

Loyalty Rewards is off by default. Enable it and set your redemption rate from Dashboard > Loyalty Rewards before players can earn or spend.

Points Value

The redemption rate sets what points are worth at checkout. It’s defined as the number of points required for one unit of your store currency (RedeemPointsPerUnit).

For example, with a rate of 50, 50 points convert to $1 of discount, so 500 points are worth $10. Choose a rate that makes earning feel rewarding without giving away more margin than you’re comfortable with.

Earning Points

All earning rules are configured in the dashboard. You can mix and match the sources below.

  • Purchases. Players earn on every paid order. Choose one store-wide mode:

    • Percent of spend. A percentage of the order subtotal is converted into points.
    • Flat points per currency unit. A fixed number of points awarded for each unit of currency spent.

    You can set per-package overrides so specific packages earn at a different rate (or none at all) regardless of the store-wide mode.

  • Votes. When you run a vote-reward campaign through Votifier, the FluxStore plugin awards points per vote. Set your points-per-vote value in the dashboard. See the plugin protocol for how votes are delivered.

  • Referrals. When a referral converts, the referrer can be awarded points on top of any reward commands you’ve configured.

  • Manual grants. Give points by hand from the dashboard. Use the Give points action or open a player’s row and adjust their balance directly. Useful for one-off rewards, goodwill, or corrections.

  • API and in-game grants. Award points programmatically through the Loyalty API or in-game with /fluxstore points give.

Earning never applies to the points-funded portion of an order or to tax. If a player pays partly with redeemed points, only the remaining cash portion (excluding tax) counts toward new points earned.

Spending Points at Checkout

When loyalty is enabled and a player has a balance, checkout shows an “Apply my points” toggle (labelled with your configured currency name and balance). Turning it on converts the player’s points into a currency discount.

Points are applied after any coupon and gift card, against the remaining order total. Two limits keep redemption in check:

  • Minimum redeem. Players must redeem at least this many points to apply a discount.
  • Maximum percent of order. Caps the points discount at a percentage of the order total, so points can never cover the entire order.

The points are debited when the order is paid, not when the toggle is switched on. If the order isn’t completed, the player keeps their balance.

Refunds

Refunding an order reverses both sides of the loyalty ledger for that order:

  • Any points the player spent on the order are restored to their balance.
  • Any points the player earned on the order are clawed back.

If a clawback would take a player below zero (for example, they already spent the earned points), their balance is reduced as far as it can go. Refunds never leave a negative balance.

Expiry

Points can optionally expire. Set the expiry window in days, and points expire that many days after they were earned. Set it to 0 to disable expiry, in which case points never expire.

Expiry is evaluated per batch of earned points, so a player’s oldest points are always the first to expire.

In-Game Commands

The FluxStore plugin adds player-facing loyalty commands. Vote rewards additionally require Votifier.

CommandDescriptionPermission
/fluxstore pointsShows the player their current balance.fluxstore.points (granted to everyone by default)
/fluxstore points <player>Shows another player’s balance.fluxstore.points.view.others (operators by default)
/fluxstore points give <player> <amount> [reason]Grants points to a player, with an optional reason logged against the grant.fluxstore.points.give (operators by default)

In-game commands require the FluxStore plugin to be connected to your server, and are available on every supported platform (see the platform feature matrix). The permissions above apply to Spigot/Paper and proxies; on Fabric/Forge/NeoForge, viewing another player’s balance and giving points require vanilla permission level 2 (op) instead. Vote rewards also require Votifier (Spigot/Paper) or NuVotifier (BungeeCord/Velocity). Without the plugin you can still grant and manage points from the dashboard and the API.

Plugin notifications

The plugin can also message players about their points. These are controlled per server in the plugin’s config.yml:

loyalty: # Award loyalty points for Votifier votes. Points-per-vote is configured on the # dashboard under Loyalty Rewards; set this to false to stop earning on this server. vote-rewards: true # Tell players in chat how many points they earned when they vote vote-message: true # Show players their points balance when they join (skipped when the balance is zero) join-balance-message: false
  • Vote message. When a vote awards points, the voter sees how many they earned and their new balance. On by default.
  • Join balance message. Shortly after joining, players are reminded of their balance so they remember to spend it. Off by default, and never shown for zero balances.
  • Vote rewards toggle. If you run multiple servers and only want votes on some of them to earn points, turn vote-rewards off on the others. The dashboard’s points-per-vote setting still controls how much each vote is worth.

Both messages are only shown to players with the fluxstore.points permission, so revoking that node hides the points system from a player entirely.

Settings Reference

Configure these from Dashboard > Loyalty Rewards.

SettingDescription
EnabledTurns Loyalty Rewards on or off for the store.
Label (singular)Singular currency label, e.g. “Point”, “Gem”, “Coin”.
Label (plural)Plural currency label, e.g. “Points”, “Gems”, “Coins”.
Redeem ratePoints required per unit of store currency (RedeemPointsPerUnit). For example, 50 means 50 points = $1 off.
Purchase earn modePercent of spend or Flat points per currency unit.
Purchase earn valueThe percentage (percent mode) or points-per-currency-unit (flat mode) used for purchase earning.
Earn on sale itemsWhether purchases of discounted or on-sale packages earn points.
Points per votePoints awarded for each Votifier vote.
Referral pointsPoints awarded to the referrer when a referral converts.
Minimum redeem pointsThe smallest number of points a player can redeem in a single order.
Maximum redeem percentCaps the points discount at this percentage of the order total.
Expiry daysDays after earning that points expire. 0 means points never expire.

Next Steps

  • Referrals to reward customers who bring in new buyers
  • Gift Cards for store credit that customers can purchase and redeem
  • Loyalty API to read balances and grant points programmatically