HaloSync
Production
  • Sandbox
  • Production
Home
LunaAlbus
Home
LunaAlbus
Production
  • Sandbox
  • Production
Production
  • Sandbox
  • Production
  1. Integration with PolarHub
  • HaloSync Portal
  • Getting Started
    • About HaloSync
    • Supported Airlines & Onboarding
  • Product Guides
    • Luna User Guide
      • Login
      • Main Screen & Lists
      • Booking & Ticketing
      • Booking Cancellation
      • PNR Detail
      • Booking Change
      • Ancillary Services
      • User Management
  • Integration with PolarHub
    • ๐Ÿ” Authentication: HMAC Guide
    • Integration Errors & Troubleshooting
    • ๐Ÿ”‘ Transaction ID Guidelines
    • Carrier Support Matrix
    • AirShopping
      POST
    • OfferPrice
      POST
    • OrderCreate
      POST
    • OrderRetrieve
      POST
    • ServiceList
      POST
    • SeatAvailability
      POST
    • OrderChange
      POST
    • OrderReshop
      POST
    • OrderQuote
      POST
    • OrderCancel
      POST
    • OrderChangeNotif
      VIEW
  • Operations & Support
    • Airline Operational Notes
    • FAQ & Contact
  • Release Notes
    • PolarHub Release Note
    • Albus Release Note
    • Luna Release Note
  • Schemas
    • 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 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 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://hub.halo-platform.net/hub/polarpie/v2/offerPrice
PolarHub API
Last modified:2026-04-02 07:00:40

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.

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 --request POST 'https://hub.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-raw '{
    "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
Body

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-04-02 07:00:40
Previous
AirShopping
Next
OrderCreate
Built with