Order endpoints

Orders are created with a UUID you generate. That UUID is the idempotency key: replaying it returns the original order instead of charging twice. Status is then read back per order, in batches of up to fifty, or as a paginated list.

POST

/orders/create

Create Order

Place a new order. You must provide a unique UUID as the order_id for idempotency. The wallet will be charged immediately.

Rate limit120 req / 60s per user

Note: The order_id is your idempotency key. If you retry with the same UUID, the existing order is returned instead of creating a duplicate.

Request body

NameTypeRequiredDescriptionExample
order_idstring (UUID)YesA unique UUID for this order (any format: v1, v4, v7, etc.). Used as an idempotency key.01912345-6789-7abc-8def-0123456789ab
sub_category_idnumberYesThe product subcategory ID.999
quantitynumberYesNumber of units to order (positive integer).1
requirementsobjectYesPlayer delivery info. Include all fields returned by the Get Category Requirements endpoint.{"player_id": "123456789", "server": "Asia"}
expected_unit_pricestringNoPrice protection. If current price exceeds this value, the order is rejected.0.950000
Request
curl -s -X POST "https://shop2topup.com/api/endpoints/v1/orders/create" \
  -H "Authorization: Bearer YOUR_KEY_ID.YOUR_KEY_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "order_id": "01912345-6789-7abc-8def-0123456789ab",
  "sub_category_id": 999,
  "quantity": 1,
  "requirements": {
    "player_id": "123456789",
    "server": "Asia"
  },
  "expected_unit_price": 0.95
}'
Example response
{
  "success": true,
  "order": {
    "order_id": "01912345-6789-7abc-8def-0123456789ab",
    "status": "pending",
    "player_id": "123456789",
    "player_name": "ProGamer99",
    "subcategory_name": "FF 100 Diamonds",
    "quantity": 1,
    "charged_amount": "0.950000",
    "currency": "USD",
    "created_at": "2024-06-15T12:00:00Z"
  }
}
GET

/orders/:orderId

Get Order Status

Retrieve the current status and details of a specific order.

Rate limit3 req / 60s per user + orderId

Path parameters

NameTypeRequiredDescriptionExample
orderIdstring (UUID)YesThe order ID to look up.01912345-6789-7abc-8def-0123456789ab
Request
curl -s "https://shop2topup.com/api/endpoints/v1/orders/01912345-6789-7abc-8def-0123456789ab" \
  -H "Authorization: Bearer YOUR_KEY_ID.YOUR_KEY_SECRET"
Example response
{
  "success": true,
  "order": {
    "order_id": "01912345-6789-7abc-8def-0123456789ab",
    "status": "completed",
    "player_id": "123456789",
    "player_name": "ProGamer99",
    "subcategory_name": "FF 100 Diamonds",
    "quantity": 1,
    "charged_amount": "0.950000",
    "currency": "USD",
    "created_at": "2024-06-15T12:00:00Z",
    "completed_at": "2024-06-15T12:00:05Z",
    "vouchers": [],
    "sub_transactions": [
      {
        "id": 1,
        "status": "completed",
        "player_id": "123456789",
        "player_name": "ProGamer99",
        "amount": "0.950000",
        "created_at": "2024-06-15T12:00:00Z",
        "completed_at": "2024-06-15T12:00:05Z"
      }
    ]
  }
}
POST

/orders/batch

Batch Get Orders

Retrieve multiple orders at once by their IDs. Maximum 50 order IDs per request.

Rate limit2 req / 60s per user

Request body

NameTypeRequiredDescriptionExample
order_idsstring[]YesArray of order UUIDs (max 50).["uuid-1", "uuid-2"]
Request
curl -s -X POST "https://shop2topup.com/api/endpoints/v1/orders/batch" \
  -H "Authorization: Bearer YOUR_KEY_ID.YOUR_KEY_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "order_ids": [
    "uuid-1",
    "uuid-2"
  ]
}'
Example response
{
  "success": true,
  "orders": [
    {
      "order_id": "01912345-6789-7abc-8def-0123456789ab",
      "status": "completed",
      "charged_amount": "0.950000"
    }
  ],
  "not_found": [
    "uuid-that-does-not-exist"
  ]
}
GET

/orders

List Orders

List your orders with pagination and optional filters by status and date range.

Rate limit2 req / 60s per user

Query parameters

NameTypeRequiredDescriptionExample
pagenumberNoPage number (default: 1).1
limitnumberNoResults per page, 1-100 (default: 50).50
statusstringNoFilter by status: pending, completed, refunded, partial.completed
created_afterstring (ISO 8601)NoFilter orders created after this date.2024-01-01T00:00:00Z
created_beforestring (ISO 8601)NoFilter orders created before this date.2024-12-31T23:59:59Z
Request
curl -s "https://shop2topup.com/api/endpoints/v1/orders?page=1&limit=50&status=completed&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z" \
  -H "Authorization: Bearer YOUR_KEY_ID.YOUR_KEY_SECRET"
Example response
{
  "success": true,
  "orders": [
    {
      "order_id": "01912345-6789-7abc-8def-0123456789ab",
      "status": "completed",
      "subcategory_name": "FF 100 Diamonds",
      "quantity": 1,
      "charged_amount": "0.950000",
      "created_at": "2024-06-15T12:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 1,
    "total_pages": 1
  }
}

Send a real request from this page

Paste an API key to call these endpoints live. The key stays in this browser tab and is sent only to the API itself.

Enter your API key to use the interactive playground. Get your API key

Choose an endpoint

1
2
Order Details

Enter your API key above to try this endpoint.

New to the platform? Start with the game top-up API overview for resellers, or read the SHOP2TOPUP reseller programme overview for how the partner account works.

Orders API Reference β€” Create, Get, Batch and List Orders