Orders
The Orders API lets your in-game scripts submit service or product requests that are tracked and fulfilled by your staff team in the dashboard.
What are orders?#
Orders are a general-purpose request system separate from payment links. Where payment links are about collecting Robux, orders are about tracking the fulfilment of a service or product request — for example, a custom item creation, a whitelist application, or a service booking.
When a player submits an order in-game, it appears in the dashboard's Orders queue. Staff can update the order status as they work through it.
SDK functions#
RoPerms.SubmitOrder(items: table, opts: table?): string | nil
Submits a new order on behalf of the current player (the script's player context). Returns the order ID on success, or nil on failure.
-- items is an array of { name, quantity, unitPrice? } tables
local orderId = RoPerms.SubmitOrder(
{
{ name = "Custom Uniform", quantity = 1 },
{ name = "Extra Badge", quantity = 2, unitPrice = 250 },
},
{
-- Optional: attach a note to the order
note = "Please make the uniform red",
-- Optional: player submitting (defaults to current player context)
playerId = player.UserId,
}
)
if orderId then
print("Order submitted:", orderId)
endRoPerms.UpdateOrder(orderId: string, status: string, opts: table?): boolean
Updates the status of an order. Typically called from a staff-side script or triggered by a dashboard action.
-- Valid statuses: "PENDING", "IN_PROGRESS", "COMPLETED", "CANCELLED"
RoPerms.UpdateOrder(orderId, "COMPLETED", {
note = "Delivered to player",
})| Parameter | Type | Description |
|---|---|---|
| orderId* | string | The order ID returned by SubmitOrder. |
| status* | string | New status. One of: PENDING, IN_PROGRESS, COMPLETED, CANCELLED. |
| opts.note | string | Optional note recorded with the status change. |
RoPerms.GetOrders(opts: table?): table
Returns a list of orders. Filters by player, status, or date range via opts.
-- Get all pending orders
local orders = RoPerms.GetOrders({ status = "PENDING" })
-- Get orders for a specific player
local playerOrders = RoPerms.GetOrders({ playerId = player.UserId })
for _, order in ipairs(orders) do
print(order.id, order.status, order.createdAt)
endOrder statuses#
- PENDING — submitted, awaiting staff action.
- IN_PROGRESS — a staff member has started working on the order.
- COMPLETED — the order has been fulfilled.
- CANCELLED — the order was cancelled by staff or the system.
Dashboard view#
Staff with the orders.viewcapability can see the Orders queue in the dashboard. The sidebar badge shows the count of PENDING orders. Clicking an order shows the items, the submitting player's profile, timestamps, and any notes.
Staff with orders.manage can update order statuses directly from the dashboard without going through the SDK.
✓Combining orders and payments