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
| Header | Value | Required | Description |
|---|---|---|---|
Partner-Access-Token | Base64 String | Yes | Your encrypted AES-256 time-sensitive token. |
X-Currency | Currency Code | Optional | Display currency. |
Accept-Language | Language Code | Optional | e.g. en, th, my. |
Content-Type | application/json | Yes | |
Accept | application/json | Yes |
Payload Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
invoice_no | String | Yes | The invoice_no returned by Checkout Confirm. |
product_type | String | Optional | Omit for flight and mixed carts. Only pass it for legacy single-product flows. |
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.
| Field | Type | Description |
|---|---|---|
id | Integer | Internal booking ID. |
booking_number | String | Booking number. |
payment_ref | String | Payment reference (the invoice_no you sent). |
currency | String | Display currency. |
exchange_rate | Float | THB → display currency rate used for this booking. |
sub_total | Float | Total before bank fee, display currency. |
grand_total | Float | Total including bank fee, display currency. |
payment_status | String | e.g. pending, paid, failed. |
payment_method | String | Payment provider used. |
payment_option | String | Payment option used. |
remark | String|null | Internal note. |
buyer_info | Object | Buyer details, with nationality resolved to a country name and nationality_code kept as the raw code. |
bank_fee_type | String|null | percentage when a fee applied. |
bank_fee_amount | Float|null | Fee percentage. |
bank_fee_price | Float|null | Fee amount in display currency. |
booked_at | String|null | Booking timestamp. |
coupon | Object|null | Redeemed coupon. |
discount_amount | Float | Discount applied, display currency. |
campaign | Object|null | Campaign the coupon belonged to. |
system_status | Object | Polling hints. See below. |
items | Array | One entry per product. For pd9 see the flight item fields below. |
system_status
| Field | Type | Description |
|---|---|---|
system_processed | Boolean | Whether backend processing finished. Always true for flights. |
show_items | Boolean | Whether item details are ready to display. Always true for flights. |
check_status | Boolean | Whether 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)
| Field | Type | Description |
|---|---|---|
product_type | String | pd9. |
booking_number | String | Flight booking number. |
pnr_code / pnr_list_str | String | PNR code(s), comma-separated when multiple. |
booking_summary | Object | Status, quantities and totals. See below. |
flight_details | Array | Per-journey formatted summary. |
journey_list | Array | Full itinerary — journeys, segments, layovers. |
solution_attribute | Object | Fare attributes. |
contact_details | Object | first_name, last_name, email, phone_code, phone_number, full_phone_number. |
passengers | Array | Per-passenger details. See below. |
baggage_info | Array | Baggage allowance per segment. |
cancellation_policy | Array | Refund/change rules with readable text. |
pricing_details | Object | Three-tier pricing: provider, system, display. See below. |
ancillary_details | Array | Purchased add-ons. |
ancillary_map_list | Array | Add-on to segment/passenger mapping. |
included_child / included_infant | Boolean | Whether the booking has child/infant passengers. |
booking_detail_link | String | Signed link to the hosted booking page. |
created_at | String | Y-m-d H:i:s. |
order_note | String | Present 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[]
| Field | Type | Description |
|---|---|---|
first_name / last_name | String | Passenger name. |
birth_date | String | Formatted, e.g. May 14, 1990. |
age | Integer | Age at time of retrieval. |
type | String | Adult, Child or Infant. |
gender | String | Male or Female. |
nationality_code / nationality | String | Code and resolved country name. |
document_issue_place_code / document_issue_place | String | Code and resolved name. |
document_number | String | Travel document number. |
document_expire_date | String | Expiry date. |
phone_code / phone_number / full_phone_number | String | Contact number. |
baggage_ancillary | Object|null | Purchased baggage add-on for this passenger. |
pricing_details
Three parallel tiers, each with the same shape:
| Tier | Currency | Meaning |
|---|---|---|
provider | Provider currency | What the airline quoted. |
system | THB | Internal base amounts stored on the booking. |
display | Customer currency | What 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
| Message | Cause |
|---|---|
Booking not found | No 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.