Skip to main content
POST
Price a specific exchange offer
Price a specific exchange option from exchange shop before committing. customer_amounts states it in the customer’s own figures: what they paid for the ticket (original_fare), the new ticket’s value (new_fare), the airline’s change fee (penalty_amount, absent when there is none), exactly what is charged (total_due) or refunded (total_refund), and the part of the original fare the airline keeps as a credit (EMD) in the traveller’s name after an exchange to a cheaper fare (residual_value, present only when the airline reports one; it is not refunded to the card and not part of total_due or total_refund). They add up: original_fare + total_due − total_refund = new_fare + penalty_amount + residual_value, with residual_value counted as 0 when absent. The top-level fare_difference, original_fare, new_fare and penalty_amount are the supplier’s figures and are deprecated: use customer_amounts.* instead.

Authorizations

X-API-Key
string
header
required

Body

application/json
offer_id
string
required
Minimum string length: 1
booking_ref
string

Jinko booking reference. Call get_booking first, then select its booked_item_id for servicing.

Minimum string length: 1
Example:

"JNK-A0AUR2"

booked_item_id
string

The booked item, from get_booking items[].booked_item_id. Preserved across exchanges. Omit only when the booking has exactly one item of the requested domain; otherwise a 409 returns items to choose from.

Pattern: ^itm_[a-z2-7]+$(?![\s\S])
Example:

"itm_aaaaaaaaaaaaafhuxsdxpbzrbfz5hm3a"

last_name
string

Required for guest lookup. A credential that owns the booking may omit it; ownership is checked by the platform.

Minimum string length: 1
Example:

"Doe"

order_id
string
deprecated

Deprecated: name the booking with booking_ref and booked_item_id from get_booking. Names the booking instead of booking_ref, never beside it, and needs a credential that owns the booking. Accepted until 2027-04-30; a request that sends it is answered with Deprecation and Sunset headers.

Minimum string length: 1
provider
string
deprecated

Deprecated: omit it. The platform uses the supplier recorded with the booking. Accepted until 2027-04-30; a request that sends it is answered with Deprecation and Sunset headers.

intent
object

Response

Price a specific exchange offer

payment_outcome
string

What the customer's money does: ADD_COLLECT — they pay total_due; REFUND — they get total_refund back; EVEN — nothing moves. It is the customer's outcome, which can differ from the supplier's. The list may grow: handle a value you do not know.

Example:

"ADD_COLLECT"

customer_amounts
object

Read the exchange here: the customer's own figures, all in the booking's charge currency. Absent when the platform cannot state them; the legacy fields beside it are then all there is. They add up to the cent: original_fare + total_due - total_refund = new_fare + penalty_amount + residual_value, an absent figure counting as 0. total_due and total_refund are exactly what is charged to or refunded on the customer's payment, the same figures as the top-level ones; supplier service fees are never part of them. Baggage prices in new_fare_details are airline information for buying bags; they are not part of total_due.

fare_difference
object
deprecated

Deprecated: use customer_amounts instead. The supplier's base-fare difference between the new and the original ticket, converted to the booking's charge currency at the rate pinned when the booking was priced. It does not reconcile with the other figures: new_fare - original_fare need not equal it, and it is not what the customer pays — total_due / total_refund are.

penalty_amount
object
deprecated

Deprecated: use customer_amounts.penalty_amount instead. The change fee as the supplier states it, converted at the booking's pinned rate. On some bookings it is the supplier's own booking change fee, which Jinko absorbs: it is not part of total_due, and adding it to a fare difference overstates what the customer pays.

original_fare
object
deprecated

Deprecated: use customer_amounts.original_fare instead. The supplier's value of the ticket being exchanged, converted at the booking's pinned rate. It is not necessarily what the customer paid.

new_fare
object
deprecated

Deprecated: use customer_amounts.new_fare instead. The supplier's price of the new fare, converted at the booking's pinned rate. The legacy figures do not add up to it.

total_due
object

Exactly what the customer is charged for this exchange, in the booking's charge currency. Supplier service fees are never part of it.

total_refund
object

Exactly what goes back to the customer's original payment, in the booking's charge currency.

new_fare_details
object
fare_change_notice
object
quote_id
string

This price’s quote. Pass it as quote_id to exchange_commit when committing the same offer after a refused price, to request manual handling.

Example:

"exch_7a1c93f0"

session_reference
string
deprecated

Deprecated: use quote_id instead. Same value.

Example:

"exch_7a1c93f0"

expires_at
string
Example:

"2026-06-01T13:04:56Z"

warnings
string[]

Notes about the booking and its documents, each said once, in words the customer can be shown. A note the supplier sends as free text without a code is left out.