Skip to main content

Booking Result Endpoint

Returns the full booking — payment status, totals and every product in the cart — for a payment reference. Use it on your post-payment landing page.

  • Endpoint: /api/v1/unified-booking/result
  • Method: POST

Unlike Booking Detail, this endpoint is keyed on the payment reference (invoice_no) and does not require a logged-in customer, which makes it suitable for a payment-gateway return URL.

Headers

HeaderValueRequiredDescription
Partner-Access-TokenBase64 StringYesYour encrypted AES-256 time-sensitive token.
X-CurrencyCurrency CodeOptionalDisplay currency.
Accept-LanguageLanguage CodeOptionale.g. en, th, my.
Content-Typeapplication/jsonYes
Acceptapplication/jsonYes

Payload Parameters

ParameterTypeRequiredDescription
invoice_noStringYesThe invoice_no returned by Checkout Confirm.
product_typeStringOptionalOmit for flight and mixed carts. Only pass it for legacy single-product flows.
tip

For flights, leave product_type out. The unified handler resolves every product in the booking, including pd9.

Sample Payload

{
"invoice_no": "7992370634757"
}

Response

Keys are snake_cased — see the note in Checkout.

FieldTypeDescription
idIntegerInternal booking ID.
booking_numberStringBooking number.
payment_refStringPayment reference (the invoice_no you sent).
currencyStringDisplay currency.
exchange_rateFloatTHB → display currency rate used for this booking.
sub_totalFloatTotal before bank fee, display currency.
grand_totalFloatTotal including bank fee, display currency.
payment_statusStringe.g. pending, paid, failed.
payment_methodStringPayment provider used.
payment_optionStringPayment option used.
remarkString|nullInternal note.
buyer_infoObjectBuyer details, with nationality resolved to a country name and nationality_code kept as the raw code.
bank_fee_typeString|nullpercentage when a fee applied.
bank_fee_amountFloat|nullFee percentage.
bank_fee_priceFloat|nullFee amount in display currency.
booked_atString|nullBooking timestamp.
couponObject|nullRedeemed coupon.
discount_amountFloatDiscount applied, display currency.
campaignObject|nullCampaign the coupon belonged to.
system_statusObjectPolling hints. See below.
itemsArrayOne entry per product. For pd9 see the flight item fields below.

system_status

FieldTypeDescription
system_processedBooleanWhether backend processing finished. Always true for flights.
show_itemsBooleanWhether item details are ready to display. Always true for flights.
check_statusBooleanWhether you should keep polling. true for flights while ticketing completes.

For flights, poll this endpoint (or Booking Detail) until the booking status settles — ticket issuance is asynchronous.

Flight item (pd9)

FieldTypeDescription
product_typeStringpd9.
booking_numberStringFlight booking number.
pnr_code / pnr_list_strStringPNR code(s), comma-separated when multiple.
booking_summaryObjectStatus, quantities and totals. See below.
flight_detailsArrayPer-journey formatted summary.
journey_listArrayFull itinerary — journeys, segments, layovers.
solution_attributeObjectFare attributes.
contact_detailsObjectfirst_name, last_name, email, phone_code, phone_number, full_phone_number.
passengersArrayPer-passenger details. See below.
baggage_infoArrayBaggage allowance per segment.
cancellation_policyArrayRefund/change rules with readable text.
pricing_detailsObjectThree-tier pricing: provider, system, display. See below.
ancillary_detailsArrayPurchased add-ons.
ancillary_map_listArrayAdd-on to segment/passenger mapping.
included_child / included_infantBooleanWhether the booking has child/infant passengers.
booking_detail_linkStringSigned link to the hosted booking page.
created_atStringY-m-d H:i:s.
order_noteStringPresent only when a note was submitted.

booking_summary

Key fields: booking_number, payment_ref, pnr_code, pin, trip_type, booking_status, payment_status, payment_method, payment_option, payment_method_display_name, adult_quantity, child_quantity, infant_quantity, sub_total, ancillary_pricing, grand_total, currency_code, display_currency, display_sub_total, display_grand_total, exchange_rate, provider_currency, provider_order_number.

passengers[]

FieldTypeDescription
first_name / last_nameStringPassenger name.
birth_dateStringFormatted, e.g. May 14, 1990.
ageIntegerAge at time of retrieval.
typeStringAdult, Child or Infant.
genderStringMale or Female.
nationality_code / nationalityStringCode and resolved country name.
document_issue_place_code / document_issue_placeStringCode and resolved name.
document_numberStringTravel document number.
document_expire_dateStringExpiry date.
phone_code / phone_number / full_phone_numberStringContact number.
baggage_ancillaryObject|nullPurchased baggage add-on for this passenger.

pricing_details

Three parallel tiers, each with the same shape:

TierCurrencyMeaning
providerProvider currencyWhat the airline quoted.
systemTHBInternal base amounts stored on the booking.
displayCustomer currencyWhat the customer sees and pays.

Each tier contains currency, adult, child, infant (each with single_price, single_tax, single_fees, total_price, total_tax, total_fees, quantity), plus total_price, total_tax, total_fees, ancillary_pricing, sub_total and grand_total.

Sample Response

Heavily truncated.

{
"result": 1,
"message": "success",
"data": {
"id": 10482,
"booking_number": "650E23E81BFC54D8",
"payment_ref": "7992370634757",
"currency": "THB",
"exchange_rate": 1,
"sub_total": 9830.00,
"grand_total": 10124.90,
"payment_status": "paid",
"payment_method": "two_c2p",
"payment_option": "card_payment",
"buyer_info": {
"first_name": "Alex",
"last_name": "Doe",
"email": "buyer@example.com",
"nationality": "Myanmar",
"nationality_code": "MM",
"phone_code": "66",
"phone_number": "800000001"
},
"bank_fee_type": "percentage",
"bank_fee_amount": 3,
"bank_fee_price": 294.90,
"discount_amount": 0,
"system_status": {
"system_processed": true,
"show_items": true,
"check_status": true
},
"items": [
{
"product_type": "pd9",
"booking_number": "650E23E81BFC54D8",
"pnr_code": "XY7Z2Q",
"booking_summary": {
"booking_status": "pending",
"payment_status": "paid",
"trip_type": "1",
"adult_quantity": 1,
"child_quantity": 0,
"infant_quantity": 0,
"sub_total": 9830.00,
"grand_total": 10124.90,
"currency_code": "THB",
"display_currency": "THB"
},
"contact_details": {
"first_name": "Alex",
"last_name": "Doe",
"email": "buyer@example.com",
"phone_code": "66",
"phone_number": "800000001",
"full_phone_number": "+66 800000001"
},
"passengers": [
{
"first_name": "John",
"last_name": "Doe",
"birth_date": "May 14, 1990",
"age": 36,
"type": "Adult",
"gender": "Male",
"nationality_code": "TH",
"nationality": "Thailand",
"document_number": "AB1234567",
"document_expire_date": "2030-01-31"
}
],
"journey_list": [ ],
"flight_details": [ ],
"pricing_details": {
"system": { "currency": "THB", "grand_total": 10124.90 },
"display": { "currency": "THB", "grand_total": 10124.90 },
"provider": { "currency": "USD", "grand_total": 277.39 }
},
"created_at": "2026-08-26 09:02:11"
}
]
}
}

Errors

MessageCause
Booking not foundNo booking matches invoice_no for your partner account.

Next Step

Once the customer is logged in, the same booking is available through Booking Detail and appears in My Bookings.