REST API for PMS integration, guest management, billing, and room service
All requests require a customerId parameter that identifies your hotel. Pass it as a query parameter on every request:
?customerId=cust_xxxxxxxxxxxx
Your customer ID will be provided during onboarding. This scopes all data to your hotel — you will only see your own guests, rooms, and orders.
https://ota.mndev.co.za
Use these endpoints to check guests in and out. When a guest checks in, the TV in their room instantly shows a personalised welcome message. When they check out, all streaming app logins (Netflix, YouTube, DStv, Disney+, etc.) are automatically wiped from the TV.
Check in a guest (or update an existing guest). If a guest already exists in this room, their details are updated.
| Field | Type | Description | |
|---|---|---|---|
| roomNumber | string | required | Room number, e.g. "101" |
| guestName | string | required | Guest full name, e.g. "John Smith" |
| title | string | optional | Mr, Mrs, Ms, Dr, etc. |
| checkIn | string | optional | ISO date, e.g. "2026-04-01". Defaults to today. |
| checkOut | string | optional | ISO date, e.g. "2026-04-05" |
| notes | string | optional | Internal notes |
curl -X POST "https://ota.mndev.co.za/api/guests?customerId=cust_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"roomNumber": "101",
"guestName": "John Smith",
"title": "Mr",
"checkIn": "2026-04-01",
"checkOut": "2026-04-05"
}'
{
"ok": true,
"guest": {
"roomNumber": "101",
"guestName": "John Smith",
"title": "Mr",
"checkIn": "2026-04-01",
"checkOut": "2026-04-05",
"notes": "",
"updatedAt": "2026-04-01T08:30:00.000Z"
}
}
The TV in room 101 will instantly update to show "Welcome Mr Smith".
Check out a guest. Removes the guest record for this room and triggers automatic cleanup on the TV.
curl -X DELETE "https://ota.mndev.co.za/api/guests/101?customerId=cust_xxxxxxxxxxxx"
{ "ok": true }
List all currently checked-in guests.
[
{
"roomNumber": "101",
"guestName": "John Smith",
"title": "Mr",
"checkIn": "2026-04-01",
"checkOut": "2026-04-05",
"notes": "",
"updatedAt": "2026-04-01T08:30:00.000Z"
}
]
Get guest details for a specific room. Returns 404 if no guest is checked in.
curl "https://ota.mndev.co.za/api/guests/101?customerId=cust_xxxxxxxxxxxx"
Post charges and payments to a guest's folio. Charges are displayed on the TV's Bill View screen.
Post a charge to a guest's bill.
| Field | Type | Description | |
|---|---|---|---|
| roomNumber | string | required | Room number |
| amount | number | required | Charge amount (e.g. 150.00) |
| description | string | optional | e.g. "Minibar — 2x Water" |
| category | string | optional | e.g. "food", "beverage", "laundry" |
| reference | string | optional | External reference ID |
curl -X POST "https://ota.mndev.co.za/api/hotel/billing/charge?customerId=cust_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"roomNumber": "101",
"amount": 150.00,
"description": "Room Service — Club Sandwich",
"category": "food"
}'
Record a payment against a guest's bill.
| Field | Type | Description | |
|---|---|---|---|
| roomNumber | string | required | Room number |
| amount | number | required | Payment amount |
| method | string | optional | "card", "cash", "credit" |
| reference | string | optional | Transaction reference |
Get the full folio (bill) for a guest, including all charges, payments, and balance.
{
"charges": [
{ "id": "ch_1", "description": "Room Service — Club Sandwich", "amount": 150.00, "category": "food", "timestamp": "2026-04-01T12:30:00Z" }
],
"payments": [
{ "id": "pay_1", "amount": 150.00, "method": "card", "timestamp": "2026-04-01T14:00:00Z" }
],
"total": 150.00,
"paid": 150.00,
"balance": 0.00,
"currency": "ZAR"
}
Clear a guest's folio on checkout.
Manage room service orders placed from the TV or guest's phone.
Create a room service order.
| Field | Type | Description | |
|---|---|---|---|
| roomNumber | string | required | Room number |
| guestName | string | optional | Overrides guest name from check-in |
| items | array | required | Array of order items (see below) |
| notes | string | optional | Special instructions |
| Field | Type | Description | |
|---|---|---|---|
| itemId | string | required | Menu item ID |
| quantity | number | optional | Defaults to 1 |
| notes | string | optional | e.g. "No onions" |
curl -X POST "https://ota.mndev.co.za/api/hotel/restaurant/orders?customerId=cust_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"roomNumber": "101",
"items": [
{ "itemId": "item_1", "quantity": 2, "notes": "Extra cheese" },
{ "itemId": "item_2", "quantity": 1 }
],
"notes": "Please deliver before 19:00"
}'
Charge is automatically posted to the guest's folio.
List all room service orders.
Update order status. The guest's TV is notified in real-time.
| Field | Type | Description | |
|---|---|---|---|
| status | string | required | "pending", "preparing", "ready", "delivered", or "cancelled" |
Connect your property management system for automatic guest sync and folio posting.
List available PMS adapter types and their required configuration fields. Currently supported: Mews, Opera, Sihot, and a generic REST adapter.
Configure PMS connection credentials and settings.
| Field | Type | Description | |
|---|---|---|---|
| pmsType | string | required | Adapter type from /api/hotel/pms/adapters |
| apiUrl | string | required | PMS API base URL |
| hotelCode | string | optional | Hotel identifier in PMS |
| apiKey | string | optional | API key / token |
| syncGuests | boolean | optional | Auto-sync guest check-ins |
| postCharges | boolean | optional | Auto-post room service charges |
Test your PMS connection with the current configuration.