Shopping, PrecisePricing_V11 (/json/precisePricing_V11), PreciseBooking_V7 (/json/preciseBooking_V7)solutionId across Shopping, PrecisePricing, and PreciseBooking.solutionId is the unique identifier of a specific flight solution. It should be treated as an opaque, immutable value. Buyers should not parse, shorten, decode, rewrite, or reuse it outside the API flow for which it was returned.Shopping -> PrecisePricing -> PreciseBookingsolutionId.solutionId together with the same itinerary details to verify the real-time price and availability.solutionId returned by the successful PrecisePricing response to create the order.| Field | Usage |
|---|---|
solutionId | Identifies the selected Shopping solution. |
solutionKey | Recommended for data quality monitoring and issue tracing. |
journeys / segment details | Must be reused consistently in Pricing. |
bookingCode | Should be preserved for normal Pricing to improve price stability and pricing success rate. |
tag | Product tag, if returned or selected for a tagged product. |
| passenger counts | Adult, child, and infant counts must remain consistent through Pricing and Booking. |
solutionId as a complete string. Some solutionId values may contain special characters such as +, /, or =, so the value must not be truncated or transformed.solutionId.| Field group | Requirement |
|---|---|
solutionId | Use the selected Shopping solution's solutionId. |
journeys | Use the same journey order and segment sequence. |
| segment details | Preserve airline, flight number, departure, arrival, departure date/time, arrival date/time. |
bookingCode | Preserve the Shopping bookingCode where available. |
solutionKey | Recommended for monitoring and troubleshooting. |
tag | Use only valid PKFARE-defined product tags when applicable. |
cabin and bookingCode are provided and they are not inconsistent, PrecisePricing uses bookingCode as the pricing basis. Therefore, for normal Shopping-based Pricing, preserving bookingCode is recommended.| Field | Requirement |
|---|---|
booking.solution.solutionId | Use the solutionId returned by the successful PrecisePricing response. |
booking.solution.journeys | Use the journey and segment details aligned with the successful Pricing result. |
| fares and taxes | Use the latest successful Pricing result. |
| passenger count and type | Must match the Pricing request and result. |
solutionId should only be used once during the booking process. If the Booking attempt fails or the user changes itinerary, passenger count, product, or ancillary selection, the buyer should perform PrecisePricing again and use the newly returned Pricing result for Booking.| Scenario | Recommended action |
|---|---|
B020 - no price found for the selected flight option | Retry with direct pricing fallback if the buyer still wants alternatives for the same itinerary. |
B021 - selected booking code has no seats available | Retry with direct pricing fallback if the buyer accepts alternative booking codes or prices. |
| PrecisePricing version | Direct pricing trigger |
|---|---|
PrecisePricing_V5 and earlier | Send the Pricing request with an empty bookingCode. |
PrecisePricing_V6 and later | Set solutionId to direct pricing. |
PrecisePricing_V6 and later versions, buyers should not use solutionId = 000 as the direct pricing trigger. The correct trigger value is direct pricing.bookingCode, price, product tag, or fare condition.solutionId returned by the successful direct Pricing response.solutionId comes from the current Shopping response.bookingCode for normal Pricing.solutionKey where available.errorCode = 0.solutionId returned by the successful PrecisePricing response.solutionId that has already been used.bookingCode for V5 and earlier, solutionId = direct pricing for V6 and later.solutionId returned by direct Pricing for Booking.| Control | Recommendation |
|---|---|
| Data persistence | Store the complete selected Shopping solution, not only display fields. |
| Request generation | Generate Pricing and Booking requests from API response objects, not from manually rebuilt UI data. |
| Validity timer | Start a timer after successful Pricing and re-price before the 30-minute limit. |
| Idempotency control | Prevent duplicate Booking attempts with the same Pricing solutionId. |
| Error routing | Route solution-related errors according to the separate error handling guide. |
| Logging | Log solutionId, solutionKey, journey details, passenger counts, API stage, timestamp, and error code for troubleshooting. |
Shopping selected solution
-> PrecisePricing with the same solutionId, journey details, and bookingCode
-> Use successful Pricing response as the source of truth
-> PreciseBooking within the valid Pricing windowsolutionId consistency across the flow, use the latest PrecisePricing result for Booking, avoid reusing stale or consumed IDs, and reserve direct pricing for controlled fallback scenarios.