Update Booking (Online Check-in)
POST /properties/{tenant_id}/bookings/{booking_id}/update
Update booking with rooms, guests, payments, status, and notes. Use this endpoint for online check-in to submit guest information and complete check-in.
Scope Required: bookings:write
Content-Type: multipart/form-data (to support file uploads)
URL Parameters:
booking_id(required): The booking code to update
Request Format:
Send as multipart/form-data with:
data: JSON string containing the update payloadrooms[{index}][guests][records][{guestIndex}][identity_image]: Single identity image file (backward compatible)rooms[{index}][guests][records][{guestIndex}][identity_image][]: Multiple identity image files (max 3)
Body Parameters (in data JSON):
Rooms (rooms array) - Updates per booking room:
rooms[].id(required): UUID of the booking roomrooms[].status(optional): “checked_in” to check in this specific roomrooms[].guests(optional): Guest updates for this roomrooms[].guests.method(required with guests): “add” or “replace”add: Add new guests to existing listreplace: Remove all existing guests and replace with new list
rooms[].guests.records[](required with guests): Array of guest objectsid(optional): ID of the customername(required): Guest full nameemail(optional): Email addressphone(optional): Phone numberbirthday(optional): Date of birth (YYYY-MM-DD)gender(optional): male, female, unknownidentity(optional): ID/Passport numberid_type(optional): identity_card, passport, otheridentity_issue_date(optional): ID issue date (YYYY-MM-DD)identity_image(optional): File upload(s) - single file or array of files (JPEG/PNG, max 5MB each, max 3 files)address(optional): Street addressward(optional): Ward/Districtcity(optional): Citycountry(optional): Country, ISO 3166-1 alpha-2 format (2 uppercase letters). Example:VN,US,JP,KRis_primary_guest(optional): Boolean, primary guest for roomaccommodation_type(optional): permanent, temporary, othertravel_purpose(optional): business, tourism, otherguest_category(optional): solo, couple, family, small_group, large_group
Services (rooms[].services object) - Per room:
rooms[].services.method(required with services): Only “add” is supportedadd: Add new services to existing list (no replace functionality)
rooms[].services.records[](required with services): Array of service objectsid(required): Service ID (e.g., SVAB12CD34 - get from /services endpoint)quantity(required): Quantity of service (must be > 0)price_per_unit(optional): Override default price per unitservice_used_date(optional): Date service was used (YYYY-MM-DD)notes(optional): Service notes
Payments (payments object) - Booking level:
payments.method(required with payments): “add” or “replace”add: Add new payments to existing listreplace: Remove unpaid payments and replace with new list (paid payments preserved)
payments.records[](required with payments): Array of payment objectsamount(required): Payment amountmethod(optional): Payment method (cash, bank_transfer, credit_card, etc.)paid_at(optional): Payment timestamp (YYYY-MM-DD HH:mm:ss)notes(optional): Payment notes/reference
Notes (notes string) - Booking level:
notes(optional): Booking notes
Invoice (invoice object) - Booking level:
Optional invoice/billing info collected at online check-in (e.g. a guest
requesting a VAT invoice for their company). Persisted onto the booking’s
primary guest (resolved server-side via the first display room’s primary
guest).
invoice.company(optional): Company/organization name (max 255)invoice.tax_code(optional): Tax code / MST (max 20)invoice.address(optional): Billing address (max 255)invoice.email(optional): Email to receive the invoice (max 255)
Important Notes:
- All fields are optional - only provided fields will be updated
- For file uploads, use multipart/form-data with JSON data in ‘data’ field
- Cannot check in before checkin_date
- Cannot check in cancelled bookings
- Sending
invoicewith any value while the booking has no resolvable primary guest fails with HTTP 422 (INVOICE_NO_PRIMARY_GUEST)
Authorizations
Phần tiêu đề “Authorizations ”Parameters
Phần tiêu đề “ Parameters ”Path Parameters
Phần tiêu đề “Path Parameters ”Request Body required
Phần tiêu đề “Request Body required ”Update Booking Request (Online Check-in)
Update a booking with rooms, guests, payments, status, and notes.
This endpoint uses multipart/form-data to support file uploads for guest identity images.
Request Format
Send data as multipart/form-data with:
data: JSON string containing the booking update payloadrooms[{index}][guests][records][{guestIndex}][identity_image]: Optional identity image files
Data Payload Structure
{
"rooms": [
{
"id": "uuid-of-booking-room",
"status": "checked_in",
"guests": {
"method": "add|replace",
"records": [
{
"id": "123",
"name": "John Doe",
"email": "john@example.com",
"phone": "+84123456789",
"birthday": "1990-05-15",
"gender": "male",
"identity": "123456789012",
"id_type": "identity_card",
"identity_issue_date": "2020-01-15",
"address": "123 Nguyen Hue Street",
"ward": "Ben Nghe",
"city": "Ho Chi Minh",
"country": "VN",
"is_primary_guest": true,
"accommodation_type": "temporary",
"travel_purpose": "tourism",
"guest_category": "couple"
}
]
}
}
],
"invoice": {
"company": "GoHost Co Ltd",
"tax_code": "0312345678",
"address": "123 Nguyen Hue Street, Q1, HCMC",
"email": "invoice@gohostco.com"
},
"payments": {
"method": "add|replace",
"records": [
{
"amount": 1500000,
"method": "cash",
"paid_at": "2026-01-12 14:30:00",
"notes": "Check-in payment"
}
]
},
"notes": "Online check-in completed"
}
Services (per room)
Services can be added to each room using the services field.
Only method: "add" is supported (no replace).
{
"rooms": [
{
"id": "uuid-of-booking-room",
"services": {
"method": "add",
"records": [
{
"id": "SVAB12CD34",
"quantity": 2,
"price_per_unit": 50000,
"service_used_date": "2026-01-22",
"notes": "Mini bar consumption"
}
]
}
}
]
}
Guest Methods
add: Add new guests to the room without removing existing guestsreplace: Remove all existing guests and replace with new guest list
Invoice Info (booking level)
Optional top-level invoice block — company, tax_code, address, email.
The server resolves the booking’s primary guest (displayBookingRooms()->first()->getPrimaryGuest())
and persists the values into that customer’s dedicated customers.invoice_* columns —
never overwrites the guest’s own company/address/email. If no primary guest can be
resolved, the update fails with 422 INVOICE_NO_PRIMARY_GUEST.
Payment Methods
add: Add new payments without removing existing paymentsreplace: Remove unpaid payments and replace with new payment list (paid payments are preserved)
Room Status
checked_in: Check in the room (only allowed on or after checkin_date)
object
Notes (booking level)
Invoice info (booking level) — saved onto the booking’s primary guest.
object
Payments (booking level)
object
object
Rooms - grouped by booking room with guests and status
object
Guests within each room
object
object
Identity images (always array format, max 3 files)
5MB each
Services within each room
object
Only ‘add’ is supported
object
Service code as ID (10 chars: SV + 8 hex)
Responses
Phần tiêu đề “ Responses ”Validation error
object
Errors overview.
A detailed description of each field that failed validation.
object
Vui lòng không nhập tên, số điện thoại hay thông tin cá nhân của bạn hoặc của khách.
Hỗ trợ trực tiếp 8:00–22:00 hằng ngày, kể cả cuối tuần.