Vault Plugin Minecraft: Economy and Permissions API Bridge (2026)
If you ever installed EssentialsX, ChestShop, mcMMO, Jobs or pretty much any economy plugin, you saw Vault listed as a dependency. Then comes the question: what is this magical jar, why do dozens of plugins demand it, and what breaks if you skip it. The short answer: Vault is an API bridge. It does nothing on its own, but without it plugins cannot talk to your economy or permission system.
This guide breaks it down: how Vault works internally, what service providers are, how to install it, which economy and permission providers are alive in 2026, how to fix "no compatible economy plugin found", when to switch to the VaultUnlocked fork, and when you don't need Vault at all.
Vault is an API, not a feature
The biggest misconception in the community: people think Vault itself runs the economy, hands out permissions, manages chat. It doesn't.
Vault is an abstraction layer. When ChestShop wants to check a player's balance, it doesn't call EssentialsX directly. It calls Vault: "give me the balance of player X". Vault delegates the request to whichever plugin registered itself as Economy Provider. That can be EssentialsX Eco, CMI, TNE, GemsEconomy, BeastTokens, anything.
Why this layer? So one shop plugin works on top of any economy without knowing internals. The ChestShop developer writes against Vault API once, and the server admin picks which economy backend to run.
Same with permissions. mcMMO wants to know if a player has mcmmo.skills.mining. It asks Vault, Vault hits the registered Permission Provider (LuckPerms, GroupManager, PermissionsEx, etc.), gets back true or false.
Vault exposes three APIs:
- Economy (
net.milkbowl.vault.economy.Economy) - Permission (
net.milkbowl.vault.permission.Permission) - Chat (
net.milkbowl.vault.chat.Chat)
Without a registered provider the API exists but returns a stub. The error "no compatible economy plugin found" means: Vault is installed, but nobody registered as economy provider.
How the Service Provider mechanism works
Bukkit/Paper has a built-in ServicesManager class. It is a service registry: any plugin can register an implementation of an interface, any other plugin can request that implementation.
Under the hood it works roughly like this. EssentialsX on startup does:
Bukkit.getServicesManager().register(
Economy.class,
new EssentialsEconomy(),
essentialsPlugin,
ServicePriority.Normal
);
ChestShop on startup does:
RegisteredServiceProvider<Economy> rsp =
Bukkit.getServicesManager().getRegistration(Economy.class);
if (rsp == null) {
log.severe("No compatible economy plugin found!");
return;
}
Economy econ = rsp.getProvider();
Vault itself doesn't register as an implementation in this scheme. It only defines the interfaces and decorates them with cross-version compatibility. That's why when you see "Hooked into Vault" in logs, it means a plugin found Vault classes in classpath and can now talk to whatever provider is registered.
If plugin loading order is wrong (economy plugin starts later than the shop), registration arrives late. Vault solves it through lazy lookup: a shop should not cache the Economy reference in onEnable, better fetch it on first request.
Installing Vault
Shortest chapter in the guide. Vault is one jar.
- Go to github.com/MilkBowl/Vault/releases and grab the latest stable (as of 2026 it's the 1.7.x branch).
- Drop
Vault.jarintoplugins/. - Restart the server. Not
/reload, that breaks service registration.
Verification:
/plugins
You'll see Vault in green. Then /vault-info shows registered providers:
/vault-info
Healthy server output:
Vault v1.7.3-SNAPSHOT Information
Economy: EssentialsX Economy [Enabled]
Permissions: LuckPerms [Enabled]
Chat: LuckPerms-Chat [Enabled]
If you see (Disabled) or none next to Economy, no plugin registered as provider. See the troubleshooting section.
Economy providers
Vault doesn't store balances. The provider does. In 2026 on Paper 1.21+ the relevant set looks like this.
EssentialsX Economy
Most popular option. Comes with EssentialsX. Download the full pack: EssentialsX.jar, EssentialsXChat.jar, plus separate Geo, AntiBuild, etc. The economy module sits inside the main EssentialsX.jar.
Config in plugins/Essentials/config.yml:
currency-symbol: '$'
starting-balance: 100.0
max-money: 10000000000000
min-money: -10000
After startup /bal shows balance, /pay transfers, /eco is admin. Vault picks up registration automatically.
CMI Economy
CMI is a paid all-in-one (replaces EssentialsX, AdminFun, much more). Has its own internal economy.
In plugins/CMI/config.yml:
Economy:
Enabled: true
StartingMoney: 100.0
Currency:
Format: '$ {amount}'
CMI registers in Vault with Normal priority. If EssentialsX Eco runs in parallel, you get a conflict: both register, whichever loaded first wins. Fix: disable economy in one plugin or play with ServicePriority in config.
TheNewEconomy (TNE)
TheNewEconomy is a standalone economy plugin without bundled features. Supports multi-currency (several currencies on one server), banks, interest, regional settings.
Core:
Currency:
Default:
Major_Name: Dollar
Major_Plural: Dollars
Symbol: '$'
Decimal_Places: 2
TNE shines on servers that need multiple currencies (e.g. main currency + voting tokens).
GemsEconomy
GemsEconomy is also multi-currency, simpler than TNE feature-wise but easier to admin. Stores in MySQL, works fine across BungeeCord/Velocity networks.
Vault economy compatibility
| Provider | Vault | VaultUnlocked | Multi-currency | Storage |
|---|---|---|---|---|
| EssentialsX Eco | yes | yes | no | YAML |
| CMI Economy | yes | yes | no | SQLite/MySQL |
| TheNewEconomy | yes | yes | yes | MySQL/H2 |
| GemsEconomy | yes | yes | yes | MySQL |
| BeastTokens | yes | via adapter | yes (tokens) | MySQL |
| iConomy | abandoned | no | no | YAML |
Bottom line: for typical SMP go EssentialsX Eco, for complex RPG/PvP look at TNE or GemsEconomy.
Permission providers
For permissions in 2026 there is one real choice, LuckPerms. The rest is dead or legacy.
LuckPerms
LuckPerms rules. Standard install, drop LuckPerms-Bukkit-5.x.x.jar into plugins/, done. Vault sees both the permission provider and the chat provider (for prefixes/suffixes) automatically.
Verify:
/vault-info
Should show:
Permissions: LuckPerms [Enabled]
Chat: LuckPerms-Chat [Enabled]
LuckPerms natively implements the Vault API. No extra config.
GroupManager
GroupManager came with old EssentialsX, modern releases dropped it. If for some reason you're on 1.8 with GroupManager, note: long unmaintained, and Vault economy hooks work weirdly.
PermissionsEx (PEX)
Dead project. Don't use, has critical bugs that lose permissions. If you have a PEX server, migrate to LuckPerms via /lp import pex.
Bukkit superperms
If no permission plugin is installed at all, Vault falls back to standard Bukkit superperms. That means permissions read from permissions.yml and only /op commands really work. Useless for any serious server.
Permission provider comparison
| Provider | Maintenance | Vault | Contexts | Verdict |
|---|---|---|---|---|
| LuckPerms | active | yes | yes | use it |
| GroupManager | dead | yes | no | skip |
| PermissionsEx | dead | yes | partial | migrate away |
| Bukkit superperms | basic | stub | no | skip |
Chat providers
Vault Chat API is about prefixes, suffixes and group display. For example EssentialsXChat or Carbon reads the prefix from the chat provider.
In 99% of cases the chat provider is the same LuckPerms because it implements both Permission and Chat interfaces. Nothing extra to do: install LuckPerms, chat provider appears.
If you use GroupManager (why?), it also registers as Chat. CMI has its own chat module and registers as Chat when Chat.Vault option is enabled.
Verifying via /vault-info and /papi parse
Fastest way to confirm Vault sees everything:
/vault-info
or short:
/vault
Three lines: Economy, Permissions, Chat, each with provider name and state.
You can also test through PlaceholderAPI. Install PAPI and the vault extension (/papi ecloud download Vault):
/papi parse <player_name> %vault_eco_balance%
/papi parse <player_name> %vault_eco_balance_formatted%
/papi parse <player_name> %vault_prefix%
/papi parse <player_name> %vault_suffix%
/papi parse <player_name> %vault_group%
If placeholders return an empty string or untouched text, Vault didn't pick up a provider. If they return a number or prefix, works.
Programmatic check from a plugin's config (e.g. Citizens, Quests):
hooks:
vault: true
After restart the plugin should log "Hooked into Vault" or similar.
Common error: no compatible economy plugin found
Most frequent support ticket. In log:
[ChestShop] No compatible economy plugin found!
[Jobs] Vault dependency found, but no economy plugin registered.
[mcMMO] Could not find Vault economy hook.
Causes and diagnostic order.
1. Vault not installed
/plugins
If Vault not green in the list, download the jar and drop into plugins/.
2. Vault installed but no economy provider
/vault-info
If Economy: None or Disabled, install EssentialsX or CMI or TNE. One of them.
3. Provider installed but economy module disabled
Frequent on CMI. In plugins/CMI/config.yml:
Economy:
Enabled: false
Set true, restart.
For EssentialsX a rare case: economy module physically missing. Download the full EssentialsX from essentialsx.net (not just Chat).
4. Conflict of two providers
/vault-info shows one provider but plugins say balance doesn't change. Possible: one plugin writes to EssentialsX Eco, another reads CMI Eco. Two different balances. Fix: keep one provider, disable registration in the other.
5. Old Vault
Vault prior to 1.7 doesn't track modern Paper 1.21+ API changes. Update to 1.7.3+.
6. Proxy conflict
In a Velocity network the economy plugin sits on each backend separately. If only one server has it, the others log "no economy". Vault doesn't propagate registration through the proxy: every server has its own plugin set.
VaultUnlocked: a fork for modern needs
The original Vault has been around since 2011 and sometimes lags behind: no native multi-currency support, no BigDecimal for huge numbers, no async operations. Hence the fork VaultUnlocked.
VaultUnlocked brings:
- Multi-currency economy at API level
- BigDecimal instead of double for precise math
- Async balance lookup
- Backwards-compatible with classic Vault API (plugins written for Vault keep working)
Install is identical: one jar in plugins/. Just not both at once, either Vault, or VaultUnlocked.
# Replacement
rm plugins/Vault.jar
cp ~/downloads/VaultUnlocked.jar plugins/
After restart check:
/vault-info
VaultUnlocked shows the same plus marks which providers use the extended API. EssentialsX, CMI, LuckPerms work with VaultUnlocked unmodified.
When to switch:
- Server has multi-currency economy (dollars + tokens + crystals)
- You run TNE or GemsEconomy and want async ops
- You write your own plugins and need BigDecimal
When not to switch: classic Vault works fine for you, don't touch it.
When you don't need Vault
Not every server requires Vault. Cases where you can skip it:
- PvP server with no economy and no complex groups. No shops, no EssentialsX Eco, permissions handled by op + basic LuckPerms, nobody calls Vault.
- Survival with one shop plugin that has built-in economy. For example, QuickShop can work without Vault if TNE or Treasury is installed.
- Minigames behind BungeeCord/Velocity. Bedwars/Skywars usually use their own currency via coin plugins, no Vault.
- Pure technical server. Test, build server, creative where everyone is op.
Modern trend is Treasury, an alternative API bridge bypassing Vault limits. If all your plugins support both Vault and Treasury, you can live without Vault. But realistically in 2026 90% of popular plugins still hook specifically into Vault.
Migrating from old plugins to a modern stack
If you're spinning up a new 2026 server, the baseline stack is:
plugins/
Vault.jar # or VaultUnlocked.jar
LuckPerms-Bukkit.jar
EssentialsX.jar
EssentialsXChat.jar
PlaceholderAPI.jar
That's enough for:
- Economy (
/bal,/pay,/eco) - Permissions via LuckPerms (
/lpcommands, web editor) - Prefixes/suffixes in chat
- Anything else that needs Vault
Migrating from an old server: backup, update Vault to 1.7.x, EssentialsX to latest (2.20+ minimum), LuckPerms to 5.5+, restart, check /vault-info. Balances and groups survive if you didn't change plugin storage.
Fine-tuning priorities
In rare cases when two economy providers are installed and you need to pick the main one, look at the main plugin's config. EssentialsX Essentials/config.yml:
update-bed-at-daytime: true
# Vault registration priority is not configurable directly,
# managed by plugin load order
Real workaround: rename the plugin jar so it loads earlier or later. Alphabetical order. AAA-EssentialsX.jar loads before CMI.jar. A hack but it works.
The civilized way: keep only one economy provider on the server. Two parallel economies almost always mean a forgotten plugin or a misconfig.
FAQ
Does Vault itself create money or permissions?
No. Vault is an API bridge. It defines the Economy, Permission, Chat interfaces and provides a ServicesManager wrapper. Money is stored by the provider (EssentialsX, CMI, TNE), permissions by LuckPerms.
What happens if I install Vault and no provider?
Vault loads, dependent plugins load, but when they request a balance or check a permission they get null. Logs show "no compatible economy plugin found" or similar.
Can I run Vault and VaultUnlocked together?
No. Two jars with the same packages and classes. Server either fails to load or behaves unpredictably. Pick one.
LuckPerms and GroupManager at the same time?
Bukkit technically allows it, but don't. They conflict, fight over registration, permissions get lost. Migrating from GroupManager to LuckPerms: /lp import groupmanager, remove GroupManager.
Do I need Vault on a Velocity proxy?
Proxy plugins (running on Velocity itself) usually don't use Vault. Vault is a Bukkit API. On backend servers behind the proxy you do need it. Per server.
Why does ChestShop say "no economy" while EssentialsX is installed?
Check /vault-info Economy is not None. If None: EssentialsX economy module is disabled or didn't load, check Essentials/server.log. If green, restart the server: ChestShop may have cached a null result during load.
Closing thoughts
Vault is infrastructure. Set it up once and forget. Trouble starts when economy or permission choice happens without understanding which provider registers what. Remember the rule: one provider per API, after startup logs should be green on all three lines, and any "no compatible plugin" error clears in thirty seconds with /vault-info.
If your server is already under attack and you're trying to configure the plugin stack at the same time, run a proven DDoS protection like MineGuard and focus on configuration in peace. Sorting Vault and providers is much nicer when traffic stays up.
Protect Your Server from DDoS Attacks
Free protection with 5-minute setup. 1 TB bandwidth included.
Try for FreeRelated Articles
Hosting a resource pack for a Minecraft server: complete guide (2026)
How to put a resource pack on a host, generate the sha1 and feed it to the client via server.properties. GitHub raw, Mc-Packs.net, Cloudflare R2, self-hosted nginx, versioning, multi-language and why Discord CDN died in 2024.
Free DDoS Protection for Minecraft Servers: How It Actually Works
Proper DDoS protection for Minecraft does not have to cost a fortune. Learn about MineGuard's free plan: what's included, who it's for, and when it makes sense to upgrade.
Minecraft Server Security Checklist: 15 Essential Points for 2026
Complete Minecraft server security checklist: from software updates and firewall setup to DDoS protection and incident response planning. 15 actionable steps with config examples.