Prompt
How do I set up an NDC API platform for booking flow orchestration with our reservation system?
Latest observation
Setting up an NDC API platform for booking-flow orchestration with your reservation system is mostly an integration architecture problem: you need a layer that can translate between NDC shopping/booking messages and your reservation/PSS/OMS capabilities, while keeping pricing, offer integrity, seat/inventory control, payments, and ticketing synchronized.
Here’s a practical way to approach it.
1) Define the target architecture
A typical setup has these components:
- Client channels
- Web, mobile app, call center, OTA, corporate booking tools
- NDC API gateway / orchestration layer
- Handles authentication, throttling, versioning, routing
- Owns booking flow state
- NDC service adapters
- Translate NDC messages to internal reservation system actions
- Separate adapters for shopping, pricing, order creation, servicing, ticketing, etc.
- Offer / order state store
- Keeps track of transient shopping sessions, offers, and order status
- Reservation system / PSS
- Source of truth for inventory, PNR, ticketing, ancillary availability, seat maps, etc.
- Payment services
- PSP integration, 3DS, fraud checks, refunds, tokenization
- Event bus / async workflow engine
- Useful for ticketing completion, schedule changes, cancellations, reissues, notifications
- Observability stack
- Logs, traces, metrics, audit trails
A good principle:
NDC APIs should orchestrate the customer journey, while the reservation system remains the operational source of truth.
2) Choose the booking flow you want to support
NDC booking orchestration usually covers:
- Shopping
- Search offers for origin/destination/date/passengers
- Pricing / offer validation
- Reconfirm availability and fare rules
- Ancillary selection
- Seats, bags, meals, priority services
- Order creation
- Convert offer into a bookable order/PNR
- Payment
- Pay by card/wallet/BNPL/corporate account
- Ticketing / fulfillment
- Issue ticket(s), EMDs, confirmations
- Post-booking servicing
- Change, cancel, refund, rebook, add ancillaries
Start by deciding whether your first release supports:
- shopping + book + pay + ticket, or
- shopping + order create + payment later, or
- a more advanced order management model.
3) Map NDC concepts to your reservation model
You’ll need a translation layer between NDC and your internal system.
Common NDC entities:
- Offer
- OfferItem
- Order
- OrderItem
- ServiceDefinition
- Passenger
- Price
- PaymentInfo
- Change / cancel requests
Typical internal mappings:
- Offer → fare quote / priced itinerary / temporary shopping record
- Order → PNR / booking record / order ID
- OfferItem → flight segment + ancillaries + fare components
- Price → fare, taxes, fees, surcharges, discounts
- OrderItem → booked segment, seat, baggage, service
- PaymentInfo → payment authorization/capture record
- Ticketing status → ticket coupon / EMD issuance state
Important:
Decide early whether your platform is PNR-centric, order-centric, or hybrid. Many airlines use a hybrid because the reservation system may still be PNR-based even when exposing NDC-style orders.
4) Design the orchestration flow
A good pattern is a state machine or workflow engine for each booking.
Example flow:
A. Shopping
- Client calls
SearchOffers - Orchestrator sends requests to shopping adapter
- Adapter queries reservation/inventory/pricing
- Response returns one or more offers
- Store offer snapshot with TTL
B. Offer validation
- Client selects an offer
- Orchestrator validates the offer is still valid
- Reprice if needed
- Lock inventory if your system supports it
C. Ancillary selection
- Seat map / baggage / services added
- Update offer and price
- Hold total amount and constraints
D. Order creation
- Create booking / PNR / order in reservation system
- Persist correlation IDs
- Write order state to internal store
E. Payment
- Authorize or capture payment
- On success, continue fulfillment
- On failure, cancel/expire holds as needed
F. Ticketing / fulfillment
- Trigger ticket issuance
- Confirm ticket numbers / EMDs
- Notify customer/channel
G. Post-booking
- Expose retrieval, cancel, refund, exchange, service add-ons
Use idempotency keys for all write operations, especially:
- Create order
- Take payment
- Ticket issuance
- Cancel/refund
5) Integrate with the reservation system safely
Your reservation system likely has constraints:
- Limited APIs
- Batch-heavy processing
- Legacy host commands
- Hard transaction boundaries
- Inventory concurrency issues
To avoid problems:
Use an anti-corruption layer
Do not let NDC messages directly couple to legacy host logic.
Build adapters that:
- Validate input
- Normalize data
- Convert response formats
- Map errors cleanly
Control concurrency
For shopping and booking:
- Use offer TTL
- Recheck availability before commit
- Use soft holds or seat inventory locks where possible
- Handle race conditions when multiple shoppers target the last seat
Make writes transactional
For booking and payment:
- Use a workflow with compensating actions
- If payment succeeds but ticketing fails, retry ticketing or trigger manual intervention
- If order creation succeeds but payment fails, release the booking or let it expire according to rules
6) Implement the required API capabilities
At minimum, your NDC platform should expose:
Shopping
- Offer search
- Offer revalidation
- Offer details
- Calendar/low-fare search if needed
Booking
- Order create
- Order retrieve
- Order cancel
- Payment initiate/confirm
- Ticketing status
Servicing
- Add ancillaries
- Seat selection
- Change order
- Refund or void
- Order notifications/webhooks
Supporting features
- Authentication and authorization
- PNR/order correlation
- Currency and tax handling
- Error normalization
- Audit trail
If you’re following IATA NDC, align with the version your partners need, such as:
- NDC 18.2, 21.3, or later depending on ecosystem compatibility
7) Decide how pricing will work
Pricing is often the hardest part.
You need rules for:
- Fare construction
- Taxes and fees
- Currency conversion
- Ancillary pricing
- Promotions and discounts
- Corporate agreements
- Fare rule validation
- Time-bound offer validity
Best practice:
- Return a priced offer snapshot with a validity window
- Reprice on order creation
- Support price guarantee logic if your business allows it
- Keep pricing consistent across shopping, checkout, and ticketing
8) Handle payment and fulfillment explicitly
A booking flow usually has these payment patterns:
- Auth then capture
- Immediate capture
- Pay later
- Mixed tender: card + voucher + credit account
You should design:
- Payment initiation API
- Secure tokenization
- 3DS/strong customer authentication
- Fraud screening hooks
- Payment reversal/refund support
For fulfillment:
- Ticketing may be synchronous or asynchronous
- If asynchronous, publish a status callback/webhook
- Record all fulfillment identifiers for downstream servicing
9) Build for reliability and observability
This is critical in booking systems.
Reliability patterns
- Idempotency keys
- Retries with backoff
- Circuit breakers
- Dead-letter queues for failed async steps
- Timeout budgets per step
- Compensating transactions
Observability
Track:
- Offer search latency
- Offer conversion rate
- Booking success/failure rates
- Payment success rate
- Ticket issuance success rate
- Inventory mismatch rate
- Partner/channel performance
Add:
- Correlation IDs across all services
- Immutable audit logs
- Reconciliation reports between NDC platform and reservation system
10) Secure the platform
You’ll need:
- OAuth2 / OpenID Connect or client credentials for B2B partners
- mTLS for trusted partners if required
- Scope-based authorization
- PCI DSS controls for payment data
- Data encryption at rest and in transit
- PII masking in logs
- Role-based access for customer service agents
- Rate limiting and abuse detection
11) Testing strategy
Test at multiple layers:
Unit tests
- Message mapping
- Pricing logic
- Validation
- Error transformations
Integration tests
- Reservation system adapters
- Payment gateway
- Ticketing/fulfillment
Contract tests
- NDC schema compliance
- Partner-specific message compatibility
- Backward compatibility between versions
End-to-end tests
- Search → book → pay → ticket
- Change → reprice → settle difference
- Cancel → refund
- Seat selection and ancillary purchase
Simulation tests
- Inventory exhaustion
- Payment failure
- Ticketing timeout
- Retry storms
- Host outage scenarios
12) A phased implementation plan
Phase 1: Foundation
- API gateway
- NDC request/response model
- Adapter framework
- Auth, logging, correlation IDs
- Search and pricing only
Phase 2: Book and pay
- Offer validation
- Order creation
- Payment integration
- Booking confirmation
Phase 3: Fulfillment
- Ticketing
- EMDs/ancillaries
- Notifications
Phase 4: Servicing
- Cancel, refund, change
- Post-booking ancillaries
- Irregular operations support
Phase 5: Optimization
- Caching
- Performance tuning
- Analytics
- Partner certification automation
13) Recommended implementation pattern
A practical architecture is:
- API Gateway
- NDC Orchestrator
- Booking workflow engine
- State store
- Idempotency service
- Adapters
- Shopping adapter
- Pricing adapter
- PNR/order adapter
- Payment adapter
- Ticketing adapter
- Ancillary adapter
- Reservation system
- External services
- Payment provider
- Email/SMS
- Fraud
- Loyalty
- Event bus
- BookingCreated
- PaymentAuthorized
- TicketIssued
- BookingFailed
- RefundCompleted
This keeps the NDC layer clean and lets you replace or upgrade reservation components without breaking partners.
14) Common pitfalls to avoid
- Exposing the legacy reservation system directly to partners
- Not using idempotency for booking/payment
- Treating shopping offers as permanent
- Ignoring currency/tax mismatches
- Mixing synchronous and asynchronous fulfillment without clear state handling
- Not modeling failure recovery
- Poor alignment between offer TTL and inventory hold duration
- Incomplete audit/reconciliation
15) What to ask internally before starting
Answer these first:
- Is the reservation system PNR-based, order-based, or hybrid?
- What NDC version must be supported?
- Which flows are in scope for MVP?
- How is inventory controlled today?
- What is the payment model?
- Is ticketing synchronous or asynchronous?
- Which post-booking functions are required?
- What latency and availability targets do you need?
- What compliance requirements apply?
- Which channels/partners must be certified first?
16) Practical MVP recommendation
If you want a realistic first release:
- Support:
- Search offers
- Revalidate offer
- Create order
- Take payment
- Ticket booking
- Retrieve order
- Keep:
- One payment method initially
- One currency if possible
- Limited ancillaries
- Basic cancellation only
- Add:
- Logging, idempotency, reconciliation from day one
That gives you a working NDC booking platform without overbuilding.
If you want, I can also help with one of these next steps:
- a reference architecture diagram for the NDC platform,
- a detailed API flow for search → book → pay → ticket, or
- a data model mapping between NDC objects and your reservation system.
Observation history
Unlock observation history
Create a free Obsurfable account to unlock historical responses, model comparisons, and deeper brand intelligence.
How did Obsurfable measure this prompt?
Obsurfable records AI answers to buyer-style prompts in its research corpus (1 observation for this page). Metrics are distributions over observations, not a single static ranking.
Which AI systems does Obsurfable collect answers from?
OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, and Meta AI.