HaloSync
sbx
  • sbx
  • prod
Home
LunaAlbus
Home
LunaAlbus
sbx
  • sbx
  • prod
sbx
  • sbx
  • prod
  1. Integration with PolarHub
  • HaloSync Portal
  • Getting Started
    • About HaloSync
    • Supported Airlines & Onboarding
  • Operations & Support
    • Airline Operational Notes
    • FAQ & Contact
  • Integration with PolarHub
    • ๐Ÿ”‘ Transaction ID Guidelines
    • ๐Ÿ” Authentication: HMAC Guide
    • Carrier Support Matrix
    • Integration Errors & Troubleshooting
    • OrderChangeNotif
      VIEW
    • AirShopping
      POST
    • OfferPrice
      POST
    • OrderCreate
      POST
    • OrderRetrieve
      POST
    • ServiceList
      POST
    • SeatAvailability
      POST
    • OrderReshop
      POST
    • OrderQuote
      POST
    • OrderChange
      POST
    • OrderCancel
      POST
  • Release Notes
    • PolarHub Release Note
    • Albus Release Note
    • Luna Release Note
  • Product Guides
    • Luna User Guide
      • Login
      • Main Screen & Lists
      • Booking & Ticketing
      • Booking Cancellation
      • PNR Detail
      • Booking Change
      • Ancillary Services
      • User Management
  • Schemas
    • PolarHub Schema 2026.2
      • comm
        • PayerType
        • TravelAgencyType
        • ResponseParameterType
        • OrderViewOrderType
        • OfferType
        • OfferType_Extend
        • PaymentType
        • OriginDestType
        • PaxCodeType
        • CriteriaType
        • ResultMessageType
        • DataListsType
        • OrderOfferType
        • OfferItemInfoType
        • PaxType
        • ContactInfoType
      • OrderViewRS
      • AirShoppingRS
      • OfferPriceRS
      • OrderReshopRS
      • OrderCreateRQ
      • OrderChangeRQ
      • SeatAvailabilityRS
      • ServiceListRS
      • OrderCancelRS
      • OrderCancelRQ
      • OrderQuoteRQ
      • OfferPriceRQ
      • AirShoppingRQ
      • SeatAvailabilityRQ
      • OrderRetrieveRQ
      • OrderReshopRQ
      • ServiceListRQ
      • OrderChangeNotif
      • Acknowledgement
    • PolarHub Schema 2026.1
      • comm
        • TravelAgencyType
        • ResponseParameterType
        • OrderViewOrderType
        • OfferType
        • OfferType_Extend
        • PaymentType
        • OriginDestType
        • PaxCodeType
        • CriteriaType
        • ResultMessageType
        • DataListsType
        • OrderOfferType
        • OfferItemInfoType
        • PaxType
        • ContactInfoType
      • OrderViewRS
      • AirShoppingRS
      • OfferPriceRS
      • OrderReshopRS
      • OrderCreateRQ
      • OrderChangeRQ
      • SeatAvailabilityRS
      • ServiceListRS
      • OrderCancelRS
      • OrderCancelRQ
      • OrderQuoteRQ
      • OfferPriceRQ
      • AirShoppingRQ
      • SeatAvailabilityRQ
      • OrderRetrieveRQ
      • OrderReshopRQ
      • ServiceListRQ
    • PolarHub Schema 2025.9
      • Acknowledgement
      • OrderChangeNotif
    • PolarHub Schema 2025.7
      • comm
        • TravelAgencyType
        • ResponseParameterType
        • OrderViewOrderType
        • OfferType
        • OfferType_Extend
        • PaymentType
        • OriginDestType
        • PaxCodeType
        • CriteriaType
        • ResultMessageType
        • DataListsType
        • OrderOfferType
        • OfferItemInfoType
        • PaxType
        • ContactInfoType
      • OrderViewRS
      • AirShoppingRS
      • OfferPriceRS
      • OrderReshopRS
      • OrderCreateRQ
      • OrderChangeRQ
      • SeatAvailabilityRS
      • ServiceListRS
      • OrderCancelRS
      • OrderCancelRQ
      • OrderQuoteRQ
      • OfferPriceRQ
      • AirShoppingRQ
      • SeatAvailabilityRQ
      • OrderRetrieveRQ
      • OrderReshopRQ
      • ServiceListRQ
    • PolarHub Schema 2025.6
      • comm
        • RequestOfferItemType
        • RequestOrderItemType
        • OrderServicingDeleteType
        • TravelAgencyType
        • OriginDestType
        • PaxCodeType
        • CriteriaType
        • ResponseParameterType
        • ResultMessageType
        • DataListsType
        • OrderOfferType
        • OfferType
        • OfferItemInfoType
        • PaxType
        • PaymentType
        • ContactInfoType
        • OrderViewOrderType
        • OfferType_Extend
      • AirShoppingRQ
      • AirShoppingRS
      • OfferPriceRQ
      • OfferPriceRS
      • OrderCreateRQ
      • OrderViewRS
      • SeatAvailabilityRQ
      • SeatAvailabilityRS
      • ServiceListRQ
      • ServiceListRS
      • OrderRetrieveRQ
      • OrderReshopRQ
      • OrderQuoteRQ
      • OrderReshopRS
      • OrderCancelRQ
      • OrderCancelRS
      • OrderChangeRQ
    • PolarHub Schema 2026.3
      • comm
        • TravelAgencyType
        • ResponseParameterType
        • OrderViewOrderType
        • OfferType
        • OfferType_Extend
        • PaymentType
        • OriginDestType
        • PaxCodeType
        • CriteriaType
        • ResultMessageType
        • DataListsType
        • OrderOfferType
        • OfferItemInfoType
        • PaxType
        • ContactInfoType
        • PayerType
      • AirShoppingRS
      • OrderViewRS
      • OfferPriceRS
      • OrderReshopRS
      • OrderCreateRQ
      • OrderChangeRQ
      • SeatAvailabilityRS
      • ServiceListRS
      • OrderCancelRS
      • OrderCancelRQ
      • OrderQuoteRQ
      • OfferPriceRQ
      • AirShoppingRQ
      • SeatAvailabilityRQ
      • OrderRetrieveRQ
      • OrderReshopRQ
      • ServiceListRQ
      • OrderChangeNotif
      • Acknowledgement
    • PolarHub Schema 2025.3
      • comm
        • TravelAgencyType
        • OriginDestType
        • PaxCodeType
        • CriteriaType
        • ResponseParameterType
        • ResultMessageType
        • DataListsType
        • OrderOfferType
        • OfferType
        • OfferItemInfoType
        • PaxType
        • PaymentType
        • ContactInfoType
        • OrderViewOrderType
        • OfferType_Extend
      • AirShoppingRQ
      • AirShoppingRS
      • OfferPriceRQ
      • OfferPriceRS
      • OrderCreateRQ
      • OrderViewRS
      • SeatAvailabilityRQ
      • SeatAvailabilityRS
      • ServiceListRQ
      • ServiceListRS
      • OrderRetrieveRQ
      • OrderReshopRQ
      • OrderQuoteRQ
      • OrderReshopRS
      • OrderCancelRQ
      • OrderCancelRS
      • OrderChangeRQ
  1. Integration with PolarHub

OfferPrice

POST
https://polarhub-tsdv001.sandbox.halo-platform.net/hub/polarpie/v2/offerPrice
PolarHub API
Last modified:2026-05-18 02:51:39

Overview#

The OfferPrice API is used to verify the actual price and detailed fare conditions of a selected Offer retrieved from the AirShopping step.
The airline returns information including the total fare amount, fare class details, baggage allowance, and fare rules.

Usage Guidelines#

FFN (Loyalty program)#

Supported: AF, KL

Additional Baggage Purchase#

When purchasing additional baggage, call ServiceList first, then proceed with OfferPrice.
In OfferPriceRQ/Query/Offers{1โ€ฆ*}, include as many baggage service Offers as needed.
If the value of ServiceListRS/AlaCarteOffer/AlaCarteOfferItem/Service/ServiceCode is "XBAG",
you must specify the baggage weight in BookingInstructions/Text (e.g., TTL10KG).
For "BULK", "PIEC", or "HEAV" codes, no BookingInstructions input is required.

Additional Seat Selection Purchase#

When purchasing or confirming seat selections, call SeatAvailability first to retrieve seat map offers, then proceed with OfferPrice.
In OfferPriceRQ/Query/Offers{1โ€ฆ*}, include the selected seat service Offers.
Use the information from SeatAvailabilityRS/ALaCarteOffer/SeatMap/Layout to populate seat details.
Each OfferItem must contain a SeatSelection object specifying the chosen seat:
Column: seat column (e.g., "G")
Row: seat row number (e.g., "20")

MatchResult behavior for RT / MT Offers#

MatchResult and how it affects OfferPriceRQ selection#

For Round Trip (RT) and Multi Trip (MT) shopping flows, AirShoppingRS/Offer/MatchResult indicates whether the airline returned pricing as a single combined Offer or as separate Offers per journey.
MatchResult = FULL
The airline provides a single Offer that already covers all journeys in the search request.
You can proceed with OfferPrice using exactly one Offer (select 1 OfferID and its OfferItems).
MatchResult = PARTIAL
The airline provides separate Offers, each matching only part of the itinerary (typically one journey / one origin-destination).
To price the full itinerary, you must include multiple Offers in OfferPriceRQ, selecting as many Offers as the number of journeys (ODs) in the request.
Example: For an ICNโ€“LHR round trip, if the response is PARTIAL, you typically need to select 2 Offers (one for outbound and one for return). If the response is FULL, select 1 Offer only.

Combining Partial Offers via AugmentationPoint#

When pricing a round-trip (or multi-trip) request built from per-leg
Partial offers (e.g., LH, EK), the selected offers must satisfy
the combinability rule provided in the AirShopping response's
AugmentationPoint (AugPoint). Combinations that are not permitted by
the carrier's rule will be rejected at OfferPrice.
How to read the rule
Each AugPoint belongs to one offer/leg, identified by Owner and
Association (the offer's own PriceClassRefID or FareBasisCode).
Combinability.Association[].Type indicates the identifier basis
(PriceClass or FareBasisCode).
Combinability.Association[].ReferenceValue lists the IDs/codes from
other legs that this offer is allowed to be combined with.
How to build a valid OfferPrice request
1.
Pick one offer per leg (e.g., one outbound, one inbound).
2.
For each selected offer, read its AugPoint.Association identifier
(PriceClass ID or FareBasis code).
3.
Verify that every other selected leg's identifier appears inside the
first offer's Combinability.Association[].ReferenceValue list โ€” and
vice versa.
4.
Only when all selected legs are mutually referenced should the
combination be sent to OfferPrice.
Example โ€” valid combination (LH, PriceClass)
Outbound offer's AugPoint:
{
  "Owner": "LH",
  "Association": { "PriceClassRefID": ["Xpc09003ad0a7c35"] },
  "Combinability": {
    "Association": [
      {
        "Type": "PriceClass",
        "ReferenceValue": [
          "Xpc09003ad0a7c35",
          "Xpc13003ad0a7c35",
          "Xpc1c003ad0a7c35"
        ]
      }
    ]
  }
}
Selecting an inbound offer whose PriceClassRefID is Xpc13003ad0a7c35
is permitted (it appears in ReferenceValue). Selecting an inbound
offer whose PriceClassRefID is not in that list will be rejected
at OfferPrice.
:highlight gray ๐Ÿ“Œ The combinability rule is currently expressed as
either PriceClass or FareBasisCode. PolarHub does not validate
the combination on behalf of the tenant โ€” selection of valid pairs
based on AugmentationPoint is the tenant's responsibility. For
details on which carriers provide AugmentationPoint and the response
shape, refer to the AirShopping API documentation.

Upsell#

OfferPrice supports retrieving additional upsell offers based on the selected Offer.
In OfferPriceRQ/Query/ResponseParameter/PricingParameter/IncludeUpsellOffersInd the value must be set to true
To select an upsell offer, choose one from OfferPriceRS/OtherOffers.
Not supported : AS, EK, HA, TR
TK supports upsell offers only under a specific Offer Flow configuration.
Please contact us separately to enable upsell support.
For LH and AA, upsell offers are returned with MatchResult = PARTIAL, but the actual offer status is MatchResult = FULL (MatchResult = PARTIAL is an airline-side error).

Request

Header Params

Body Params application/json

Examples
{
    "Sender": {
        "TravelAgency": {
            "AgencyID": "TSDV001",
            "SiteCode": "01"
        }
    },
    "PointOfSale": "KR",
    "TransactionID": "d84d2a2430334fd0869f9e599f18b154",
    "Query": {
        "Offers": [
            {
                "OfferID": "d84d2a2430334fd0869f9e599f18b15421.3SQ-10",
                "Owner": "SQ",
                "ResponseID": "d84d2a2430334fd0869f9e599f18b154",
                "OfferItems": [
                    {
                        "OfferItemID": "d84d2a2430334fd0869f9e599f18b15421.3SQ-10-1",
                        "PaxRefID": [
                            "SQ_PAX1",
                            "SQ_PAX2",
                            "SQ_PAX3"
                        ]
                    }
                ]
            }
        ],
        "PaxList": [
            {
                "PaxID": "SQ_PAX1",
                "Ptc": "ADT",
                "LoyaltyProgramAccount": []
            },
            {
                "PaxID": "SQ_PAX2",
                "Ptc": "ADT",
                "LoyaltyProgramAccount": []
            },
            {
                "PaxID": "SQ_PAX3",
                "Ptc": "CHD",
                "LoyaltyProgramAccount": []
            }
        ],
        "Criteria": {}
    }
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location 'https://polarhub-tsdv001.sandbox.halo-platform.net/hub/polarpie/v2/offerPrice' \
--header 'x-date: {{Header Construction - Step 1: Date Header}}' \
--header 'Digest: SHA-512={{Header Construction - Step 2: Digest Header}}' \
--header 'Authorization: hmac username={{TenantID}}, algorithm="hmac-sha512", headers="x-date digest", signature={{Header Construction - Step 3: Authorization Header}}' \
--header 'Content-Type: application/json' \
--data '{
    "Sender": {
        "TravelAgency": {
            "AgencyID": "TSDV001",
            "SiteCode": "01"
        }
    },
    "PointOfSale": "KR",
    "TransactionID": "d84d2a2430334fd0869f9e599f18b154",
    "Query": {
        "Offers": [
            {
                "OfferID": "d84d2a2430334fd0869f9e599f18b15421.3SQ-10",
                "Owner": "SQ",
                "ResponseID": "d84d2a2430334fd0869f9e599f18b154",
                "OfferItems": [
                    {
                        "OfferItemID": "d84d2a2430334fd0869f9e599f18b15421.3SQ-10-1",
                        "PaxRefID": [
                            "SQ_PAX1",
                            "SQ_PAX2",
                            "SQ_PAX3"
                        ]
                    }
                ]
            }
        ],
        "PaxList": [
            {
                "PaxID": "SQ_PAX1",
                "Ptc": "ADT",
                "LoyaltyProgramAccount": []
            },
            {
                "PaxID": "SQ_PAX2",
                "Ptc": "ADT",
                "LoyaltyProgramAccount": []
            },
            {
                "PaxID": "SQ_PAX3",
                "Ptc": "CHD",
                "LoyaltyProgramAccount": []
            }
        ],
        "Criteria": {}
    }
}'

Responses

๐ŸŸข200Success
application/json
Bodyapplication/json

Example
{
    "ResultMessage": {
        "Code": "00000",
        "Message": "SUCCESS",
        "MessageDetail": {
            "Errors": [],
            "Warnings": []
        }
    },
    "Recipient": {
        "TravelAgency": {
            "AgencyID": "TSDV001",
            "SiteCode": "01",
            "ContactInfoRefID": []
        }
    },
    "PointOfSale": "KR",
    "TransactionID": "d444699d5cec4de5b04da94557b3bbcc",
    "PricedOffer": {
        "ResponseID": "d444699d5cec4de5b04da94557b3bbcc",
        "OfferID": "47b196ddee1b44e29570fbd95cc01f3e17.2-1",
        "Owner": "LH",
        "TotalPrice": {
            "TotalAmount": {
                "Amount": 3303000,
                "CurCode": "KRW"
            },
            "TravelAgencyServiceFee": [],
            "TotalBaseAmount": {
                "Amount": 451000,
                "CurCode": "KRW"
            },
            "TotalTaxAmount": {
                "Amount": 2852000.0,
                "CurCode": "KRW"
            },
            "FopPromotion": []
        },
        "OfferTimeLimit": "2026-03-25T09:42:51Z",
        "JourneyOverview": [
            {
                "PaxJourneyRefID": "Pflts5k5qsrofbspr",
                "PriceClassInfo": {
                    "PriceClass": "Ppcqu6syvh95xw0u",
                    "Code": "ESV00",
                    "Name": "Economy Basic Plus",
                    "Descriptions": [
                        {
                            "Text": "Food and Beverages"
                        },
                        {
                            "Text": "1 Hand Baggage"
                        },
                        {
                            "Text": "Checked Baggage Included"
                        },
                        {
                            "Text": "Warning: all services may not be delivered as the requested itinerary may include flights operated by our partner airlines"
                        }
                    ]
                }
            },
            {
                "PaxJourneyRefID": "Pflt3jo4p59osedgs",
                "PriceClassInfo": {
                    "PriceClass": "Ppcqu6syvh95xw0u",
                    "Code": "ESV00",
                    "Name": "Economy Basic Plus",
                    "Descriptions": [
                        {
                            "Text": "Food and Beverages"
                        },
                        {
                            "Text": "1 Hand Baggage"
                        },
                        {
                            "Text": "Checked Baggage Included"
                        },
                        {
                            "Text": "Warning: all services may not be delivered as the requested itinerary may include flights operated by our partner airlines"
                        }
                    ]
                }
            }
        ],
        "MatchResult": "Full",
        "BaggageAllowance": [
            {
                "PaxJourneyRefID": "Pflts5k5qsrofbspr",
                "PaxRefID": [
                    "T1",
                    "T2",
                    "T3",
                    "T1.1"
                ],
                "TypeCode": "Checked",
                "Desc": [
                    "CHECKED ALLOWANCE"
                ],
                "PieceAllowance": "1",
                "MaximumWeightAllowance": {
                    "Value": 23.0,
                    "UnitCode": "KG"
                }
            },
            {
                "PaxJourneyRefID": "Pflts5k5qsrofbspr",
                "PaxRefID": [
                    "T1",
                    "T1",
                    "T2",
                    "T2",
                    "T3",
                    "T3"
                ],
                "TypeCode": "CarryOn",
                "Desc": [
                    "CARRYON HAND BAGGAGE ALLOWANCE",
                    "CARRY8KG 18LB UPTO46LI 118LCM"
                ],
                "PieceAllowance": "1",
                "MaximumWeightAllowance": {
                    "Value": 8.0,
                    "UnitCode": "KG"
                }
            },
            {
                "PaxJourneyRefID": "Pflt3jo4p59osedgs",
                "PaxRefID": [
                    "T1",
                    "T2",
                    "T3",
                    "T1.1"
                ],
                "TypeCode": "Checked",
                "Desc": [
                    "CHECKED ALLOWANCE"
                ],
                "PieceAllowance": "1",
                "MaximumWeightAllowance": {
                    "Value": 23.0,
                    "UnitCode": "KG"
                }
            },
            {
                "PaxJourneyRefID": "Pflt3jo4p59osedgs",
                "PaxRefID": [
                    "T1",
                    "T1",
                    "T2",
                    "T2",
                    "T3",
                    "T3"
                ],
                "TypeCode": "CarryOn",
        
Modified atย 2026-05-18 02:51:39
Previous
AirShopping
Next
OrderCreate
Built with