Skip to main content

Direct Channel Booking

How bookings are held, confirmed, modified, and cancelled on direct channels. Unlike Plus channels, every step is accepted unconditionally, with no validation.

Differences from Plus channels

AspectPlus channelDirect channel
ValidationONDA and the vendor each validateNone — accepted unconditionally
Booking modificationSoft changes onlyBoth soft and hard changes
Booking typeovernightovernight (channels that support day-use also send dayuse)

Step by step

  1. Create a held bookingPOST /bookings (accepted without validation; availability is decremented)
  2. Confirm the bookingPUT /bookings/{vendor_booking_number}/confirm
  3. Modify the bookingPUT /bookings/{vendor_booking_number}/modify (soft and hard changes)
  4. Cancel the bookingPOST /bookings/{vendor_booking_number}/cancel

Types of modification

modify requests are classified by what they change. Direct channels allow both types.

TypeScope
Soft changeBooker and guest details — metadata that affects neither availability nor dates
Hard changeCheck-in and check-out dates, the booked room, and similar — affects availability, rates, and mappings

Checklist

  • Accept every booking step unconditionally (no validation)
  • Handle the booking typeovernight plus dayuse on channels that support day-use, overnight only elsewhere
  • Receive and handle visit_type (arrival method: car or walk)
  • Create the vendor-side booking against gds_sub_booking_number
  • Implement the modify flow, distinguishing soft changes from hard changes
  • On a hard change, decrement or restore availability and recalculate rates
  • Send booking vouchers (confirmation and cancellation) directly to the property

Key fields

FieldEndpointDescription
payment_typePOST /bookings, confirm responsePrepaid (prepayment) or pay on arrival (postpayment). paid_amount has been removed.
net_pricePOST /bookings, modify requestSettlement amount after fees — what will be paid out
canceled_bycancel requestWho cancelled — user, admin, channel, or system
memocancel requestCancellation reason or note. When a channel administrator cancels, the reason arrives together with canceled_by=channel
typePOST /bookings requestovernight for an overnight stay. Channels that support day-use also send dayuse
visit_typePOST /bookings requestHow the guest arrives — car or walk. Sent only by some channels that support day-use
secondary_channelPOST /bookings requestThe selling route when the booking came through secondary channeling (informational). Sent only by some legacy channels that support it

For how booking numbers are structured, see Common · Overview.

Endpoints

All of these are vendor APIs (ONDA → vendor).

MethodPathDescription
GET.../rateplans/{vendor_rateplan_id}/refund_policyLook up the cancellation and refund policy in advance
POST/bookingsCreate a held booking (decrements availability)
PUT/bookings/{vendor_booking_number}/confirmConfirm the booking
PUT/bookings/{vendor_booking_number}/modifyModify the booking (soft and hard changes)
POST/bookings/{vendor_booking_number}/cancelCancel the booking