Skip to main content

Economy Module

File: modules/economy/config.yml

The Economy module provides a fully featured multi-currency economy system with Vault integration, balance top leaderboards, configurable number formatting, pay confirmations, and transaction reason tracking. You can define as many economies as you need, each with its own symbol, format, limits, and Vault registration status.


Configuration

enable: true

# The name of the default economy used by Vault and /pay
default-economy: "money"

# List of economy definitions
economies:
- name: "money"
display-name: "&6Money"
symbol: "$"
format: "%price%$"
vault: true
min: 0
max: 1000000000
min-pay: 0
max-pay: 1000000000
enable-pay: true
enable-confirm-inventory: true
min-confirm-inventory: 1000
price-format: PRICE_WITH_REDUCTION

- name: "coins"
display-name: "&eCoins"
symbol: "\u26c1"
format: "%price% \u26c1"
vault: false
min: 0
max: 1000000000
min-pay: 0
max-pay: 1000000000
enable-pay: true
enable-confirm-inventory: true
min-confirm-inventory: 1000
price-format: PRICE_WITH_REDUCTION

# Multiplier suffixes for the /pay command number shorthand
# Players can type e.g. /pay Player 5k to pay 5000
number-format-sell-multiplication:
k: 1000
m: 1000000
b: 1000000000
t: 1000000000000
q: 1000000000000000
qq: 1000000000000000000
s: 1000000000000000000000
ss: 1000000000000000000000000
o: 1000000000000000000000000000
n: 1000000000000000000000000000000
d: 1000000000000000000000000000000000
uu: 1000000000000000000000000000000000000
dd: 1000000000000000000000000000000000000000
tr: 1000000000000000000000000000000000000000000

# How prices are formatted globally
# Options: PRICE_RAW, PRICE_WITH_DECIMAL_FORMAT, PRICE_WITH_REDUCTION
price-format: PRICE_WITH_REDUCTION

# Decimal format pattern used when price-format is PRICE_WITH_DECIMAL_FORMAT
price-decimal-format: '#,###.#'

# Reduction tiers used when price-format is PRICE_WITH_REDUCTION
price-reductions:
- format: "%amount%K"
maxAmount: 999999
display: "1K"
- format: "%amount%M"
maxAmount: 999999999
display: "1M"
- format: "%amount%B"
maxAmount: 999999999999
display: "1B"
- format: "%amount%T"
maxAmount: 999999999999999
display: "1T"
- format: "%amount%Q"
maxAmount: 999999999999999999
display: "1Q"

# Balance top leaderboard settings
enable-baltop: true
baltop-refresh-seconds: 900
baltop-placeholder-user-empty: "?"
baltop-display: MESSAGE
baltop-message-economy: money
baltop-message-amount: 10

# Whether to store economy data for offline players (increases storage usage)
store-offline-player-money: false

# Default balances granted to new players
default-economies:
- economy: money
amount: 100

# Transaction reason strings used in Vault and internal logging
pay-withdraw-reason: "Payment sent"
pay-deposit-reason: "Payment received"
command-give-reason: "Admin give"
command-give-all-reason: "Admin give all"
command-give-random-reason: "Admin give random"
command-take-reason: "Admin take"
command-reset-reason: "Admin reset"
command-set-reason: "Admin set"

Options

General Options

OptionTypeDefaultDescription
enableBooleantrueEnable or disable the Economy module
default-economyStringmoneyThe name of the default economy. This economy is used for Vault integration and as the default for commands that do not specify an economy
price-formatStringPRICE_WITH_REDUCTIONGlobal price formatting mode. Options: PRICE_RAW (no formatting), PRICE_WITH_DECIMAL_FORMAT (uses price-decimal-format), PRICE_WITH_REDUCTION (uses price-reductions tiers)
price-decimal-formatString#,###.#Java DecimalFormat pattern used when price-format is PRICE_WITH_DECIMAL_FORMAT
enable-baltopBooleantrueEnable the balance top leaderboard
baltop-refresh-secondsInteger900How often (in seconds) the baltop leaderboard is refreshed. 900 = 15 minutes
baltop-placeholder-user-emptyString?Placeholder text displayed in baltop when a position has no player
baltop-displayStringMESSAGEHow the baltop leaderboard is displayed. Currently supports MESSAGE
baltop-message-economyStringmoneyThe economy used when displaying the baltop via the /baltop command
baltop-message-amountInteger10Number of entries shown per page in the baltop leaderboard
store-offline-player-moneyBooleanfalseIf true, economy data for offline players is stored and accessible via placeholders. Increases storage usage

Economy Entry Properties

Each entry in the economies list supports the following properties:

PropertyTypeDefaultDescription
nameString-Unique internal name for this economy. Used in commands, placeholders, and configuration references
display-nameString-Display name shown to players. Supports color codes and MiniMessage
symbolString-Currency symbol (e.g., $, T, special Unicode characters)
formatString-Format string for displaying prices. Use %price% as the amount placeholder (e.g., %price%$ or %price% coins)
vaultBooleanfalseIf true, this economy is registered with the Vault API and can be used by other plugins
minDouble0Minimum balance allowed for this economy
maxDouble1000000000Maximum balance allowed for this economy
min-payDouble0Minimum amount a player can send in a single /pay transaction
max-payDouble1000000000Maximum amount a player can send in a single /pay transaction
enable-payBooleantrueWhether the /pay command is enabled for this economy
enable-confirm-inventoryBooleantrueIf true, a confirmation GUI opens before processing pay transactions for this economy
min-confirm-inventoryDouble1000Minimum payment amount required to trigger the confirmation GUI. Payments below this amount process immediately
price-formatStringPRICE_WITH_REDUCTIONPer-economy price formatting override. Same options as the global price-format
info

Only one economy should have vault: true. This economy is registered with the Vault API and will be used by any third-party plugin that queries Vault for economy data.

Number Format Multipliers

The number-format-sell-multiplication map defines shorthand suffixes players can use with the /pay command. For example, typing /pay Player 5k sends 5,000.

SuffixMultiplier
k1,000
m1,000,000
b1,000,000,000
t1,000,000,000,000
q1,000,000,000,000,000
qq1,000,000,000,000,000,000
s10^21
ss10^24
o10^27
n10^30
d10^33
uu10^36
dd10^39
tr10^42

Price Reduction Tiers

When price-format is set to PRICE_WITH_REDUCTION, amounts are abbreviated using the configured tiers:

PropertyTypeDescription
formatStringThe display format. Use %amount% for the reduced number (e.g., %amount%K)
maxAmountLongThe upper bound for this tier. Amounts exceeding this value use the next tier
displayStringA label for this tier (e.g., 1K, 1M, 1B)

Example: A balance of 1,500,000 would display as 1.5M using the default reduction tiers.

Default Economies

The default-economies list defines the starting balance given to new players:

PropertyTypeDescription
economyStringThe economy name to grant the starting balance in
amountDoubleThe starting balance amount

Transaction Reasons

Transaction reasons are logged with each economy operation and can be used for auditing:

OptionTypeDefaultDescription
pay-withdraw-reasonStringPayment sentReason logged when money is withdrawn via /pay
pay-deposit-reasonStringPayment receivedReason logged when money is deposited via /pay
command-give-reasonStringAdmin giveReason logged for /eco give
command-give-all-reasonStringAdmin give allReason logged for /eco give-all
command-give-random-reasonStringAdmin give randomReason logged for /eco give-random
command-take-reasonStringAdmin takeReason logged for /eco take
command-reset-reasonStringAdmin resetReason logged for /eco reset
command-set-reasonStringAdmin setReason logged for /eco set
tip

Transaction reasons appear in Vault API callbacks and can be picked up by logging plugins that monitor economy transactions.


CommandAliasesPermissionDescription
/moneybalanceessentials.moneyShow your current balance
/pay-essentials.payPay another player
/paytoggle-essentials.pay.toggleToggle whether you can receive payments
/economyecoessentials.eco.useManage economies (give, take, set, reset, show)
/balancetopbaltopessentials.balance.topShow the top balances leaderboard

Economy Subcommands

SubcommandDescription
giveGive money to a player
takeTake money from a player
setSet a player's balance
resetReset a player's balance to the default
reset-allReset all player balances
showShow a player's balance
give-randomGive money to a random online player
give-allGive money to all online players

PermissionDescription
essentials.moneyAllows using the /money command
essentials.payAllows using the /pay command
essentials.pay.toggleAllows toggling payment reception
essentials.eco.useAllows using /economy admin commands
essentials.balance.topAllows viewing the balance top leaderboard

Player Balance

PlaceholderDescription
%zessentials_user_formatted_balance_{economy}%Formatted balance for the specified economy (e.g., 1.5M$)
%zessentials_user_balance_{economy}%Raw numeric balance for the specified economy
%zessentials_user_custom_balance_{economy}_{format}%Balance formatted with a custom DecimalFormat pattern
%zessentials_user_position_{economy}%Player's rank position in the baltop leaderboard

Baltop Leaderboard

PlaceholderDescription
%zessentials_economy_baltop_name_{economy}_{position}%Player name at the given baltop position
%zessentials_economy_baltop_uuid_{economy}_{position}%UUID of the player at the given baltop position
%zessentials_economy_baltop_amount_{economy}_{position}%Raw balance amount at the given position
%zessentials_economy_baltop_formatted_amount_{economy}_{position}%Formatted balance amount at the given position
warning

Replace {economy} with the actual economy name (e.g., money, coins) and {position} with the rank number starting from 1. Using an invalid economy name will return an empty value.

Example: Display the top 3 players in the money economy:

1. %zessentials_economy_baltop_name_money_1% - %zessentials_economy_baltop_formatted_amount_money_1%
2. %zessentials_economy_baltop_name_money_2% - %zessentials_economy_baltop_formatted_amount_money_2%
3. %zessentials_economy_baltop_name_money_3% - %zessentials_economy_baltop_formatted_amount_money_3%
Copyright © 2026 GroupeZ|Build #loading...|-