Emberstore logo

Emberstore

An in-game store for Paper servers. Players browse /store, pay in a checkout dialog through the gateway you choose, and get their reward once the payment is confirmed, even if they logged off in the meantime.

  • Paper 1.21.7 and newer
  • Java 21 or newer
  • 11 payment gateways
  • SQLite, H2, MySQL or MariaDB

Why this one

Built so a payment is never granted twice or lost

01

One path for every payment

A signed webhook, a status lookup when the webhook never came, and a test simulation all go through the same handler. A repeated message from a gateway is ignored, so nobody gets their rank twice.

A payment that is short, in the wrong currency, or late is never granted on its own. It is marked for review and staff are told.

How payments are confirmed
Signed webhooks, reconciliation lookups and test simulations all feed one status handler, which completes, reviews, reverses or ends the order.
02

Works for every player who joins

Java players on 1.21.6 or newer get the checkout dialog. Bedrock players and older clients get a chest menu instead, and both end at the same payment link in chat.

Dialogs and the menu fallback
A player on a 1.21.6 or newer Java client gets the checkout dialog. Bedrock players, older clients through ViaVersion, or servers with dialogs turned off get a chest menu, and both end at the same payment link.
03

Ready for networks

Put every server on one MySQL or MariaDB database. One server takes the payments, and the reward is delivered on whichever server the player is playing on.

Set up a network
Several servers share one MySQL or MariaDB database. Only the server with webhook.enabled true receives payments, and each server delivers rewards to the players online on it.

Quick start

Taking payments in four steps

  1. 1

    Drop in the jar

    Put the jar in your plugins folder on a Paper server and start it once.

  2. 2

    Turn on a gateway

    Fill in one gateway section of config.yml with its keys and set enabled to true.

  3. 3

    Point webhooks at you

    Set webhook.public-base-url to an HTTPS address that reaches the listener.

  4. 4

    Fill your store

    Edit the category files, run /store admin reload, and open /store.

Full installation guide

Try it all first with test mode, no real money needed.

Everything is documented

Every config key, every command and every permission has a page. If something is still unclear, ask in the Discord.

Emberstore is by zArrowTan. The Discord is the only support channel, there is no public issue tracker.