Skip to content
Home
Features
  • Shop templates
  • Payment gateways
  • Plugin and deliveries
  • Shop languages
  • Shop panel
  • API and webhooks
Pricing
Help center
  • Contact
  • Service status
  • Terms of Service
  • Privacy Policy
  • Documentation
  • API documentation
Language

Prices are approximate and converted at exchange rates. The base price is in PLN.

Currency
Client panel
  • Home
  • Pricing

Features

  • Shop templates
  • Payment gateways
  • Plugin and deliveries
  • Shop languages
  • Shop panel
  • API and webhooks

Help center

  • Contact
  • Service status
  • Terms of Service
  • Privacy Policy
  • Documentation
  • API documentation
Client panel
Language

Prices are approximate and converted at exchange rates. The base price is in PLN.

Currency
0PLN To start
24/7 Sales
9 Gateways
5 Languages
3 Templates
  • vip-30d32
  • svip-30d34
  • klucz-epic27
  • unban24
  • fly-7d23
  • pakiet-start21

Documentation EpicPay

GuideAPI and webhooks

EpicPay API and webhooks

Updated: 21.10.2026

Contents
  1. 1. Introduction
  2. 2. Keys and authentication
  3. 3. Selling from your own website
  4. 4. Public endpoints
  5. 5. Shop information - GET /shops/{uuid}
  6. 6. Category list - GET /shops/{uuid}/categories
  7. 7. Products in a category - GET /shops/{uuid}/categories/{categoryId}/packages
  8. 8. All shop products - GET /shops/{uuid}/packages
  9. 9. Active payment gateways - GET /shops/{uuid}/gateways
  10. 10. Shop announcements - GET /shops/{uuid}/announcements
  11. 11. Top players - GET /shops/{uuid}/top-players
  12. 12. Recent purchases - GET /shops/{uuid}/recent-purchases
  13. 13. Create an order - POST /shops/{uuid}/orders
  14. 14. Order status - GET /shops/{uuid}/orders/{token}
  15. 15. Validate a voucher - POST /shops/{uuid}/vouchers/validate
  16. 16. Shop info + statistics - GET /shops/{uuid}/me
  17. 17. Transaction list - GET /shops/{uuid}/transactions
  18. 18. Webhooks
  19. 19. Plugin API (deliveries)
  20. 20. Errors

1. Introduction

The EpicPay public API lets you show your shop offer on your own website, launcher or bot, create an order and check its status. Base URL: https://api.epicpay.eu/v1. Responses are JSON, amounts are in Polish złoty (PLN).

  • Limit: 120 requests per minute per IP address. Above it the API returns 429 - wait a moment and try again.
  • An interactive version of the docs (Swagger) where you can send requests is at https://api.epicpay.eu/docs, and the OpenAPI specification at https://api.epicpay.eu/v1/openapi.json.
  • You point to a shop with its UUID ({uuid} in the path). You find it in the panel: Shop settings → Plugin (shop_uuid).

2. Keys and authentication

KeyUsed forWhere to find it
shop_uuidthe shop identifier in API paths and in the pluginShop settings → Plugin
api_secretthe plugin API (deliveries); never use it on a websiteShop settings → Plugin
public_api_keyendpoints with shop data (/me, /transactions), header Authorization: BearerShop settings → API keys (from the Pro plan)
webhook secretsignature of the events sent to your appShop settings → Webhooks (Business plan)

Most endpoints (shop offer, orders, vouchers) need no key - they return only data a player can see in the shop anyway. Generate a key again in the panel if it leaks; the old one stops working.

Request with a key
curl -H "Authorization: Bearer YOUR_PUBLIC_API_KEY" \
     https://api.epicpay.eu/v1/shops/SHOP-UUID/transactions

3. Selling from your own website

  1. Get the products: GET /shops/{uuid}/packages (or the products of one game mode).
  2. Get the enabled gateways: GET /shops/{uuid}/gateways.
  3. Create an order: POST /shops/{uuid}/orders with package_id, the player nickname (nickname) and the gateway (gateway).
  4. Redirect the player to the returned payment_url.
  5. Check the status: GET /shops/{uuid}/orders/{token} or receive webhooks. Once paid, the plugin delivers the purchase on your server.
Example (JavaScript)
const res = await fetch('https://api.epicpay.eu/v1/shops/SHOP-UUID/orders', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
  body: JSON.stringify({ package_id: 42, nickname: 'Steve123', gateway: 'cashbill' }),
});
const { data } = await res.json();
location.href = data.payment_url;

4. Public endpoints

All endpoints below use the base URL https://api.epicpay.eu/v1.

5. Shop information - GET /shops/{uuid}

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}

Returns public shop information: name, logo, colour settings, social media links and active payment gateways.

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)
Response 200
{
  "data": {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "name": "EpicCraft Store",
    "logo_url": "https://r2.epicpay.eu/logos/abc.png",
    "server_ip": "play.epiccraft.pl",
    "accent_color": "#FF6B00",
    "button_text_color": "#FFFFFF",
    "discord_url": "https://discord.gg/epiccraft",
    "youtube_url": null,
    "tiktok_url": null,
    "terms_url": null,
    "gateways": [
      {
        "type": "cashbill",
        "label": "CashBill"
      }
    ]
  }
}
CodeWhen
404The shop does not exist
503The shop is turned off

6. Category list - GET /shops/{uuid}/categories

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/categories

Returns all visible categories (game modes) of the shop in creation order.

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)
Response 200
{
  "data": [
    {
      "id": 1,
      "name": "SkyBlock",
      "description": "Rangi i przedmioty na SkyBlock",
      "icon": "🏝️",
      "slug": "skyblock"
    },
    {
      "id": 2,
      "name": "Survival",
      "description": "Tryb przetrwania",
      "icon": "🌲",
      "slug": "survival"
    }
  ]
}
CodeWhen
404The shop does not exist

7. Products in a category - GET /shops/{uuid}/categories/{categoryId}/packages

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/categories/{categoryId}/packages

Returns the category and its visible products. categoryId can be a numeric ID or a text slug.

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)
categoryIdpathyesCategory ID or slug
CodeWhen
404The resource does not exist

8. All shop products - GET /shops/{uuid}/packages

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/packages

Returns all visible products from every category of the shop.

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)
CodeWhen
404The shop does not exist

9. Active payment gateways - GET /shops/{uuid}/gateways

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/gateways

Returns the active payment gateways of the shop. Use it to show the available payment methods on your website.

Important: The response never contains credentials (API keys, secrets) - only public metadata.

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)
Response 200
{
  "data": [
    {
      "type": "cashbill",
      "label": "CashBill",
      "enabled": true,
      "created_at": "2025-01-15T10:30:00+01:00"
    }
  ]
}
CodeWhen
404The shop does not exist

10. Shop announcements - GET /shops/{uuid}/announcements

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/announcements

Returns the active shop announcements, newest first.

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)
CodeWhen
404The shop does not exist

11. Top players - GET /shops/{uuid}/top-players

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/top-players

Returns the 10 players who spent the most in the shop.

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)

12. Recent purchases - GET /shops/{uuid}/recent-purchases

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/recent-purchases

Returns the 20 most recently completed transactions in the shop.

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)

13. Create an order - POST /shops/{uuid}/orders

Endpoint
POST https://api.epicpay.eu/v1/shops/{uuid}/orders

Creates a new order and returns the payment page URL. Redirect the player to payment_url to complete the payment.

Flow:

  1. Get the product list (GET /shops/{uuid}/packages)
  2. Create an order with package_id, the player nickname and gateway
  3. Redirect the player to the returned payment_url
  4. After payment check the status with GET /shops/{uuid}/orders/{token}

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)

Request body (JSON)

FieldTypeRequiredDescription
package_idintegeryesProduct ID from the /packages list
nicknamestringyesMinecraft player nickname (letters, digits and underscores only)
gatewaystringyesA payment gateway enabled in the shop (list: GET /shops/{uuid}/gateways) Allowed: cashbill, hotpay, simpay, dpay, paybylink, stripe, paypal, oxapay, epichost.
Response 201
{
  "data": {
    "order_token": "550e8400-e29b-41d4-a716-446655440111",
    "status": "pending",
    "package_name": "Ranga VIP",
    "player_nickname": "Steve123",
    "price": 19.99,
    "payment_url": "https://pay.epicpay.eu/p/550e8400-e29b-41d4-a716-446655440111"
  }
}
CodeWhen
404The resource does not exist
422Validation error
502Payment gateway error

14. Order status - GET /shops/{uuid}/orders/{token}

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/orders/{token}

Check the current order status by its token. Possible statuses: - pending - waiting for payment - success - paid and delivered - failed - failed - expired - expired

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)
tokenpathyesOrder token returned on creation
CodeWhen
404The resource does not exist

15. Validate a voucher - POST /shops/{uuid}/vouchers/validate

Endpoint
POST https://api.epicpay.eu/v1/shops/{uuid}/vouchers/validate

Checks whether a voucher code is valid for a player and, optionally, for a specific product.

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)

Request body (JSON)

FieldTypeRequiredDescription
codestringyesVoucher code
nicknamestringyesPlayer nickname
package_idintegernoOptional product ID to check against
Response 200
{
  "valid": true,
  "message": "Voucher jest ważny - 100% zniżki.",
  "data": {
    "voucher_id": 5,
    "code": "GRATIS2025"
  }
}
CodeWhen
422Invalid voucher

16. Shop info + statistics - GET /shops/{uuid}/me

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/me

Requires the Authorization: Bearer <public_api_key> header (Pro plan or higher).

Returns full shop data with financial statistics. Requires Authorization: Bearer <public_api_key> (Pro plan).

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)
Response 200
{
  "data": {
    "uuid": "550e8400-...",
    "name": "EpicCraft Store",
    "stats": {
      "transactions_count": 1240,
      "total_earned": 12489.5,
      "categories_count": 4,
      "packages_count": 32
    }
  }
}
CodeWhen
401Missing or invalid token
403Pro plan required

17. Transaction list - GET /shops/{uuid}/transactions

Endpoint
GET https://api.epicpay.eu/v1/shops/{uuid}/transactions

Requires the Authorization: Bearer <public_api_key> header (Pro plan or higher).

Returns a paginated list of shop transactions. Requires Authorization: Bearer <public_api_key> (Pro plan).

Parameters

NameInRequiredDescription
uuidpathyesShop UUID (shown in the EpicPay panel)
statusquerynoStatus filter
pagequerynoPage number
per_pagequerynoResults per page (max 100)
CodeWhen
401Missing or invalid token
403Pro plan required

18. Webhooks

Webhooks (Business plan; set them up in Shop settings → Webhooks) send shop events to your app address with POST and a JSON body. The test button in the panel sends a test event.

EventWhen
purchase.completedan order was paid
delivery.confirmedthe plugin confirmed the purchase was delivered on the server
HeaderValue
X-EpicPay-Eventevent name
X-EpicPay-Signaturesha256= + HMAC-SHA256 of the whole request body, keyed with the webhook secret
User-AgentEpicPay-Webhooks/1.0
Event body
{
  "event": "purchase.completed",
  "sent_at": "2026-10-21T12:00:00+00:00",
  "shop": {
    "uuid": "9b1c6f1e-…",
    "name": "EpicCraft"
  },
  "transaction": {
    "id": 1234,
    "player": "Steve123",
    "package_id": 42,
    "package": "Ranga VIP",
    "quantity": 1,
    "price": 19.99,
    "currency": "PLN",
    "method": "cashbill",
    "created_at": "2026-10-21T11:59:30+00:00",
    "delivered_at": null
  }
}

Answer with a 2xx code within 10 seconds. On a 5xx or 429 answer EpicPay retries after 10 s, 1 min and 5 min. Always check the signature:

Signature check (PHP)
$body = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $body, $webhookSecret);
if (!hash_equals($expected, $_SERVER['HTTP_X_EPICPAY_SIGNATURE'] ?? '')) {
    http_response_code(401);
    exit;
}
$event = json_decode($body, true);
Signature check (Node.js)
import crypto from 'node:crypto';

const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers['x-epicpay-signature'] ?? ''));

19. Plugin API (deliveries)

The EpicPay plugin uses these endpoints. They are described here for your own integrations, e.g. a plugin for another server engine. Authentication: the shop_uuid and secret parameters (the shop api_secret). Base URL: https://api.epicpay.eu.

Purchases to deliver
GET https://api.epicpay.eu/deliveries/pending?shop_uuid=UUID&secret=API_SECRET[&mode_uuid=MODE_UUID]
Response
{
  "deliveries": [
    {
      "id": 1234,
      "player_nickname": "Steve123",
      "package_name": "Ranga VIP",
      "quantity": 1,
      "commands": [
        "lp user Steve123 parent addtemp vip 30d"
      ],
      "purchased_at": "2026-10-21T11:59:30.000000Z"
    }
  ]
}

The commands already have {player} and {quantity} filled in. With mode_uuid you get only the purchases of one game mode. After running the commands, confirm the delivery - otherwise the purchase comes back in the next fetch:

Delivery confirmation
POST https://api.epicpay.eu/deliveries/1234/confirm?shop_uuid=UUID&secret=API_SECRET
→ {"ok": true, "confirmed": 1}

POST https://api.epicpay.eu/deliveries/confirm?shop_uuid=UUID&secret=API_SECRET[&mode_uuid=MODE_UUID]
→ confirms all pending ones (up to 500 at once)
CodeWhen
401missing or wrong shop_uuid / secret
404unknown mode_uuid or delivery

20. Errors

API errors are JSON with an error field (code) and message (description in Polish), e.g. {"error": "shop_not_found", "message": "Sklep o podanym UUID nie istnieje."}.

HTTP codeMeaning
401missing or invalid key
403the endpoint needs a higher plan (subscription_required)
404no such shop, product or order
422invalid data in the request (details in errors)
429request limit exceeded
503the shop is turned off or blocked (shop_disabled)

EpicPay provides shops and payments for Minecraft servers: the shop page, payment gateways and automatic delivery in one panel.

EpicPay is run by EpicHost.eu Maciej Mazurek, NIP 1231593041, REGON 543373686.

EpicPay

  • Home
  • Features
  • Pricing
  • Client panel
  • Discord

Features

  • Shop templates
  • Payment gateways
  • Plugin and deliveries
  • Shop languages
  • Shop panel
  • API and webhooks

Help center

  • Documentation
  • API documentation
  • Contact
  • Service status
  • Terms of Service
  • Privacy Policy

© 2026 EpicPay. All rights reserved.