NDC Implementation

IATA New Distribution Capability (NDC) 21.3 implementation with Offer Engine architecture. JSON-native, aggregator-ready, generating dynamic offers instead of filing fares.

Technical Specs

SpecificationValue
StandardIATA NDC 21.3
FormatJSON-native (XML optional)
Primary Endpoint/AirShopping
Aggregator ReadyGoogle Flights, Skyscanner optimized

The Offer Engine

Architecture

The Offer Engine combines inventory and merchandising rules to generate dynamic offers:

┌─────────────────────────────────────────────────────────────────┐
│                       Offer Engine                              │
│                                                                 │
│                    ┌───────────────┐                            │
│  /AirShopping ────►│   Inventory   │                            │
│    Request         │    (P1-P5)    │                            │
│                    └───────┬───────┘                            │
│                            │                                    │
│                    ┌───────▼───────┐                            │
│                    │ Merchandising │                            │
│                    │    Rules      │                            │
│                    └───────┬───────┘                            │
│                            │                                    │
│                    ┌───────▼───────┐                            │
│                    │   Pricing     │◄── Price = f(demand, ...)  │
│                    │   Engine      │                            │
│                    └───────┬───────┘                            │
│                            │                                    │
│                    ┌───────▼───────┐                            │
│                    │  Tax Engine   │◄── GST/VAT by O&D          │
│                    └───────┬───────┘                            │
│                            │                                    │
│                            ▼                                    │
│                    ┌───────────────┐                            │
│                    │   Bundled     │                            │
│                    │    Offer      │──────► Response            │
│                    └───────────────┘                            │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

We Generate Offers, Not File Fares

Legacy ApproachOur Approach
File fares with ATPCOGenerate offers in real-time
26 booking classes5 price tiers (P1-P5)
Static fare basis codesDynamic pricing
Price valid for monthsPrice valid for 15 minutes

Core Message Flows

Shopping/Offer Management

MessagePurposeResponse Time
AirShoppingRQ/RSFlight search with dynamic offers<500ms
OfferPriceRQ/RSPrice verification, lock inventory<200ms
SeatAvailabilityRQ/RSSeat maps and selection<300ms
ServiceListRQ/RSAvailable ancillary services<200ms

Order Management

MessagePurpose
OrderCreateRQ/OrderViewRSBook from selected offer (Order.Status = PAID)
OrderRetrieveRQ/OrderViewRSRetrieve by Order ID (UUID) or PNR
OrderChangeRQ/OrderViewRSModify orders
OrderCancelRQ/RSCancel with refund
OrderReshopRQ/RSExchange shopping

Servicing

MessagePurpose
ItinReshopRQ/RSVoluntary changes
AirDocIssueRQ/RSDocument issuance (if needed)
AirDocRefundRQ/RSRefund processing

Offer Validity Windows

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│   Shopping Response                                             │
│   └── Offer valid: 15 minutes                                   │
│           │                                                     │
│           ▼                                                     │
│   OfferPrice (re-price)                                         │
│   └── Priced offer valid: 10 minutes (matches inventory hold)   │
│           │                                                     │
│           ▼                                                     │
│   OrderCreate (payment)                                         │
│   └── Price LOCKED (Order.Status = PAID)                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
StageValidityRationale
Shopping offers15 minutesAllow comparison shopping
Priced offers10 minutesMatch inventory hold window
Order createdPrice lockedConfirmed transaction

Aggregator Integration

Supported Aggregators

AggregatorProtocolStatusNotes
Google FlightsNDC/JSONReadyPrimary metasearch
SkyscannerNDC/JSONReadyHigh volume
KayakNDC/JSONReadyUS market
Direct APIREST/JSONPrimaryFull NDC capability

Aggregator Optimization

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│   Aggregator Request                                            │
│         │                                                       │
│         ▼                                                       │
│   ┌─────────────┐                                               │
│   │   Cache     │◄── Hot routes pre-computed                    │
│   │   Layer     │    TTL: 60 seconds                            │
│   └──────┬──────┘                                               │
│          │                                                      │
│          ▼                                                      │
│   ┌─────────────┐                                               │
│   │   Offer     │◄── Dynamic pricing on cache miss              │
│   │   Engine    │                                               │
│   └──────┬──────┘                                               │
│          │                                                      │
│          ▼                                                      │
│   Response (<500ms target)                                      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

ONE Order Integration

The NDC layer fully supports the Order-Centric model:

  • Universal Order ID (UUID): Primary identifier in all responses
  • RecordLocator (PNR): Included for backward compatibility
  • State Tracking: Order.Status reflected in OrderViewRS
  • DCS Integration: Check-in blocked unless Order.Status == PAID

Authentication

MethodUse Case
OAuth 2.0Partner integrations
API KeysDirect API access
JWTInternal services

Rate Limiting

Partner TypeRequests/min
Aggregators10,000
TMC/OTA1,000
Direct API500
Development100

Research Topics

  • NDC 21.3 JSON schema implementation
  • Aggregator-specific optimizations
  • Cache warming strategies
  • Error handling and retry patterns
  • Performance benchmarking
  • A/B testing for offer presentation
  • Rich content delivery

Architecture Considerations

NDC Gateway Design

                 ┌──────────────────────────────────────┐
  Google Flights │                                      │
  Skyscanner ────►       NDC Gateway                    │
  Direct API     │       (JSON-native)                  │
  OTAs/TMCs      │                                      │
                 └────────────────┬─────────────────────┘
                                  │
                 ┌────────────────┼────────────────┐
                 │                │                │
            ┌────▼────┐     ┌─────▼─────┐    ┌────▼────┐
            │  Offer  │     │   Order   │    │ Service │
            │ Engine  │     │  Manager  │    │  Layer  │
            │         │     │   (OMS)   │    │         │
            └─────────┘     └───────────┘    └─────────┘

Performance Targets

MetricTarget
AirShopping<500ms
OfferPrice<200ms
OrderCreate<1000ms
OrderRetrieve<100ms
Uptime99.9%

Integration Points

SystemDirectionPurpose
InventoryOutboundAvailability by tier (P1-P5)
Pricing EngineOutboundDynamic pricing
OMSBidirectionalOrder creation/management
Tax EngineOutboundTax calculation
Payment VaultOutboundPayment processing
ContentInboundRich content, images

Certification

ARM Index (Airline Retailing Maturity)

77 capabilities across 6 categories:

  1. Shop - Search, offers, ancillaries
  2. Order - Create, retrieve, modify, cancel
  3. Pay - Payment forms, refunds
  4. Settle - Direct settlement (no BSP for direct)
  5. Account - Corporate accounts, loyalty
  6. Setup - Configuration, content

Target Capabilities

CategoryTargetNotes
ShopFullAll search/offer capabilities
OrderFullComplete order lifecycle
PayHighMultiple payment methods
SettleMediumDirect settlement focus
AccountMediumLoyalty integration
SetupHighRich content delivery

NDC Providers

Build vs Buy

ApproachRecommendation
Custom BuildPreferred for full control
Accelya FLXEvaluate for faster time-to-market
TPConnectsAlternative SaaS option

Decision: Custom build aligned with Order-Centric architecture and continuous pricing model.