We knew something was amiss when neither my partner nor I could check in for our flight online. For the past decade, we had made the same annual trip, flying from San Francisco through Frankfurt to Helsinki and back. This would be our first time traveling with a child — we were making the brave 18+ hour journey with our baby daughter on my lap.
We arrived early at the airport and hurried to the check-in desk to speak with a United agent. As the agent pulled up our reservation, her cheery confidence turned to concern. There was a puzzling issue: while my partner and I were booked correctly, our daughter did not have a ticket. The agent called over her supervisor, who reassured us that she could manually issue a ticket to secure a boarding pass for our daughter. The supervisor typed at the console with the intense focus of a software engineer as minute after minute dragged on. Finally, as promised, our boarding passes started to print. I figured this was all part of the experience — flying a baby across the Atlantic is not for those with fragile nerves, especially with a layover and a long drive. We prepared our daughter’s morning bottle and braced ourselves for a sleepless trip with more than a few diaper changes in a tiny, jiggling bathroom.
On our way back from Helsinki, the first leg of our journey was operated by Lufthansa through a codeshare with United. We again couldn’t check in online and arrived early to speak with a check-in agent. I was expecting a missing ticket, plus the same slow but workable manual fix. But the Lufthansa agent said something baffling: our baby was not only missing a ticket, there was no record of her at all on the reservation. Even worse, there was no way for them to fix the final cross-Atlantic segment, as only United could make the necessary updates. We held up the line for more than an hour as the agent worked to reach a United representative over the phone. As our desperation mounted, we somehow convinced her to let us board the first flight to Frankfurt, so we could speak with a United agent and sort out the broken final segment.
After another tense “programming session” at the Frankfurt United desk, we made it home. I wondered — was this just a one-off glitch with our booking? It sounded strangely similar to what my sister-in-law experienced the summer before, flying home from Germany with her two kids. At the airport near her parents’ house, Lufthansa had also told her there was no record of her baby. But she was less fortunate — Lufthansa refused to let her board the flight and made her rebook the trip. When she got back to the airport, the same issue happened again, but this time she persisted and boarded the flight.
It turns out my family is in good company. A quick internet search turned up more than ten posts where United appears to have booked a lap infant incorrectly, with examples spanning more than a decade [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]. Here are just a few quotes:
they could not print out tickets for the infant on Lufthansa because it appeared that the infant was not on Lufthansa’s reservation – ahhhh! (United Infant Ticket Problems, 2013) [1]
…but said that we couldn’t board the plane in POS because they couldn’t find my infant’s reservation in their system (Air Passenger Rights (Canada), 2019) [4]
… when I went to check in with LH at FRA, they said my infant did not have a ticket! (Paid for Infant in lap but no ticket at check in, 2023) [6]
Coming home, again couldn’t check in with the infant. Went to the airport and they told me the infant does not have a ticket. (Forced to pay for infant, 2024) [9]
Unbelievably, this agent said our baby was not booked for the flight. I told her I had a receipt for the $85 that I had paid to United Airlines for the lap child ticket. (Help! Why did United Airlines charge me twice for my lap baby?, 2025) [10]
The problem is too widespread and persistent to be a one-off booking error. And despite our nerve-wracking experience with Lufthansa, the evidence pointed largely to United.
This really smelled like a software bug, or perhaps a class of related bugs. The setup has classic components that make software defects more likely: a relatively uncommon input (lap infant on an international flight), coordination between distributed systems (due to interlining / codeshares), and a complex specification (infant ticketing rules, which depend on both the airline and the journey’s destination).
I was too curious. What could the issue plausibly be? Plus, if I could get a grasp of what’s happening technically, it could save us (and others) a lot of stress on future trips.
I began with something that had baffled me in our first chat with the United agent: how could our daughter be on the reservation but not have a ticket? When you book flights, aren’t you purchasing a ticket?
It turns out there are actually two separate steps to the booking process, which produce two separate records:
A reservation for an itinerary, which is what you typically see in a confirmation email. Reservations are identified by a confirmation number like MZXTIF, and hold information on who is flying, the exact flights they will take, as well as ancillary details around baggage, seat assignments, and more. A single reservation can include flights on multiple airlines, say a United flight from San Francisco to Frankfurt, then a Lufthansa flight from Frankfurt to Helsinki.
A ticket for each passenger’s journey. Once United accepts your reservation, it must then ticket the itinerary to finalize your trip — this is why some confirmation emails say “We’re processing your request and will issue your ticket soon.” The ticket is critical, as it’s what actually allows you to check in and board the flight. Ticketing a reservation is a nuanced process which involves checking the itinerary against the applicable fare rules (domestic or international) to compute the fare, taxes, and fees. While tickets are often issued quickly and without problems, it’s possible for the process to take several days, or to fail completely in (rare?) circumstances.
With this knowledge, I could more precisely categorize the issues with lap infants:
Missing ticket: you successfully make a reservation through United for both yourself and a lap infant. But your lap infant fails to be ticketed. Without a ticket, the baby isn’t allowed to board the flight.
Missing from reservation: again, the reservation process seems to have been successful. But when you go to check in with a partner airline like Lufthansa, they have no record of your baby on their copy of the reservation.
Both the reservation and ticketing processes are technically and operationally complex. Say you book a multi-airline itinerary — United must search and secure seats in Lufthansa’s inventory, then ticket the entire trip. In an interline trip or codeshare, the reservation must be copied from the ticketing airline’s system (United) to the operating airlines’ systems (like Lufthansa) and kept in sync. And before check-in, the ticketing airline must transfer some control of the ticket so the operating airline can board passengers.
It doesn’t help that several airlines still run their Passenger Service Systems (PSS) on IBM mainframe software. And it certainly doesn’t help that current standards for data exchange have their roots in teletype formats of the 1960s, the dawn of mass air travel.
Once I dug into how reservations are modeled and communicated between carriers, some problems came into focus. The main data type in a reservation is the passenger name record (PNR), which holds the itinerary for a group of passengers traveling together. The PNR includes each passenger’s name, plus information on all flight segments. Each passenger entry can then include special service requests, or SSRs, for one or more flight segments. According to Wikipedia, SSRs typically include “meal requirements, wheelchair assistance, and other similar requests”. The IATA AIRIMP standard governs how PNRs are structured when reservation messages are passed between systems.
So how are lap infants modeled? Naively, you’d expect them to always have their own passenger entry alongside the adult travelers, perhaps with a special type annotation like “infant”.
According to IATA’s messaging standards, a lap infant is actually a special service request. Lap infants are encoded as an SSR entry on the adult passenger they’ll sit on, for each segment they’re flying. So in messages between systems, the SSR data type might request a vegan meal (VGML), warn of bulky sports equipment (SPEQ), or … provide the main record of a tiny human being on your reservation (INFT).1
1TIBSHIRANI/JULIE MS
SSR VGML UA NN1 SFOFRA 0058Y19JUL
SSR INFT UA NN1 SFOFRA 0058Y19JUL.WAGER/SOFIA 01JUL24
A clear challenge with this data model is that it uses the same parent type for both nice-to-have information like meal preferences and absolutely critical information like “there is another person on this flight”. It’s also an exception to the usual rule of “one passenger entry to one ticket”.
It’s easy to imagine that an SSR could be lost when copying a reservation from one airline’s system to another: perhaps the receiving system doesn’t support the specific request code, or there’s an issue parsing and validating the content, resulting in the SSR being silently dropped. If I book through United, I half expect to have to remind Lufthansa that I’d like an Asian vegetarian meal (AVML, my favorite!)
Rebooking also presents a risk: if an adult is rebooked onto a new flight segment, then any associated SSR INFT must be carried over, or else a key record of the infant could be lost. Plus, the system must recognize that the infant needs to be re-ticketed along with the adult.
Around 2010, the US Transportation Security Administration (TSA) started requiring that reservations include additional information on each passenger for screening against government watch lists, a program called Secure Flight. To encode this Secure Flight data, the airlines reused an existing SSR called DOCS, which was already used to transmit document information like passport numbers. For every flight touching US airspace, each passenger on the PNR must have an SSR DOCS entry, specifying their full name, date of birth, and gender.
Secure Flight data is required for lap infants too. Given that infants are modeled as an SSR on the adult passenger, how should their document data be structured? If you just add another SSR DOCS entry to their associated adult, it’s not completely clear whether that information applies to the adult or to the lap infant. So the IATA AIRIMP standard defines two new genders: female infant (FI) and male infant (MI). If the Secure Flight data contains one of these “infant genders”, then the information is associated with the lap infant.
1TIBSHIRANI/JULIE MS
SSR VGML UA NN1 SFOFRA 0058Y19JUL
SSR INFT UA NN1 SFOFRA 0058Y19JUL.WAGER/SOFIA 01JUL24
SSR DOCS UA HK1/////01DEC91/F//TIBSHIRANI/JULIE
SSR DOCS UA HK1/////01JUL24/FI//WAGER/SOFIA
This creates an unusual situation where a single adult passenger has two SSR DOCS entries, whose meaning is distinguished by gender. It’s the sort of decision you might see in a code review and say “hmm, maybe we shouldn’t be abusing this enum”, and it’s fascinating to see this in an international standard.
Further complicating the matter, the standard defines an undisclosed gender U, which in at least some systems has no “infant” equivalent. I hope no one tries to enter U for both the adult and the baby on their lap!
When my sister-in-law was turned away by Lufthansa, the agent told her something mysterious like “your baby’s birthdate is missing”. I also noticed references to “secure flight data” when reading other accounts online:
When I called them, they said that United Airlines had never put the secure flight data in the infant ticket information… the other representative was mentioning that they see this problem with infants all the time on tickets issued by United. (United Infant Ticket Problems, 2013) [1]
inevitably, whenever I add a lap infant on the phone, it always deletes the Secure flight info (Add Lap Infant After Booking, 2020) [5]
It’s plausible that United’s software is failing to properly send the infant’s DOCS data to other systems. Perhaps the DOCS data could be missing key components, or formatted in an unexpected way, which could cause the downstream system to drop it. If that’s accurate, it could help explain both classes of problems:
Missing ticket: ticketing may fail without Secure Flight data. According to at least one source, “Ticketing is inhibited if SFPD is not presented in SSR DOCS”.
Missing from reservation: if Lufthansa’s system expects every
SSR INFTentry to have a correspondingSSR DOCSentry, then any issue with this data could cause theSSR INFTdata to be dropped or corrupted, making it look like the baby is missing from the reservation. And if the baby wasn’t ticketed, there’s no good record to fall back on.
Although it’s an educated guess, I feel pretty happy with where I landed. The industry standard sets up some real implementation risks, and somehow United’s software does not meet the occasion.
United isn’t the only carrier struggling with lap infants: there are repeated reports of American Airlines failing to ticket them too [12, 13, 14, 15].2
the person there… confirmed this happens over and over with AA and infant bookings (Friendly Warning for AA Travelers Flying International with Infant, 2023) [14]
Interestingly, American Airlines does not require infant tickets at all for domestic flights. For these flights, the SSR INFT is optional, but Secure Flight data must still be attached to one of the adults through SSR DOCS. It’s easy to see how a booking system could get this wrong!
With my newfound knowledge, I plan to take these steps on our next United trip with a lap infant:
Call United to ensure that our baby has a valid ticket for the entire itinerary. Confirm that her full name, birthdate, and gender appear somewhere on the reservation (a proxy for Secure Flight data being correct), and that her reservation and ticket are properly “attached” to mine. Write down or print everyone’s ticket numbers to present at the airport if needed.
Arrive earlier than usual at the airport, both for the departing and return flights.
Avoid flights operated by partner airlines, preferring to fly United metal only. If we must fly Lufthansa, call them in advance to ensure our baby is on their copy of the reservation, and that they have her ticket number too.
I’ll also try hard to extend patience to the airport agents, who are by and large putting in remarkable effort given a baffling situation.
I’m grateful for this new confidence in navigating ticketing issues. And it’s been good fun trying to “reverse engineer” a software defect using only publicly available materials.
But something continues to bother me, an unsettled question at the heart of it all. A software defect has derailed the travel plans of an untold number of families — why hasn’t it been fixed in over a decade? Is it even fixed now? How can some bugs, pernicious as they are, continue to live in a system for years?
Much has been said on this topic. Airlines run at massive scale on top of legacy software, which makes changes risky and onerous.3 Airline software must contend with classic challenges from distributed systems like state consistency. Codeshares also present ownership and accountability problems, where the airline causing a customer issue might not be the airline that needs to deal with it in real time. The impact of many bugs is not felt acutely, as they can be “papered over” through the heroic actions of airport agents.
These observations are each accurate and insightful in their own way. But I wonder if we can make sense of the situation in more direct terms. In my experience, software defects are governed by a simple rule: assuming that a bug can be fixed, if someone important enough cares enough, then it will be.4 Even if it requires painstaking updates to legacy software. Even if understanding the problem requires calling up your friends at ten different airlines to uncover hidden expectations in their systems. It will be fixed even if the bug lies in a piece of third-party software, and you need to email the vendor over, and over, and over, then knock on their office door.
If a bug can be fixed, and someone important enough cares enough, then it will be. It looks to me like this bug can be fixed. So maybe there’s just one thing missing?
Disclaimer: I’m a software engineer, but I’ve never worked at an airline or in the aviation industry more broadly. I pulled together this investigation from public sources. If you work in aviation, I’d love to hear from you in the comments! What do you think the real issue is?
Thank you to Brett Wines and Stefan Wager for their valuable suggestions on this post.
United Infant Ticket Problems (Running with Miles, 2013). “When I called them, they said that United Airlines had never put the secure flight data in the infant ticket information… they could not print out tickets for the infant on Lufthansa because it appeared that the infant was not on Lufthansa’s reservation – ahhhh!”
UA ticket infant-in-arms on Lufthansa (FlyerTalk, 2014). “UA systems (surprise, surprise) are AWFUL in their handling of lap infants, from start to finish, both on UA metal, but especially dealing with partner bookings…” “I’ve previously commented elsewhere on FT about my family’s experience with UA tickets on LH metal that included children and lap infants. More-or-less there were no flights we ever took under those circumstances that didn’t have a screwup of some sort.”
In Panic Mode: Lap Baby name doesn’t show up in airline reservation (FlyerTalk, 2015). “Now when I put the confirmation number on the United website… it doesn’t reflect my son’s name anywhere.”
Air Passenger Rights (Canada) (Facebook, 2019). “…but said that we couldn’t board the plane in POS because they couldn’t find my infant’s reservation in their system”
Add Lap Infant After Booking (FlyerTalk, 2020). “inevitably, whenever I add a lap infant on the phone, it always deletes the Secure flight info”.
Paid for Infant in lap but no ticket at check in (Reddit, 2023). “… when I went to check in with LH at FRA, they said my infant did not have a ticket!”
United “didn’t check in” our baby? (Reddit, 2023). “We get to the gate… And they say, sorry your baby isn’t even on this flight. Have fun on the next one.”
Child in lap (Reddit, 2024). “Be very careful with United and international lap child. They have screwed me twice when my wife was flying with a lap child… my wife and child were stuck.”
Forced to pay for infant (Reddit, 2024). “Coming home, again couldn’t check in with the infant. Went to the airport and they told me the infant does not have a ticket.”
Help! Why did United Airlines charge me twice for my lap baby? (The Points Guy, 2025). “Unbelievably, this agent said our baby was not booked for the flight. I told her I had a receipt for the $85 that I had paid to United Airlines for the lap child ticket.”
Website not showing lap infant reservation (FlyerTalk, 2025). “…when I enter it into united.com, I get a message saying ‘We are unable to retrieve the latest information for this itinerary.’”
American Airlines
Guide to flying with a lap infant on American Airlines (Reddit, 2023)
Traveling with Infant (Reddit, 2023)
Friendly Warning for AA Travelers Flying International with Infant (Reddit, 2023). “the person there… confirmed this happens over and over with AA and infant bookings”
Advice Needed: Ticket Number Not Issued for Lap Child, Missed Trip (Reddit, 2025)
Air Canada
Baby’s name on airline ticket threatens to ground family vacation (Chicago Tribune, 2018)
Toronto family out $8,000 after infant daughter’s Air Canada booking goes wrong (Global News, 2018)
British Airways
Who is to blame when infant has no ticket at the gate? (Seattle Times, 2014)
British Airways strands mum and baby in NZ after admitted booking error. (1News, 2026)
Vietnam Airlines
Infant name on flight ticket incomplete question. (Reddit, 2025)