This flow applies when a guest selects Pay at the Hotel as their payment method. The guest reserves the room online but settles the full payment in person upon arrival at the hotel.
Flow Diagram#
Overview#
1. Load Reference Data → Countries, States, Room Types, Payment Methods
2. Check Availability → Confirm rooms are available for chosen dates
3. Create Reservation → Submit booking without any payment reference
4. Confirm Booking → Retrieve and display booking details
✅ No payment initialization or verification steps required. The reservation is created directly.
Step 1 — Load Reference Data#
Fetch the data needed to populate your booking form dropdowns. These can be loaded in parallel.1a. Get Countries#
Returns a list of countries. Use id as countryId in the reservation payload.
1b. Get States (after country is selected)#
Returns states for the selected country. Use id as stateId in the reservation payload.
1c. Get Room Types#
Returns all configured room types with names, rates, and images — useful for building a room catalogue page.
1d. Get Active Payment Methods#
{
"items": [
{ "id": 1, "name": "Book On Hold" },
{ "id": 2, "name": "Pay at the Hotel" },
{ "id": 4, "name": "Paystack" }
]
}
💾 Store the payment method id values — you'll need payMethodId in Step 3.
1e. Get Hotel Rules (optional but recommended)#
Returns check-in/out times, min/max stay length, and advance booking windows. Display these constraints in your UI to prevent invalid bookings.
Step 2 — Check Availability#
Once the guest has selected dates and guest count, confirm rooms are available and retrieve current rates.{
"errorCode": 0,
"errorMessage": "Successfully retrieved available rooms.",
"types": [
{
"roomTypeId": 3,
"roomType": "Premium Suite",
"rate": 40000,
"available": 3,
"currencySymbol": "₦"
}
]
}
💾 Store roomTypeId and rate for each room the guest selects — both are required in Step 3.
⚠️ Only display rooms where available > 0.
Step 3 — Create the Reservation#
Submit the reservation payload. Since payment will be made at the hotel, leave the reference and transaction fields empty.{
"bookingRef": "K3PLW9",
"errorCode": 0,
"errorMessage": "Reservations made successfully"
}
💾 Store the bookingRef — the guest will need this at check-in and to manage their reservation.
Step 4 — Confirm the Booking#
Retrieve and display the full reservation summary to the guest.{
"guest": {
"firstName": "Jane",
"lastName": "Smith",
"email": "jane.smith@example.com"
},
"reservations": [
{
"roomType": "Premium Suite",
"bookingRef": "K3PLW9",
"checkInDate": "2025-09-15",
"checkOutDate": "2025-09-16",
"quantity": 1,
"rate": 40000
}
],
"errorCode": 0,
"errorMessage": "Reservation details retrieved successfully."
}
Display the booking reference prominently. Remind the guest to present their booking reference and a valid ID at the front desk upon arrival.
Payment Object Reference#
| Field | Value | Description |
|---|
payTypeId | 2 | Pay on arrival |
payMethodId | 2 | Pay at the Hotel |
reference | "" | Leave empty — no online transaction |
transaction | "" | Leave empty — no online transaction |
amount | in naira | Total reservation amount due on arrival |
Important Notes#
💡 The room is held for the guest but not guaranteed beyond the hotel's cancellation window. Check GET /Rule/Detail for the minCheckInWindow to understand when a held reservation may be released.
⚠️ The hotel reserves the right to release the room if the guest does not arrive by the standard check-in time without prior notice.
📩 Send the guest a confirmation email containing their bookingRef, check-in time, check-out time, and the total amount due on arrival.
Modified at 2026-03-17 16:49:19