This page offers crucial operational details and best practices for working with each airline. It includes important information on unique behaviors, specific requirements, and any known limitations to help ensure smooth and successful transactions.
The following content is subject to change by each airline. Please always confirm with the airline before applying in production.
Void & Refund Time#
All (except the airlines listed below)VOID: Same-day cancellation (POS based)
Refund: After the same day (POS based)
SQ: Even if the booking is created and cancelled on the same day, VOID is not allowed if the NDC booking was modified via another channel. (Even if you revert the change, once the booking has lost the VOID capability, VOID remains unavailable even when OrderReshopRS shows a full refundable amount / OrderCancel may return an error.)
VOID/Refund not supported
VOID: Same-day cancellation (GMT/UTC ~23:59)
Refund: After the same day (GMT/UTC)
VOID: Within 24 hours after ticketing
VOID: Same-day cancellation (POS based)
Refund (no penalty): Within 24 hours after ticketing (POS based)
Refund (penalty applies): After 24 hours (POS based)
VOID: By GMT ~22:45 (07:45 KST)
Refund (POS KR only-no penalty): From after the VOID cut-off ~ within 24 hours after ticketing
Refund (POS KR only-penalty applies): After 24 hours
Errors may occur if attempting VOID within the allowable time window (higher likelihood within 6 hours after ticketing).
When attempting a refund, the same errors that occur during a VOID can also occur; handle them in the same way."ERROR AT END OF TRANSACTION TIME: NEED TICKETING ARRANGEMENT, NEED NAME, NEED ITINERARY, NEED TELEPHONE"
"ERROR AT END OF TRANSACTION TIME: SIMULTANEOUS CHANGES TO PNR - USE WRA/RT TO PRINT OR IGNOR"
In the OrderCancel response, the above errors can appear, but the ticket is actually VOIDed and the PNR will be cancelled after some time.PNR cancellation may take more than 24 hours (no issue report needed).
If billing occurs due to missing ticket VOID or PNR cancel, distinguish based on whether booking cancellation was confirmed within 24 hours after ticketing:1.
Cancellation confirmed β proceed RA refund via BSPlink.
2.
Cancellation not confirmed β request penalty waiver from Finnair Korea (korea@finnair.com) (Required info: PNR, BSP billing history, logs). To check if VOID/Cancel completed normally, contact via: Penalty-free refund within 24 hours after ticketing (if departure β₯7 days) is waived for the following:Entirely unused, Korea-origin itinerary, agency-issued.
Before departure (no-show excluded).
Note) OB fee is not auto-refunded by system; process manually.
VOID: Same-day cancellation (POS based)*However, if 18 hours from the ticketing is sooner, then 18 hours from the ticketing is VOID window.
Refund: After the VOID window
Change, VOID & Refund Policy for Ancillary#
Change#
LH, LX(LH), OS(LH), SQ, TR, TK
AY: Only via the airline portal
VOID & Refund#
LH, LX(LH), OS(LH): must be done via the airline portal (not supported by PolarHub)
Ticket & EMD simultaneous VOIDAF, AY, KL, LH, LX(LH), OS(LH), AS
LH, LX(LH), OS(LH): If a booking created via NDC is refunded via NDC, the ancillary is refunded together as well. (Refund is temporarily possible until this issue is fixed.)
AY: (e.g.) Fully Flex class refund via BSP, refund possible
OCN ActionType, Context#
1.
Schedule change - flight number change
2.
Schedule change - flight retimed
4.
Changes to booked services
5.
Passenger name change (name, PTC, DOB)
6.
Passenger contact change (SSR CTCM/CTCE/CTCR)
7.
Flight Cancelled outside itinerary change situation
8.
Flight canceled due to TTL
9.
Voluntary changes to flights done by Airline
OCN Details by Airline CaseAA, EK, LH, LX(LH), OS(LH)
Case 1 ActionType = ASC & Context = 1
Case 2 ActionType = ASC & Context = 2
Case 3 ActionType = ASC & Context = 3
Case 4 ActionType = ASC & Context = 4
ActionType = ASC & Context = 5
ActionType = ASC & Context = 9
ActionType = ASC & Context = Null
Limitation#
Itinerary Change#
AY: When upgrading seats on partial segments during itinerary change, all seats are upgraded (NDC issue)
| Ticketing Status | Trip Type | Section | OnD | Date | OnD & Date |
|---|
| Before Ticketing | - | - | β | β | β |
| After Ticketing | OW | ALL | π’ | π’ | π’ |
| RT | ALL | π’ | π’ | π’ |
| RT | Partial | π’ | π’ | π’ |
| MT | ALL | π’ | π’ | π’ |
| MT | Partial | π’ | π’ | π’ |
| Ticketing Status | Trip Type | Section | OnD | Date | OnD & Date |
|---|
| Before Ticketing | OW | ALL | β | β | β |
| RT | ALL | β | β | β |
| Partial | π’ | π’ | π’ |
| MT | ALL | β | β | β |
| Partial | β | β | β |
| After Ticketing | OW | ALL | π’ | π’ | π’ |
| RT | ALL | π’ | π’ | π’ |
| Partial | π’ | π’ | π’ |
| MT | ALL | π’ | π’ | π’ |
| Partial | π’ | π’ | π’ |
| Ticketing Status | Trip Type | Section | OnD | Date | OnD & Date |
|---|
| Before Ticketing | OW | ALL | π’ | π’ | π’ |
| RT | ALL | π’ | π’ | π’ |
| Partial | π’ | π’ | π’ |
| MT | ALL | π’ | π’ | π’ |
| Partial | π’ | π’ | π’ |
| After Ticketing | OW | ALL | π’ | π’ | π’ |
| RT | ALL | π’ | π’ | π’ |
| Partial | π’ | π’ | π’ |
| MT | ALL | π’ | π’ | π’ |
| Partial | π’ | π’ | π’ |
Ancillary & Itinerary Change#
| Ticketing Status | Trip Type | Section | OnD | Date | OnD & Date |
|---|
| Before Ticketing | OW | ALL | β | β | β |
| RT | ALL | β | β | β |
| Partial | π’ | π’ | π’ |
| MT | ALL | β | β | β |
| Partial | β | β | β |
| After Ticketing | OW | ALL | π’ | π’ | π’ |
| RT | ALL | π’ | π’ | π’ |
| Partial | π’ | π’ | π’ |
| MT | ALL | π’ | π’ | π’ |
| Partial | π’ | π’ | π’ |
Operation Code β Declare the intent of the request in OrderChangeRQ/Query/ReasonCode.
When the code is set, PolarHub determines the operation from the code alone, so PaxList and
ContactInfoList may both be populated without changing the result and no airline-specific
branching is needed on the caller side.UPDATE_* requires two sets β the current value and the new one β paired by reference.
Contacts, identity documents and loyalty accounts are arrays whose individual entries carry no
identifier, so the value itself is the only way to point at the entry being changed.Request rules and examples: Airline Integration Guide > Information Change Rules
| Category | Change | Add | Delete |
|---|
| Individual | UPDATE_PAX | N/A | N/A |
| CTCM, CTCE | UPDATE_CONTACT | ADD_CONTACT | DELETE_CONTACT |
| APIS (DOCS, DOCA, DOCO, FOID) | UPDATE_APIS | ADD_APIS | DELETE_APIS |
| FFN | UPDATE_FFN | ADD_FFN | DELETE_FFN |
The APIS codes cover DOCS, DOCA, DOCO and FOID, but only DOCS is supported today.
DOCA (destination address) is out of scope, and DOCO/FOID have not been verified.The tables below describe what each airline supports β PolarHub does not enforce them.PolarHub validates the shape of the request only. A combination an airline cannot perform is passed
through and rejected by the airline, so you receive the airline's own reason.Two consequences worth planning for:An operation missing from these tables is not blocked. It will reach the airline and most likely fail there.
Some airlines return 00000 for a request they did not apply. Confirm the outcome with
OrderRetrieve rather than the response code. Known cases are listed in the Note tab.
Change β
UPDATE_PAXAF, KL: PTC-matching Title required If employee of an AFKL partner company, full name change allowed
Condition: AFKL operating or marketing flight number
Baggage Allowance#
PolarHub returns baggage values exactly as the airline provides them. No summing, splitting, or unit
recalculation is applied. Because the meaning of a value differs by airline, read the tables below before
displaying baggage information to travellers.
Do not multiply or divide MaximumWeightAllowance by PieceAllowance.
PieceAllowance: 2 with MaximumWeightAllowance: 18 KG may mean two bags of 18 kg each or
two bags totalling 18 kg, depending on the airline.
Checked Baggage#
For every airline, MaximumWeightAllowance is the maximum weight per piece.Example β PieceAllowance: 2, MaximumWeightAllowance: 32 KG means two bags, each up to 32 kg.Carry-on Baggage β weight basis#
| Airline | MaximumWeightAllowance | Notes |
|---|
| AF, KL | Combined total | Total allowance for all cabin baggage including the personal item. |
| TR | Combined total | 10 kg (Economy) / 15 kg (ScootPlus) for all cabin baggage combined. |
| LH | Per piece | Maximum weight of a single bag. |
| TK | Per piece | Maximum weight of a single bag. |
Carry-on Baggage β piece count#
PolarHub returns the airline's own count for the standard carry-on entry. Multiple entries in the
airline response are not added together.| Airline | PieceAllowance | Notes |
|---|
| AA | Includes the personal item | 2 normally means one cabin bag plus one personal item, not two cabin bags. |
| BA | Cabin bag only | The personal item (briefcase, laptop or handbag) is counted separately and is not included. |
| AF, KL, LH, EK, TK | Cabin bag only | Personal items are not included. |
| AS | Fixed at 1 | The airline does not return baggage data; a policy value is used. |
| TR | Policy value | The airline does not return baggage data in NDC. |
Dimensions#
| Field | Meaning |
|---|
DimensionAllowance.Length / .Width / .Height | Maximum size of a single side. |
DimensionAllowance.Linear | Maximum sum of all three sides. |
Minimum sizes are not returned. Only maximum values are provided.
Fields are omitted when the airline does not provide them, so the set of dimension fields differs by airline.Descriptions#
Desc carries the airline's own wording. PolarHub does not generate description text, so the presence,
language and level of detail vary by airline.Not returned#
Extra baggage (sports equipment, strollers, and similar). Only the free standard allowance is returned.
When a fare does not include free checked baggage, BaggageAllowances is returned as [].
Real-time data#
AirShoppingRS, OfferPriceRS and OrderViewRS each use the baggage data of that response.| Airline | Exception |
|---|
| AS | Only OfferPriceRS uses real-time data. Other messages use a policy value. |
| TR | All messages use a policy value; the airline does not return baggage data in NDC. |
Special Note#
ALLIf infant fare is 0, ticket may not be issued
Payment status (Successful) + Order Status (OK) determine completion
per passenger required (ticketing error if missing): AY
only one passenger per PNR required : AS
Mandatory for U.S. routes: AF, KL
Optional, but if provided β residence info also mandatory: BA
When entering DOCS, Nationality & ResidenceCountryCode both required : AS
DOCA/DOCS - Not mandatory in NDC, but recommended: AY
Payerβs billing address, Payerβs surname and given name, Payerβs phone number required : AS
LX, OS also provided via LH API
First SEG airline (Ticketing Carrier) = issuing carrier Ticketing for young Adult (12β15 yrs), DOB required at search even with adult
Extra baggage can be purchased only once per passenger, per journey
ServiceListRS returns sellable offers only
If no sellable offer is available, ServiceListRS returns an error
International Flight: Under 15 cannot book without adult
AF domestic: Under 12 cannot book without adult
ScootPlus (Premium Econ): 30kg baggage + meal included β must add via ServiceList
Economy (Fly, JED only): 20kg baggage + meal included β must add via ServiceListIf missed, auto-assign every 3 hours OR can also add via TR Agency Hub
It is not possible to change itinerary or ancillary services.
Mandatory data at the time of bookingContactInfo(Phone,PostAddress)Only PostalAddress/CountryCode(Country code of the contact person) needs to be set.
Available values for ContactTypeText: INF contact information must not be set.
Extend Reserve TL feature has been added.After OrderCreate: TL is 15 minutes
After Extend Reserve TL: TL extends until roughly 3 weeks before departure
Ancillary service change/refundCannot be changed or refunded separatelyMust be processed through the Sales Office
Orders including paid ancillary services cannot be refunded
ADT, CHD, INS (INF not supported)
TicketInfo not returned immediately after ticket issuanceTicketInfo is not provided at the moment of ticket issuance.
It becomes available only after performing OrderRetrieve a few seconds later.
Held booking functionalityThis feature is available only to Travel Management Companies (TMCs) handling business trips.
Both minimum and maximum penalty amounts are provided (AmountApplication = MIN / MAX) β shown as a min ~ max range
Actual charged amount may fall outside the min ~ max range due to currency-exchange differences
Confirmed (final) amount can be obtained via OrderReshop