What is NexaTrade?#
A safe two-player and marketplace trading platform that treats trades as recoverable transactions.
NexaTrade is a secure trade infrastructure plugin with escrow, multi-currency, cross-server sync, receipts, reputation, marketplace and recovery.
Product purpose, target audience, main systems, dependencies and quick links.
A safe two-player and marketplace trading platform that treats trades as recoverable transactions.
Economy, SMP, Lifesteal and network owners who need secure item/currency trades and audit trails.
SMP, Lifesteal, Economy, Survival and network servers.
Installation gets the plugin to boot. First Setup prepares it for production use.
Recommended first configuration pass after the plugin has generated its files.
Commands, permissions, and usage examples.
/tradeCommandSecure multi-currency trade command.
Not declared in plugin.yml
/trade
/nexatradeCommandNexaTrade admin command.
Not declared in plugin.yml
/nexatrade
Permission nodes are based on plugin.yml. Assign admin and bypass permissions carefully.
/lp group admin permission set trade.admin true/lp group default permission set trade.use trueConfiguration YAML files below contain short bundled default excerpts, not full files. Message YAML is documented only in Messages & Language.
Main runtime settings, license, modules, limits, storage and feature behavior.
config.yml. The generated file contains more options than this docs excerpt.# ...
# Short documentation excerpt from config.yml.
# This is not the complete YAML file.
# Lines before and after this preview are omitted from the docs.
# ...
server-id: "server-1"
license-key: "LICENSE"
color-format: "legacy" # legacy or minimessage
trade:
enabled: true
request-timeout-seconds: 60
request-cooldown-seconds: 8
final-countdown-seconds: 5
max-offer-items: 18
transaction-timeout-seconds: 45
cancel-on-inventory-close: true # Safety locked: closing any active trade view cancels the session.
shift-right-click: true
require-same-world-proximity: false
blocked-worlds: []
blocked-regions: []
blocked-gamemodes:
- SPECTATOR
compact-number-format: true
cross-server:
enabled: false # legacy display flag; effective module gate is modules.yml
require-production-database: true
stop-trades-if-redis-down: false
allow-single-server-trades-if-redis-down: true
player-lookup-mode: LOCAL_ONLY
redis-failure-behavior:
disable-cross-server: true
allow-single-server-trades: true
cancel-active-cross-server-trades: true
player-ttl-seconds: 15
heartbeat-seconds: 5
lock-ttl-seconds: 120
# ...
# More options continue in the generated plugin YAML file.
# Open plugins/<plugin-folder>/config.yml to review every setting.
# ...Top-level keysserver-id, license-key, color-format, trade, cross-server, redis
Production handlingBack up this file, edit the generated copy under the plugin folder, then run the product reload command or restart for startup-level settings.
Plugin-specific YAML settings used by this product.
currencies.yml. The generated file contains more options than this docs excerpt.# ...
# Short documentation excerpt from currencies.yml.
# This is not the complete YAML file.
# Lines before and after this preview are omitted from the docs.
# ...
coinsengine:
enabled: true
auto-register: true
disabled-currencies: []
currencies:
vault:
enabled: true
type: "vault"
display-name: "Coins"
cross-server-safe: true
menu:
material: "EMERALD"
exp:
enabled: true
type: "exp"
display-name: "EXP"
cross-server-safe: false
menu:
material: "EXPERIENCE_BOTTLE"
internal:
enabled: true
type: "internal"
display-name: "Nexa Coins"
cross-server-safe: true
menu:
material: "SUNFLOWER"
coinsengine-example:
enabled: false
type: "coinsengine"
currency-id: "coins"
display-name: "CoinsEngine Coins"
cross-server-safe: true
menu:
# ...
# More options continue in the generated plugin YAML file.
# Open plugins/<plugin-folder>/currencies.yml to review every setting.
# ...Top-level keyscoinsengine, currencies
Production handlingBack up this file, edit the generated copy under the plugin folder, then run the product reload command or restart for startup-level settings.
Economy, product, currency, marketplace or limit behavior.
limits.yml. The generated file contains more options than this docs excerpt.# ...
# Short documentation excerpt from limits.yml.
# This is not the complete YAML file.
# Lines before and after this preview are omitted from the docs.
# ...
limits:
min-currency-amount: 1
max-currency-amount: 1000000000
daily-completed-trades: 100
same-player-cooldown-seconds: 30
new-player-protection:
enabled: true
high-value-threshold: 100000
require-extra-confirmation: true
fees:
enabled: false
percentage: 0.0
fixed: 0.0
per-currency:
vault:
percentage: 0.0
fixed: 0.0
rank-limits:
default:
daily-trades: 10
max-trade-value: 100000
vip:
daily-trades: 50
max-trade-value: 1000000
admin:
bypass: true
first-join-protection:
enabled: true
min-playtime-minutes: 120
max-trade-value: 50000
block-trading-with-risky-players: true
# ...
# More options continue in the generated plugin YAML file.
# Open plugins/<plugin-folder>/limits.yml to review every setting.
# ...Top-level keyslimits, fees, rank-limits, first-join-protection
Production handlingBack up this file, edit the generated copy under the plugin folder, then run the product reload command or restart for startup-level settings.
Economy, product, currency, marketplace or limit behavior.
marketplace.yml. The generated file contains more options than this docs excerpt.# ...
# Short documentation excerpt from marketplace.yml.
# This is not the complete YAML file.
# Lines before and after this preview are omitted from the docs.
# ...
marketplace:
enabled: false
max-active-offers-per-player: 25
allow-partial-accept: false
require-escrow: true
public-offers: true
allow-offline-accept: false
expire-after-hours: 48
# ...
# More options continue in the generated plugin YAML file.
# Open plugins/<plugin-folder>/marketplace.yml to review every setting.
# ...Top-level keysmarketplace
Production handlingBack up this file, edit the generated copy under the plugin folder, then run the product reload command or restart for startup-level settings.
Feature modules and ready setup presets.
modules.yml. The generated file contains more options than this docs excerpt.# ...
# Short documentation excerpt from modules.yml.
# This is not the complete YAML file.
# Lines before and after this preview are omitted from the docs.
# ...
preset: SAFE # SIMPLE, SAFE, NETWORK, ECONOMY, ENTERPRISE, CUSTOM
modules:
single-server-trade: true
double-confirmation: true
countdown: true
escrow: true
item-snapshot: true
fingerprint: true
blacklist: true
illegal-item-detector: true
receipt: true
history: true
admin-logs: true
signed-audit-log: true
recovery: true
claim-storage: true
templates: false
reputation: true
cross-server: false
redis: false
mysql-required: false
marketplace: false
contracts: false
scheduled-trades: false
scam-reports: false
disputes: false
refunds: false
replay: false
smart-risk-check: false
price-database: false
discord-webhooks: false
rest-api: false
# ...
# More options continue in the generated plugin YAML file.
# Open plugins/<plugin-folder>/modules.yml to review every setting.
# ...Top-level keyspreset, modules, cross-server, escrow, marketplace, contracts
Production handlingBack up this file, edit the generated copy under the plugin folder, then run the product reload command or restart for startup-level settings.
Economy, product, currency, marketplace or limit behavior.
prices.yml. The generated file contains more options than this docs excerpt.# ...
# Short documentation excerpt from prices.yml.
# This is not the complete YAML file.
# Lines before and after this preview are omitted from the docs.
# ...
enabled: false
source: MANUAL # MANUAL, TRADE_HISTORY_AVERAGE, MARKETPLACE_AVERAGE, HYBRID
defaults:
DIAMOND: 100
EMERALD: 75
NETHERITE_INGOT: 2500
custom-items: {}
# ...
# More options continue in the generated plugin YAML file.
# Open plugins/<plugin-folder>/prices.yml to review every setting.
# ...Top-level keysenabled, source, defaults, custom-items
Production handlingBack up this file, edit the generated copy under the plugin folder, then run the product reload command or restart for startup-level settings.
Economy, product, currency, marketplace or limit behavior.
reputation.yml. The generated file contains more options than this docs excerpt.# ...
# Short documentation excerpt from reputation.yml.
# This is not the complete YAML file.
# Lines before and after this preview are omitted from the docs.
# ...
reputation:
enabled: true
show-warning-before-trade: true
allow-reviews: true
allow-scam-reports: true
require-completed-trade-for-review: true
same-player-review-weight-limit: true
admin-can-reset: true
tiers:
trusted: 85
normal: 60
risky: 30
weights:
completed-trade: 1
negative-review: -15
neutral-review: -3
scam-report: -25
dispute: -10
review-cooldown-hours: 24
same-partner-review-weight-limit: 3
display:
show-tier-to-players: true
show-score-to-players: false
show-negative-count-to-players: false
# ...
# More options continue in the generated plugin YAML file.
# Open plugins/<plugin-folder>/reputation.yml to review every setting.
# ...Top-level keysreputation
Production handlingBack up this file, edit the generated copy under the plugin folder, then run the product reload command or restart for startup-level settings.
Translation and formatting guidance based on the product's bundled resources.
This product ships messages.yml. Edit the generated copy in the plugin folder, keep placeholders intact, then reload the plugin command or restart for startup-level changes.
<red>Error message</red>
&cLegacy color message
{player} {amount} {reason}messages.yml. The generated file contains more message keys than this docs excerpt.# ...
# Short documentation excerpt from messages.yml.
# This is not the complete YAML file.
# Lines before and after this preview are omitted from the docs.
# ...
prefix: "&8[&bNexaTrade&8]&r "
no-permission: "&cYou do not have permission."
player-only: "&cOnly players can use this command."
unknown-player: "&cThat player is not online on this server."
unknown-network-player: "&cThat player is not online on the network."
usage: "&7Use &f/trade <player>&7, &f/trade accept&7, or &f/trade help&7."
module-disabled: "&cThe %module% module is disabled."
maintenance: "&cTrade system is currently under maintenance."
license-status: "&7License status: &f%status%"
request-sent: "&aTrade request sent to &f%player%&a."
request-received: "&f%player% &awants to trade."
request-accept-button: " &a&l[ACCEPT]"
request-deny-button: " &c&l[DENY]"
request-accept-hover: "&7Click to accept &f%player%&7's trade request."
request-deny-hover: "&7Click to deny &f%player%&7's trade request."
cross-server-unavailable: "&cCross-server trade service is temporarily unavailable. Your trade has been safely cancelled."
request-expired: "&cTrade request expired."
request-denied: "&cTrade request denied."
trade-started: "&aTrade started with &f%player%&a."
trade-cancelled: "&cTrade cancelled: %reason%"
trade-completed: "&aTrade completed. Receipt: &f%receipt%"
confirm-reset: "&eThe offer changed. Confirmations were reset."
confirmed: "&aYou confirmed the trade."
waiting-confirm: "&7Waiting for the other player to confirm."
countdown: "&eTrade completes in &f%seconds%&e..."
inventory-full-claim: "&eSome items were moved to your claim storage. Use &f/trade claims&e."
blacklisted-item: "&cThat item cannot be traded."
illegal-item: "&cThat item failed safety validation and cannot be traded."
currency-offered: "&aOffered &f%amount%&a."
currency-not-found: "&cUnknown currency."
currency-insufficient: "&cYou do not have enough %currency%."
limit-reached: "&cTrade limit reached: %reason%"
trade-toggle: "&7Trade toggle is now &f%status%&7."
ignore-updated: "&7%player% is now &f%status%&7."
# ...
# More options continue in the generated plugin YAML file.
# Open plugins/<plugin-folder>/messages.yml to review every setting.
# ...GUI cards describe the actual menus available in this product build.
Currency offer menu for selecting which money entry is added to the secure trade.
Currency OffersAmount input GUI for entering currency values during a trade offer.
Currency AmountSecure trade inventory for item offers, currency offers, confirmation state and player-to-player exchange.
NexaTradeStorage docs explain YAML, SQLite, MySQL, MariaDB and backup expectations when supported.
Use SQLite for single-server testing. Use MySQL/MariaDB for production and required cross-server trade workflows. Redis handles live network sync.
Each integration explains purpose, required/optional status, setup steps and troubleshooting.
Purpose: Provides economy withdrawals, deposits, prices, banks or metadata through Vault.
Troubleshooting: If balances, rewards or banks do not work, confirm Vault has an active economy provider and that no economy plugin loads after this product.
Purpose: Provides a named currency provider for prices, rewards, trades or shop transactions.
Troubleshooting: If transactions fail, verify the currency id, provider startup order and whether the player has enough balance or inventory space.
Purpose: Registers or consumes PlaceholderAPI values for scoreboards, formats and external displays.
Troubleshooting: If values stay blank, reload expansions and verify the identifier exactly matches the placeholder shown in this docs page.
Purpose: Connects gameplay behavior to claims, regions or group ownership rules.
Troubleshooting: If region or claim rules do not apply, check region priority, claim ownership, world names and whether the hook is enabled.
Purpose: Adds Bedrock player compatibility handling for request, GUI or input workflows.
Troubleshooting: If Bedrock users cannot complete the workflow, test the same flow on Java first and then check Floodgate UUID/input handling.
Purpose: Synchronizes runtime state between servers in a network setup.
Troubleshooting: If sync fails, verify server ids are unique, secrets match and the Redis/proxy channel is reachable from every server.
Purpose: Publishes logs or events to Discord channels or webhooks.
Troubleshooting: If Discord messages do not send, check webhook validity, rate limits and whether the event type is enabled.
Complete one escrow trade from request to receipt.
/trade <player>; the target uses /trade accept [player]. Confirm distance/world/mode rules./trade claims and /trade receipt <id>.Make offer, confirmation, cancellation and claim states visible to both players.
/trade history and receipt id first./trade claims after disconnect or full inventory./trade dispute/scamreport for staff review.Publish contracts/marketplace features only after escrow rollback is proven.
Protect escrow state, inventory consistency and transaction history.
trade: require-lock: true countdown-seconds: 3 rollback-on-failure: true audit-log: true recovery: claim-on-disconnect: trueNexaTrade is an escrow transaction: request → both offers → lock/countdown → commit or rollback.
/trade <player>; the target uses /trade accept [player]. Verify both players are in an allowed world, mode and proximity./trade claims, /trade receipt <id>, history and dispute/scam report flows before asking staff to refund.trade:
request-timeout-seconds: 60
final-countdown-seconds: 5
max-offer-items: 18
transaction-timeout-seconds: 45
cancel-on-inventory-close: true
safety:
require-same-world-proximity: falseFor public offers, create with /trade offer create, inspect with /trade offers, accept/cancel by id and verify escrow return. Contracts add a target, currency amount and expiry; test cancel/expire before advertising them.
Ready-to-follow scenarios reduce support tickets and make the product easier to configure.
Define currencies first, then prices, limits, permissions, logs and rollback or recovery behavior.
Use conservative defaults, SQLite or simple file storage, readable messages and relaxed limits for community servers.
Use production SQL, unique server IDs, shared sync secrets and a controlled Redis or proxy transport.
Define currencies first, then prices, limits, permissions, logs and rollback or recovery behavior.
Use production SQL, unique server IDs, shared sync secrets and a controlled Redis or proxy transport.
Start with console logs, config diffs, plugin version and reproduction steps.
Check request distance, disabled worlds, ignore/privacy toggles, cooldowns and whether another plugin blocks the trade command alias.
Look for inventory click errors, blacklist violations, currency withdrawal failure or a storage write rollback in console.
Verify provider balance, currency key, Vault/CoinsEngine hook status and whether the trade requires escrow before confirmation.
Check material, display name, lore and NBT matching rules. Custom item plugins may require explicit id whitelisting.
Verify host, port, database name, credentials, firewall access and the storage type in the generated YAML file.
Confirm transaction logging is enabled and storage writes complete after both players accept the trade.
Short answers for common buyer and staff questions.
No Folia claim is made for this product page. Run it on the server target listed in Overview.
This page targets Spigot/Paper with Java 21. Legacy 1.8 support is not part of this docs page.
Use SQLite for single-server testing. Use MySQL/MariaDB for production and required cross-server trade workflows. Redis handles live network sync.
Yes. Use the Configuration section to manage the product modules and behavior exposed by YAML.
Yes. Edit messages.yml and reload or restart according to the setting changed.
NexaTrade can consume PlaceholderAPI values in supported format or display files.
Product release notes grouped by version. Major public changes are written for buyers and server owners, not as raw commit logs.
Send enough information to reproduce the issue.
Plugin: NexaTrade
Plugin version:
Server version:
Java version:
Server software:
Database type:
Installed hooks:
Error log:
Steps to reproduce:
Expected behavior:
Screenshots/video: