DEV Community

Cover image for How Airline Group Fares Really Work: The Business & Tech Behind 'TBA' Passenger Names
Aman Kumar
Aman Kumar

Posted on

How Airline Group Fares Really Work: The Business & Tech Behind 'TBA' Passenger Names

If you've ever seen "TBA/TBA" as a passenger name in a flight booking, it's not a glitch—it's a feature. After booking a cheap group fare on Yatra.com, I discovered the hidden world of airline group bookings, and uncovered a real bug with same-name passengers.

In this post, we'll unpack:

  • How group fare booking systems work
  • Why "TBA" exists in airline PNRs
  • What developers building travel systems should know
  • A critical bug I found: Same-name passengers causing seat swaps

✈️ 1. What Are Group Fares?

Group fares are special airline rates for 10+ passengers traveling together on the same flight and date.

Common use cases:

  • 🏢 Corporate trips
  • 💒 Weddings and family gatherings
  • 🕌 Pilgrimage or religious tours
  • 🏀 School or sports teams

Unlike individual bookings, group fares are:

  • Negotiated directly with airlines or via GDS
  • More flexible with payment schedules
  • Allow placeholder names initially

2. Business Logic: The Group Booking Flow

Here's how it works from an OTA or travel agent's perspective:

Step Process Description
1️⃣ Group Quote Request Agency requests fare for route, date, and passenger count
2️⃣ PNR Creation (TBA stage) Airline/GDS creates group PNR with placeholders like TBA/TBA
3️⃣ Deposit & Hold Group pays deposit to hold seats
4️⃣ Name Finalization 12–72 hours before flight, replace "TBA" with real names
5️⃣ Ticketing Once names finalized, tickets are issued

📋 3. What Does "TBA" Actually Mean?

TBA = To Be Advised

When creating a group booking, actual passenger details may not be known yet.

Example in GDS (Amadeus/Sabre):

Each entry reserves a seat while allowing the agent to:

  • Hold inventory without final names
  • Track blocked seats in airline systems
  • Display flight details before passenger confirmation

How GDS Systems Power This Magic

Behind the scenes, OTAs don't talk directly to each airline. They use GDS (Global Distribution System) — think of it as the "API gateway" of the travel industry.

The Big Three:

  • Amadeus (European dominance)
  • Sabre (Strong in Americas)
  • Travelport (Galileo/Worldspan/Apollo)

⏰ 4. The 12-Hour Rule

Most airlines require final passenger names no later than 12 hours before departure.

What happens at finalization:

  • ✅ All "TBA" placeholders updated with real names
  • ⚠️ Unnamed passengers may auto-cancel
  • 🎫 Group PNR transitions to ticketed state

This is why Yatra/MMT show "flight details visible before 12 hours" — the system holds the group block, but names are pending.


5. System Architecture Flow

Key technical points:

  • Placeholders stored in PNR until replaced
  • Airlines track via group booking IDs (not individual tickets)
  • Background jobs handle PNR sync and updates

💻 6. How OTAs Handle This (Developer View)

For platforms like Yatra or MakeMyTrip:

// Simplified model
const groupBooking = {
  pnr: "ABC123",
  status: "TBA_PENDING",
  passengers: [
    { firstName: "TBA", lastName: "TBA", title: "MR" },
    { firstName: "TBA", lastName: "TBA", title: "MS" }
  ],
  finalizationDeadline: "2025-11-08T10:00:00Z",
  flightDetails: { visible: false } // visible after name update
};
Enter fullscreen mode Exit fullscreen mode

Backend requirements:

  1. Handle placeholder data models
  2. Schedule PNR refresh/update jobs
  3. Implement deadline alerts
  4. Validate against duplicate names (see bug below!)

7. CRITICAL BUG I DISCOVERED: Same-Name Collision

The Problem

When booking through Yatra's group fare system, I found:

If two passengers have the same name:

  • ❌ During web check-in, the system will display both passengers names when the PNR and last name are entered together.
  • ❌ Boarding passes get mixed up
  • ❌ Airport staff can't distinguish passengers
  • ❌ Potential security and check-in issues

Example Scenario

// Booking for two people with same name
passengers: [
  { firstName: "Amit", lastName: "Kumar", seat: "12A" },
  { firstName: "Amit", lastName: "Kumar", seat: "12B" }
]

// What happens in airline system:
// PNR shows: KUMAR/AMIT MR + KUMAR/AMIT MR
// Boarding pass generates wrong seat for one passenger
Enter fullscreen mode Exit fullscreen mode

Why This Happens

  1. GDS Name Formatting: Airlines use PNR and LASTNAME combination
  2. Duplicate Detection: System may treat as duplicate entry
  3. Seat Assignment Logic: Uses last name as primary key
  4. Group PNR Merge: Multiple "AMIT KUMAR" entries cause confusion

Recommended fixes for OTAs:

  • 🔍 Pre-booking validation for duplicate last names
  • 📝 Force middle name or mobile number for duplicates

🔮 8. Future: NDC and Modern APIs

IATA's NDC (New Distribution Capability) is modernizing group fares:

  • ⚡ Real-time quotes and seat holds
  • 🔄 Easier passenger data updates via REST APIs
  • 📉 Reduced reliance on "TBA" placeholders
  • 🤝 Direct airline-to-OTA connections

Though many airlines still support TBA for backward compatibility.


9. Key Takeaways

Point Reality Check
"TBA" is a feature, not a bug Intentional placeholder system for group inventory management
The 12-hour rule has a twist Names often start reflecting from midnight (not exactly 12 hours), which can frustrate travelers expecting earlier updates
💰 How OTAs really make money Indian OTAs like Yatra/MMT book group fares and mark them up—this is on top of convenience charges. That "cheap fare" might just be a group booking arbitrage
🚨 Same-name = system chaos Multiple passengers with identical last names create PNR conflicts, seat swaps, and boarding issues
🎭 The agent model OTAs aren't always direct airline partners—many operate as super-agents booking group blocks and reselling individually

💬 Discussion

For developers building travel systems:

  1. How does your system handle group booking placeholders?
  2. Ever encountered the same-name bug I found?

Drop your experiences in the comments! 👇


🔗 Useful Resources


This post is based on real-world experience booking through Yatra.com. If you found this helpful, consider sharing it with your travel-tech friends! ✈️


Tags: #traveltech #backend #systemdesign #api #devstory

Top comments (0)