Requirements
- Java 17 or newer,
- Paper/Spigot 1.19+, Folia, BungeeCord or Velocity 3.x,
- a server added in the panel (see Servers),
- write access to the
plugins/ItemShop/folder (configuration and fulfillment journal).
Install the plugin
1
Download the plugin
In the Plugin section of the panel, download the universal JAR and put it in the
plugins/ folder. Don’t install several plugin variants at the same time.2
Generate the key and configuration
Choose the server and click Generate plugin key, then copy or download the ready
config.yml. The key is shown only once — if you lose it, generate a new one.3
Upload the configuration
Save the file as
plugins/ItemShop/config.yml and start the server.4
Check the connection
The
/itemshop command shows the connection status. In the panel, the server should switch to online.config.yml for each. After changing servers in the panel, generate the file again.
Configuration
The generator fills everything in for you. Example file:config.yml
Load changes with
/itemshop reload. Don’t use the server-wide /reload — it can leave the plugin in an inconsistent state.
Security
- The plugin key only works for fulfilling your shop’s orders, but treat it like a password: don’t publish
config.yml, commit it to a repository or paste it into support tickets. - If the key may have leaked, generate a new one and delete the old one under API keys (see API keys).
- Don’t delete the
fulfillment-journal.jsonfile in the plugin folder — without it, a delivery interrupted by a crash can’t be resolved safely.
How delivery works
A paid order reaches the plugin immediately. If several instances are connected, only one runs the commands. Before the first command the plugin saves its state to disk, so after a crash it knows where it stopped:- if all commands ran, after a restart the plugin only confirms the fulfillment — it doesn’t repeat the commands,
- if the server crashed while running commands, the outcome is uncertain. The order then goes to manual verification and you decide: complete or retry (see Orders).
Test before selling
- Create a product with a harmless test command, e.g.
say Test {PLAYER}. - Buy it with a 100% discount code — no payment provider involved.
- Check
/itemshop, the server log and the status change: Paid → Processing → Completed. - Repeat with the player offline, after the player joins, and after restarting the server before delivery.
- Separately, test the real provider in test mode (see Payments).
Troubleshooting
The plugin reports missing configuration
The plugin reports missing configuration
Check the exact field names:
apiUrl, apiKey, serverId. The key must start with isk_, and apiUrl must not end with /api/v2.An order is waiting for the player
An order is waiting for the player
Check the nickname spelling, the Require player online toggle and the
blockedServers list. A player joining or switching modes triggers delivery of pending orders after joinDeliveryDelaySeconds.An order needs manual verification
An order needs manual verification
The plugin detected an interrupted delivery — some commands may have run. First check the player’s state and the server logs, then choose complete or retry in the panel.
The server shows as offline in the panel
The server shows as offline in the panel
The plugin hasn’t sent a heartbeat for more than 5 minutes. Check
/itemshop, the server log and whether the server has internet access. Orders will wait until it reconnects.Next
Servers
Server features and online status.
Plugin protocol
Technical description of how the plugin talks to the shop.