The booking flow
- Search finds an available flight, hotel, or rental car.
- Build trip brings the selected products, travelers, and ancillaries into one place.
- Checkout verifies the trip and returns the available payment options.
- Payment can be completed by the traveler or programmatically.
- Fulfillment books each item and returns its confirmation.
The trip
A trip holds one travel request. It can contain flights, hotels, rental cars, and their ancillaries. It also holds the traveler and contact information needed to book them. All items in the trip go through one checkout and one payment. You do not need to rebuild the trip between steps. See Trips and checkout for the complete model.Trip and quote
- Trip holds the items, travelers, and contact for one request, identified by
trip_id. - Quote is the priced snapshot created at checkout, identified by
quote_id. It has an expiry time, but it is not a price hold. A supplier can still change the price or remove availability. Running checkout again creates a new quote.
Checkout and payment
Checkout verifies the trip, prices it, and returns the information needed to pay. The traveler can complete payment on a hosted page, or an agent can submit an authorized programmatic payment. Your system does not need to collect or store card details. See Payments for the supported payment paths.Fulfillment
Fulfillment starts after payment. Jinko books each item in the trip and updates its status as confirmations arrive. Some bookings confirm immediately. Others can take longer because they depend on the supplier. Jinko emails the traveler when the booking is confirmed.Trip status and booking state
A trip has three status fields with different roles:statusshows the lifecycle of the whole trip.booking_statesummarizes the booking after payment starts. It is absent before payment.fulfillment.statusgives the detailed booking status behindbooking_state. It is also absent before payment.
The booking values of
status (fulfilling, fulfilled, partially_fulfilled, failed) are deprecated in favour of booking_state and still sent. booking_state can also read cancelled, or needs_review while a person at Jinko resolves the booking; needs_review is not final. quoting, quoted and fulfillment_prepared are reserved and not currently set: quote progress is in quote.status.
Essential identifiers
These identifiers have different scopes. Use the identifier returned for the current step instead of storing an earlier search result indefinitely.
Treat every identifier as an opaque string and do not parse it. A
quote_id is accepted only on the trip whose checkout created it; any other trip refuses it. Payment attempt answers write trip_id with a trip_ prefix (trip_1048576), while the other answers write the same trip as 1048576: strip the prefix to compare them.
Lifetimes and expiry
Offers, trips, quotes, and checkout links expire on separate timelines:
Always use a returned
expires_at value when one is available. A valid checkout link does not mean its quote is still valid, and a valid quote does not guarantee that the supplier will keep the offer available.
See Errors and troubleshooting for recovery steps.