1. Development Instructions
PKFARE Flight Buyer API
  • Guides
    • Quick Start
    • Tricks for Playing with PKFARE API
    • Book air tickets with ancillaries
    • Raise refund requests
    • Raise change requests
    • Receive flight rescheduled notification
    • Add Paid Bags after the Booking
    • Branded Fare Integration Guide
  • API Reference
    • Air ticket booking APIs
      • TicketIssuanceNotify_V2
      • Shopping V10
      • PrecisePricing V12
      • Penalty V4
      • PreciseBooking V8
      • CancelOrder
      • OrderPricing V6
      • Ticketing
      • OrderDetail V14
      • RequestTicketing
      • ModifyOrderStatus
    • Ancillary booking APIs
      • AncillaryStatusPush
      • AncillaryPricing V6
      • AncillaryBooking
      • CancelAncillaryOrder
      • AncillaryTicketing
      • AncillaryOrderDetail
    • Flight schedule change APIs
      • ScheduleChangeNotify
      • GetScheduleChangeReply
      • GetScheduleChangeList
      • AcknowledgeScheduleChange
      • AcceptScheduleChange
    • Refund APIs
      • RefundResultNotify
      • ReimbursedResultNotify
      • Refund Pricing
      • CheckRefundPricing
      • RefundRequest
      • CheckRefund
      • CheckReimbursed
      • DownloadAttachmentFile API
      • UploadAttachmentFile API
    • Change APIs
      • ChangeResultPush
      • Change Reshop
      • Change Request
      • Change Passenger Info
      • Change Reprice
      • ChangeRepricePush
    • Void APIs
      • ReimbursedResultPush
      • VoidRequest
    • Cache APIs
      • CacheShopping
      • ValidateItinerary API
    • APIs with all versions
      • CheckInInfoPush
      • Raise change requests Copy
      • Shopping
        • Shopping
        • Shopping_V2
        • Shopping_V4
        • Shopping V7
        • Shopping V9
        • Shopping V8
      • PrecisePricing
        • PrecisePricing
        • PrecisePricing_V2
        • PrecisePricing_V6
        • PrecisePricing V9
        • PrecisePricing V10
        • PrecisePricing V11
      • Penalty
        • Penalty
        • Penalty V2
        • Penalty V3
      • PreciseBooking
        • PreciseBooking
        • PreciseBooking_V2
        • PreciseBooking_V5
        • PreciseBooking V6
        • PreciseBooking V7
      • OrderPricing
        • OrderPricing_V2
        • OrderPricing V4
        • OrderPricing V5
      • Ticketing
        • Ticketing
      • TicketNumPush
        • TicketingNumPush
        • TicketingNumPush_V2
        • TicketingNumPush_V3
        • TicketIssuanceNotify
      • CancelOrder
        • CancelOrder
      • OrderDetail
        • OrderDetail_V2
        • OrderDetail_V3
        • OrderDetail_V4
        • OrderDetail_V5
        • Json_OrderDetail_V7
        • Json_OrderDetail_V8
        • OrderDetail V9
        • OrderDetail V13
      • AncillaryPricing
        • AncillaryPricing
        • AncillaryPricing V5
      • AncillaryBooking
        • AncillaryBooking
      • CancelAncillaryOrder
        • CancelAncillaryOrder
      • AncillaryTicketing
        • AncillaryTicketing_V2
      • AncillaryStatusPush
        • AncillaryStatusPush
      • AncillaryOrderDetail
        • AncillaryOrderDetail
      • RequestTicketing
        • RequestTicketing
      • ScheduleChangeNotify
        • ScheduleChangeNotify
      • GetScheduleChangeList
        • GetScheduleChangeList
      • AcknowledgeScheduleChange
        • AcknowledgeScheduleChange
      • AcceptScheduleChange
        • AcceptScheduleChange
      • GetScheduleChangeReply
        • GetScheduleChangeReply
      • RefundPricing
        • RefundPricing
      • CheckRefundPricing
        • CheckRefundPricing
      • RefundRequest
        • RefundRequest
      • RefundResultNotify
        • RefundResultNotify
      • CheckRefund
        • CheckRefund
      • ReimbursedResultNotify
        • ReimbursedResultNotify
      • CheckReimbursed
        • CheckReimbursed
      • UploadAttachmentFile
        • UploadAttachmentFile
      • DownloadAttachmentFile
        • DownloadAttachmentFile
      • ChangeReshop
        • ChangeReshop
      • ChangeRequest
        • ChangeRequest
      • ChangePassengerInfo
        • ChangePassengerInfo
      • VoidRequest
        • VoidRequest
        • VoidRequest_V2
      • ReimbursedResultPush
        • ReimburseResultPush_V2
  • Development Instructions
    • Signature
    • Order Status Explanation
    • Booking errors explanation and suggestions
    • Price Breakdown Explanation
    • Airlines available from PKFARE
    • PKFARE Operation Notice
    • How to retrieve airlines'PNR and ticket numbers
    • PKFARE Buyer API solutionId Usage Guide
  • Notice
    • Release Note
  • Schemas
    • Schemas
      • ShoppingReq
      • Result«ShoppingResult»
      • Authentication
      • SearchDTO
      • JourneysDTO_1
      • PassengersDTO
      • ShoppingResult
      • SegmentsDTO
      • SolutionsDTO
      • BaggageDTO
      • ConditionsDTO
      • ChangeDTO
      • OtherDTO
      • RefundDTO
      • JourneysDTO
      • SegmentInfoDTO
  1. Development Instructions

How to retrieve airlines'PNR and ticket numbers

🎫 Ticket Number and PNR Mapping – Interface Parameter Explanation#

This document describes how to parse and prioritize the ticketing and PNR data in the PKFARE-issued ticket push interface. It aims to help integrators accurately extract and associate ticket numbers with passengers and flight segments.

✈️ Data Source Prioritization#

✅ Primary Source: pnrList#

Always prioritize the pnrList structure when it is available. It provides the most granular mapping between:
Passengers (via passengerIndex)
Segments
Ticket numbers (ticketNums)
Airline PNRs (airPnr)
This ensures that each passenger and segment can be precisely linked with the correct ticket number and airline PNR.

❌ Ignore: data.pnr#

The data.pnr field is an order-level general PNR and should be ignored during downstream processing, as it holds no segment-level or passenger-level value.

🔁 Fallback Logic (When pnrList is Missing)#

If pnrList is not present or is empty, use the following fallback approach to extract ticket and PNR information.

🧾 Sample Fallback JSON#

{
  "airPnr": "TODURR",
  "passengers": [
    {
      "firstName": "Mark",
      "lastName": "Zuo",
      "ticketNum": "1234671234561/1234671234562"
    }
  ]
}

🔍 Parsing Rules#

Extract airPnr from data.airPnr as the order-level airline PNR.
Extract ticket numbers from data.passengers[].ticketNum:
Ticket numbers are joined by /, so split them accordingly:
["1234671234561", "1234671234562"]
If no further mapping is available, assume the ticket order matches journey segment order.

💡 Best Practices#

✅ Always use pnrList when available:#

It’s the most granular source of ticket-to-passenger-to-segment mapping.
Includes both ticketNums and airPnr per segment.

❌ Ignore data.pnr:#

It’s a general order-level placeholder.
Holds no value for passengers or segment-level processing.

🛠 Fallback when pnrList is missing:#

Use data.airPnr as the airline PNR.
Use data.passengers[].ticketNum, and split on / if multiple tickets exist.
Ensure fallback mapping aligns with the segment count or journey order.

🔍 Data validation tips:#

Confirm ticket number format is 13-digit.
Ensure ticket count matches journey segment count (when using fallback).
Make sure each ticketNum is properly associated with the correct passenger and flight segment.

Modified at 2025-04-23 06:04:17
Previous
PKFARE Operation Notice
Next
PKFARE Buyer API solutionId Usage Guide