1. Orders
Omnihub - Shoppertise
  • Shoppertise
    • Outlets
      • List Shoppertise outlets
      • Outlet detail
    • Orders
      • Order webhook (new order intake)
        POST
      • Update order status
        POST
      • List orders (paginated)
        GET
      • Order detail
        GET
    • Menu
      • Get menu by partnerMerchantID
      • Notify Shoppertise to pull menu (SHOPPERTISE API)
    • Availability
      • Update product availability (SHOPPERTISE API)
    • Schemas
      • Order
      • Currency
      • Price
      • OrderItem
      • Campaign
      • CampaignFreeItem
      • Modifier
      • Receiver
      • VirtualContact
      • OrderCancelRequest
      • OutletSummary
      • OutletDetail
      • OrderAccepted
      • OrderDuplicate
      • SuccessBool
      • ErrorString
      • InvalidOutletError
      • InvalidItemError
      • InvalidModifierError
      • StatusStringMessage
      • ShoppertiseMenu
      • MenuPushRequest
      • MenuPushNotification
      • MenuPushResponse
      • ProductAvailabilityRequest
      • ProductAvailabilityItem
      • ProductAvailabilityCallback
  1. Orders

Update order status

POST
/api/shoppertise/order/status
Sets the status of an existing order. This is the single endpoint for both lifecycle updates and cancellations.
Processing:
orderID is matched against shoppertise_orders.orderID. status is upper-cased and runs of spaces/hyphens are collapsed to _ before validation, so rider-cancelled and RIDER CANCELLED resolve to RIDER_CANCELLED.
grabStatus is overwritten with the new value and a row is appended to the order history (state = status, message = remark, code = THIRD_PARTY).
For CANCELLED, RIDER_CANCELLED and CUSTOMER_CANCELLED the following also run: POS reversal (same document re-posted with negative quantities and a -CAN suffix on VendorOrderNo), Telegram notification, and a KDS cancellation if kdsActive is set on the outlet. The POS reversal is skipped when the order has no dynaDocNo, TouchPOS credentials are missing, or the kitchen has enableDynamod=0.
The three cancel statuses are terminal. Any later call for the same order returns 409 without touching the order, so the POS reversal cannot be posted twice.
The change is stored in Omnihub only. Nothing is sent to the Shoppertise platform.
This endpoint replaces POST /api/shoppertise/order/cancel, which has been removed. Callers that previously sent {orderID, message, code} should send {orderID, status: "CANCELLED", remark}. The code field is no longer accepted; use the status value to carry the cancel reason.

Request

Body Params application/jsonRequired

Examples

Responses

🟢200
application/json
Status written. previousStatus is the grabStatus value before the update.
Bodyapplication/json

🟠400
🟠401
🟠404
🟠409
🟠422
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location '/api/shoppertise/order/status' \
--header 'Content-Type: application/json' \
--data '{
    "orderID": "123456789-C742AGCGJPNHUE",
    "status": "READY"
}'
Response Response Example
200 - Success
{
    "status": "success",
    "message": "Order status updated to RIDER_CANCELLED",
    "orderID": "123456789-C742AGCGJPNHUE",
    "previousStatus": "READY",
    "currentStatus": "RIDER_CANCELLED"
}
Modified at 2026-10-22 04:44:42
Previous
Order webhook (new order intake)
Next
List orders (paginated)
Built with