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 is the shopping cart for 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, cart, and quote
- Trip is the public name used across Jinko.
- Cart is an internal name for the same concept.
- Quote is the priced snapshot created at checkout. It has an expiry time, but it is not a price hold. A supplier can still change the price or remove availability.
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 fulfillment status
A trip has two status fields with different roles:statusshows the lifecycle of the whole trip.fulfillment.statusfollows the booking after payment starts. It is absent before payment.
Essential identifiers
These identifiers have different scopes. Use the identifier returned for the current step instead of storing an earlier search result indefinitely.
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.