Skip to main content
Help travelers choose the extras they need before payment and follow each booking outcome. Availability depends on the supplier and selected offer. An empty ancillary list means that no purchasable option was returned for that item.

Booking flow

Capabilities

Discover

Find the extras available for the selected travel items.

Select

Choose extras for each traveler or for the booking.

Payment

Review the total and pay with the latest checkout.

Manage

Check each flight ancillary and explain pending or failed outcomes.

Build the flow

  1. Discover: add the travel items and travelers to a trip, then retrieve the available extras.
  2. Select: check what is included and keep every extra the traveler wants in the selection.
  3. Payment: review the total, create checkout, and collect payment.
  4. Manage: retrieve the booking and check each flight ancillary separately.

Discover available extras

Show travelers what they can add to the selected offer. Ancillaries are optional products or requests attached to a travel item. Flights offer a catalog of extra checked bags and seats. Car rental rates can offer extras paid at checkout or at the rental desk. Hotels handle options through the selected rate and special requests.

Retrieve the available extras

Add the travel item and travelers to a trip, then let the item finish pricing. Use the same endpoint to retrieve every purchasable ancillary available for the items in the trip:
The response groups the available ancillaries by trip item. A trip that contains a flight and a rental car can return both flight ancillaries and car extras in the same response. The endpoint can take a few seconds to price the items. A 202 response means pricing is still running; call the same endpoint again after retry_after_seconds. A 200 response returns the catalogs in items[].available_ancillaries; seats can still be loading. Check each seat offer’s seat_map_status and read again while it is pending.

Show the available options

Each offer carries a lowercase type, such as bag or seat. The set is open: new types can appear, so handle a type you do not recognize by showing its display_label. Car rental extras use provider-defined types. Hotel special requests are not purchasable ancillaries. They remain in special_requests on the hotel item and are not returned as ancillary offers. Example questions
  1. “What extras can I add to this flight?”
  2. “Can I add a second checked bag?”
  3. “Which extras are available with this rental?”

Seats

Choose a seat for each traveler and flight segment, then follow its booking outcome. See Seats for the seat map, availability, selection, charges, and refunds.

Bags

Check the fare’s included baggage allowance before adding extra bags. See Bags for selection and booking outcomes.

Car rental extras

Show which extras the traveler can add and when they will pay for them. Car rental extras use the same available and selected ancillary lists, but their types are provider-defined rather than limited to the eleven flight categories. Each extra can include a label, quantity, unit price, and payment timing. This illustrative extra is paid at the rental desk. Use the returned offer_id when selecting it.
The rental offer also carries its included coverages, optional insurance lines, mandatory fees, amount due at the desk, and security deposit. These are part of the rate breakdown and should not be presented as selected extras unless the supplier returns them in available_ancillaries. Example questions
  1. “Add an infant seat to this rental.”
  2. “Do I pay for the extra now or at the rental desk?”
  3. “Is the security deposit part of the price?”

Hotel options and requests

Help travelers choose the right rate and send their requests before checkout. Hotels do not currently return a separate catalog of purchasable ancillaries. The selected hotel rate already defines the room, meal plan, taxes, fees, and cancellation terms. Free-text special requests can be added to the hotel item before checkout. Common examples include a late arrival, quiet room, high floor, baby cot, or non-smoking room. For example, include add_item.special_requests when adding the hotel to a trip with POST /v1/trip. Use the returned hotel token:
Special requests are sent to the property, but they are not guaranteed. A confirmed booking does not mean the hotel accepted them. Example questions
  1. “Does this rate include breakfast and taxes?”
  2. “Ask for a quiet room on a high floor.”
  3. “Has the hotel confirmed my request for a baby cot?”

Select extras and check out

Keep the traveler’s full selection together before collecting payment.

Keep every selected extra

Select available extras through the API, Builder MCP trip with select_ancillaries, or CLI. Pass each returned offer_id exactly as received, with the traveler and quantity where applicable. Selecting ancillaries replaces the previous selection for that item. Send every ancillary that should remain selected. The select_ancillaries response includes total_with_ancillaries, the item total after selected ancillaries are added. Read its value in minor units or show its display.

Checkout and payment

Review the extras, payment timing, and total with the traveler. After choosing or changing extras, create checkout again and use the latest checkout link or agent payment parameters. See Trips and checkout for the payment flow. Example questions
  1. “Add one checked bag and keep the seats I chose.”
  2. “What is the total with these extras?”
  3. “Confirm what I pay now and what is due at the rental desk.”

Manage after booking

Check each flight ancillary before telling the traveler it is confirmed. After booking, Jinko can return each selected flight ancillary’s outcome in booked_ancillaries, including seats and bags. Read its status (confirmed, pending, or failed) and any failure_reason. A confirmed flight does not by itself confirm every extra. For seat confirmation, charges, and refunds, follow the Seats guide. Example questions
  1. “Are my seats and bags confirmed?”
  2. “Why is this extra still pending?”
  3. “Was my paid seat refunded?”

Ancillary reference

Use these fields to display available extras, keep selections, and report booking outcomes.

The ancillary model

The available ancillary

This illustrative item excerpt includes a bag and a seat from items[].available_ancillaries. Use the identifiers returned for your trip when selecting extras.

The SelectedAncillary object

The BookedAncillary object

After booking, Jinko can return each selected flight ancillary’s outcome in booked_ancillaries as a BookedAncillary, including seats and bags.
  1. Seats
  2. Bags
  3. Trips and checkout
  4. Flight booking
  5. Hotel booking
  6. Car rental booking