If you already know that HK means confirmed and HL means waitlisted, this guide goes further — covering the full range of action and status codes you'll encounter across a GDS career, organized by what they actually mean for the booking. Status confusion is one of the more common GDS challenges agents run into day to day, and it only gets more confusing once you're switching between systems — see the GDS Commands Hub for the full command reference across Amadeus, Sabre, and Galileo/Apollo.

For a beginner-friendly introduction to the three most common codes first, see our HK vs HL vs KK guide. This page is the complete reference once you're ready to go beyond the basics.

Confirmed Status Codes

CodeMeaning
HKHolding Confirmed — segment is confirmed
KKConfirmed — airline's response confirming a previously requested segment
KLConfirmed from waitlist — airline has cleared a waitlisted segment
RRReconfirmed — used in some markets requiring reconfirmation of onward segments

Waitlisted / Pending Codes

CodeMeaning
HLHave Listed — passenger is waitlisted for the segment
PNPending — a request has been made but not yet actioned
NNNeed — a new request awaiting airline action

Unable / Cancelled Codes

CodeMeaning
UNUnable — the airline could not accommodate the segment, typically because that specific flight isn't operating
UCUnable, waitlist Closed — the airline can neither confirm nor waitlist the request
HXHave Cancelled — the segment is no longer active. Most often follows an airline-side operational change, though it can also result from an agent or GDS-side cancellation action, so the exact trigger isn't always obvious from the code alone
XXCancelled segment (older/alternate notation for the same inactive status as HX in some system displays)

Schedule Change / Action Codes

CodeMeaning
TKTwo different meanings depending on where it appears — see below
SCSchedule change notification from the airline, awaiting agent action
NONo action taken yet on a request
GKAirline-initiated confirmation without a prior request (a "gift" segment added by the carrier)

Why TK Means Two Different Things

TK is the code that trips up more people than any other on this list, because it shows up in two unrelated places with two unrelated meanings. As one of the five mandatory elements every PNR needs before it can be saved, TK marks the ticketing arrangement — the deadline by which the ticket must be issued. That has nothing to do with the flight schedule.

Separately, TK can appear as a segment status code sent by another airline, meaning a schedule change has occurred and the times have shifted, though the booking still holds. In this context it's telling you to check the new departure and arrival times, not a ticketing deadline. The two uses look identical — same two letters — but which one applies depends entirely on whether the TK is sitting in the booking's required-elements section or next to a specific flight segment.

💡 Quick Tip

Codes can vary slightly in meaning by GDS and by airline-specific configuration in rare cases. When in doubt on a specific booking, the safest confirmation is always the airline's own system, but the codes above cover the vast majority of what you'll see day to day.

Why Agents Care About Inactive Codes Even After Rebooking

There's a consequence to codes like UN, UC, and HX that goes beyond just knowing what they mean. Airlines expect agencies to clear inactive segments out of a PNR within a set window before departure, often 24 hours. Leaving one sitting past that window can trigger an Agency Debit Memo (ADM) — a fee charged back to the agency for not cleaning up the booking. If you're an agent and see one of these codes lingering, it's not just a display issue to note and move on from; it's worth actively cancelling or rebooking that segment before it becomes a billing problem.

Why Getting This Right Matters

Sending a client an itinerary that still shows HL as if it were confirmed is one of the more common — and most avoidable — mistakes new agents make. Always double-check the status column before sharing an itinerary, and don't assume every two-letter code means "confirmed" just because a segment appears in the PNR.

Watching a Status Code Change: A Worked Example

Status codes aren't static — they move through a lifecycle as a booking progresses, and seeing that lifecycle laid out helps more than any table on its own. Take a single segment from request through to ticketing:

Day 1 — request submitted
  3 UA 934 K 08NOV 7*SFOHND NN1  1145A  305P/09NOV

Day 1, later — airline responds
  3 UA 934 K 08NOV 7*SFOHND HL1  1145A  305P/09NOV

Day 4 — waitlist clears
  3 UA 934 K 08NOV 7*SFOHND HK1  1145A  305P/09NOV

On day one, the segment starts as NN — a fresh request the airline hasn't actioned yet. The airline's first response comes back as HL: no seat available immediately, so the passenger is placed on the waitlist. Three days later, another passenger's cancellation frees up inventory and the airline clears the waitlist, flipping the status to HK — now genuinely confirmed. Nothing about the flight number, date, or route changed; only the two-letter code did, and each change meant something different for whether that passenger actually had a seat.

The practical lesson is that a PNR pulled up once and never rechecked can go stale. If you quoted or documented this booking on day one while it showed HL, that information was accurate at the time but wrong by day four. Redisplaying the PNR — or watching for the airline's queue placement notifying the agency of the change — is the only reliable way to catch the update.

Codes That Look Alike and Get Mixed Up

A few pairs on the tables above are confused constantly enough to be worth calling out on their own:

PairWhy Agents Confuse ThemThe Actual Difference
HK vs KKBoth mean confirmed, and both are common enough that agents read them as interchangeableHK is a direct confirmed sell; KK is a confirmation that came back after the request was referred to the airline rather than sold instantly — same result, different path
UN vs UCBoth start with U and both signal failureUN means this specific request failed but a waitlist attempt might still work; UC means the request failed and the waitlist is also closed, so there's no fallback on that flight
SC vs TK (segment)Both can appear next to a segment and both relate to timingSC flags an airline-initiated schedule change awaiting your review; TK on a segment (as opposed to the mandatory ticketing element) flags that a schedule change already happened and the times shifted
GK vs HKBoth look like a normal confirmed status at a glanceHK follows an agent request; GK is a segment the airline added on its own — a "gift" segment — without the agency having requested it, which is worth double-checking against what was actually sold

Non-Standard and Legacy Codes

Every code covered on this page reflects standard GDS conventions, but you won't always see a standard code. Airlines connected through older host-to-host messaging, some regional and codeshare partners, and carriers still transitioning content onto NDC distribution can occasionally return a status that doesn't match anything in a reference table like this one. This is more likely on unusual routings, ancillary-heavy fares, or bookings involving a smaller carrier's own internal reservation system.

When you hit a code you don't recognize, the wrong move is guessing based on which letter it resembles. The right move is checking the GDS's own encode/decode or help reference for that specific code, or contacting the airline directly. Until you've verified it, treat an unfamiliar code the same way you'd treat HL or NN — as not confirmed.

Mapping GDS Codes to What the Client's Confirmation Shows

It's worth remembering that almost none of the two-letter codes on this page are visible to the passenger in their raw form. The airline's own confirmation page, app, and e-ticket translate them into something far simpler:

GDS Code(s)What the Client Sees
HK, KK, KL, RRA normal confirmed flight, shown the same way regardless of which of these it started as
HL, NN, PNUsually nothing in the airline's own app yet — the client may get a separate waitlist notice by email, or hear about it only from the agent
UN, UC, HX, XXThe flight simply doesn't appear as booked — if the client checks in or looks up their confirmation independently, they'll find no active reservation for that segment
SCAn updated departure or arrival time on their itinerary, sometimes with a separate schedule-change email from the airline

That gap between the raw record and what a client actually sees is exactly why it's worth translating a PNR before sharing it, rather than forwarding the codes as-is and hoping they're self-explanatory.

Never Misread a Status Code Again

PNRGenius automatically translates every status code into plain English on your itinerary — no memorization required.

Try the Free Converter →