Skip to main content

What the RMS Must Provide

Your RMS must expose two things for the POS integration to work:

  1. A webhook endpoint to receive POS order events from Mozrest.
  2. A table listing endpoint so Mozrest can match POS tables to RMS reservations.

Webhook Endpoint

Mozrest sends a POST request to your endpoint whenever a POS order is created, updated, or voided.

  • Method: POST
  • Content-Type: application/json
  • Authentication: Bearer token in the Authorization header
Authorization: Bearer {api_key}
Content-Type: application/json

Payload

{
"type": "create",
"venueId": "your-venue-id",
"bookingId": "your-booking-id",
"checkNumber": "98766",
"partySize": 2,
"date": 1719599400,
"status": "OPEN",
"tables": [
"28c3ce8b-8c10-4a64-8099-f0dffcc549a8"
],
"openedAt": 1535548784,
"updatedAt": 1535548784,
"closedAt": null,
"voidedAt": null,
"commercials": {
"totalAmount": 150.00,
"tax": 12.00,
"tip": 20.00,
"discount": 10.00,
"prepayment": 0,
"paymentType": "credit_card"
},
"items": [
{ "id": 1, "name": "Steak", "price": 40.00, "quantity": 2 },
{ "id": 2, "name": "Wine", "price": 70.00, "quantity": 1 }
]
}

Event types

type valueWhen it fires
createA new order is opened in the POS
updateAn existing order is modified (items, status, payment)
voidAn order is voided / cancelled

Core fields

FieldTypeDescription
typeStringEvent type: create, update, or void
venueIdStringYour venue identifier (RMS-side ID, not a Mozrest ID)
bookingIdStringYour booking identifier (RMS-side ID). May be null on creation if no reservation is linked yet
checkNumberStringCheck/order identifier in the POS
partySizeIntegerNumber of guests
dateIntegerOrder timestamp (UTC Unix)
statusStringOPEN, CLOSE, or VOID
tables[]ArrayTable IDs associated with the order

Timestamps

FieldTypeDescription
openedAtIntegerWhen the order was opened (UTC Unix)
updatedAtIntegerLast update timestamp
closedAtIntegerWhen closed (nullable)
voidedAtIntegerWhen voided (nullable)

Commercials

FieldTypeDescription
commercials.totalAmountNumberFinal amount after tax, tip, and discounts
commercials.taxNumberTax applied
commercials.tipNumberGratuity
commercials.discountNumberDiscounts applied
commercials.prepaymentNumberAmount already prepaid
commercials.paymentTypeStringcredit_card, cash, check, or others

Items

FieldTypeDescription
items[].idIntegerItem ID in the POS
items[].nameStringItem name
items[].priceNumberPrice per unit
items[].quantityIntegerQuantity ordered

Webhook retries use exponential backoff if your endpoint fails to respond with a 2xx status.


Table Listing Endpoint

Mozrest calls this endpoint to retrieve your venue's table list. This is used during onboarding and for ongoing table matching with POS systems.

  • Method: GET
  • Path: /venue/{venueId}/tables
  • Authentication: Bearer token

Response

[
{
"id": "28c3ce8b-8c10-4a64-8099-f0dffcc549a8",
"name": "001"
},
{
"id": "00f8c6da-3967-4e56-98b9-5ee063b05292",
"name": "002",
"posId": "POS-002"
}
]
FieldTypeRequiredDescription
idStringYesUnique table identifier in the RMS
nameStringYesHuman-readable table label
posIdStringNoPOS-side table identifier. When provided, Mozrest uses it to verify table matching. Mismatches are flagged for manual review.