BioduxPMS Booking API
    • Back to home
    • Booking Flow
    • Book On Hold
    • Pay Now
    • Pay At Hotel

    Pay At Hotel

    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.
    payMethodId: 2

    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#

    Response:
    {
        "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.
    Request:
    Response:
    {
        "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.
    Request:
    Response — Success:
    {
        "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.
    Request:
    Response:
    {
        "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#

    FieldValueDescription
    payTypeId2Pay on arrival
    payMethodId2Pay at the Hotel
    reference""Leave empty — no online transaction
    transaction""Leave empty — no online transaction
    amountin nairaTotal 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
    Previous
    Pay Now
    Built with