---
title: "Cancel Air Pnr"
method: POST
path: "/v2/air/cancel-pnr"
tags: ["Air"]
---

# Cancel Air Pnr

`POST /v2/air/cancel-pnr`

## Request

- Base URL: `https://api-ext-sboxmeta.partners.spotnana.com`
- URL: `https://api-ext-sboxmeta.partners.spotnana.com/v2/air/cancel-pnr`
- Auth: HTTP bearer

Cancel the air pnr and issues applicable refunds

## Request body

- AirCancelPnrRequest
  - `pnrId` string, required: The spotnana assigned unique PNR id of the booking.
  - `optionId` string, required: Cancellation option id chosen by the traveler prior to cancelling the booking. The trip->cancellation-details API returns a bunch of options like whether the traveler wants to keep the ticket as unused or get the refunds with applicable penalties.
  - `cancellationOverride` CancellationOverride: Cancellation info override details, like cancellation penalty, waiver code, etc.
    - `waiverCode` string: A waiver code to be applied to the refund. Typically a waiver code will be supplied by the airline for the agent to use to override a cancellation fee.
    - `tourCode` string: A tourcode to be applied to the refund. Input of a tourcode will override any tourcode on the original ticket.
    - `newCancellationPenalty` Money: Money object containing details such as the amount, the currency code, and the converted amount.
      - `amount` number, double, required: The numeric value for the amount of money.
      - `currencyCode` string, required: The 3-letter currency code for the money amount (defined using ISO 4217 standard).
      - `convertedAmount` number, double: The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).
      - `convertedCurrency` string: The 3-letter currency code for the converted currency (defined using ISO 4217 standard).
      - `otherCoinage` object[]: List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.
        - `coinageCode` 'PAYMENT_METHOD_UNKNOWN' | 'CREDIT_CARD' | 'BREX_POINTS' | 'CASH' | 'QANTAS_POINTS' | 'VENDOR_PROGRAM_PAYMENT' | 'DELAYED_INVOICING' | 'FLIGHT_CREDITS' | 'QANTAS_TRAVEL_FUND' | 'CUSTOM_VIRTUAL_PAYMENT' | 'FLIGHT_PASS' | 'MISCELLANEOUS_CREDIT_ORDER' | 'NO_PREPAYMENT' | 'DELAYED_PAYMENT': Payment method
        - `amount` number, double
        - `conversionRate` number, double: 1 coin in this system equals to how many currency value
        - `preferredCurrencyConversionRate` number, double: 1 coin in this system equals to how many currency value
        - `otherCoinageMetadata` FlightPassPaymentMetadataWrapper: Wrapper for Flight Pass payment metadata.
          - `metadataType` string: Discriminator field for polymorphic deserialization
          - `flightPassMetadata` FlightPassPaymentMetadata, required: Metadata specific to Flight Pass payment method in OtherCoinage.
            - `flightPassNumber` string: Flight pass number
            - `flightPassAmounts` FlightPassPaymentAmounts: Fare breakdown for the flight pass booking.
              - …
  - `customFieldV3Responses` CustomFieldV3Response[]: Custom field responses for the booking.
    - `fieldId` string, uuid, required: Custom field id
    - `fieldName` string: Name of the custom field
    - `armId` string, uuid, required: Arm id which is applicable
    - `includeLocations` IncludeLocation[]
    - `selectedOptions` CustomFieldSelectedOption[], required: The list of options that are selected by user or auto populated.
      - `name` string, required: Value of the selection
      - `translatedName` string: Translated value of the selection
      - `description` string: Description of the selection
      - `translatedDescription` string: Translated description of the selection
      - `additionalUserInput` string: Additional user input
      - `additionalInfos` string[]: Actual values of the additional infos
      - `additionalInfoConfigs` AdditionalInfo[]: Additional info configs for the selected option
        - union: Additional data need to be sent along with the custom field response.
          - object: Variable defining the additional value to be sent along with custom field response.
            - `type` string, required
            - `name` 'PUBLISHED_FARE' | 'LLF' | 'ADD_COLLECT_AMOUNT' | 'SELECTED_FARE' | 'SPLIT_PAYMENT_FARE', required: Name of the variable.
          - object: Expression consisting of variables and constants which needs to be sent along with custom field response.
            - `type` string, required
            - `formatExpression` string, required: The expression must be of format : `<any_text> ${expression} <any_text>`.The expression can consist of a combination of variables and mathematical operations. Variable names must be same as VariableName Enum. To define mathematical operations, the operation name should follow the format `math.<math_op>(arg1, arg2)`. Both `arg1` and `arg2` can be variables or constants. The supported math operations (math_op) include: `add, mul, div, sub, min, and max`. All keywords, such as `<math_op>, math, and var` must be written in lowercase.
            - `variables` VariableName[]: Reference names of the variables present in the expression.
      - `optionId` string, uuid: Id of the selected option; sent by clients, never returned
  - `postPaymentVerificationInfo` union: Payment information sent after the verification of payment method.
    - object: Wrapper for post stripe verification info object.
      - `postStripeVerificationInfo` PostStripeVerificationInfo: Object to indicate successful stripe verification and provide payment information for next steps.
        - `paymentMethodId` string: Stripe's payment method id for which the verification was performed.
      - `paymentKey` string: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.
    - object: Wrapper for post url based verification info object.
      - `postUrlBasedVerificationInfo` PostUrlBasedVerificationInfo
        - `pnrId` string: Pnr Id, to continue with the booking flow/check the status of the pnr.
      - `paymentKey` string: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.
    - object: Wrapper for amadeus checkout verification info object
      - `amadeusCheckoutVerificationInfo` AmadeusCheckoutVerificationInfo
        - `paymentActionTokens` AmadeusPaymentActionToken[], required
          - `paymentRequestId` string, required: Initial payment id generated by checkout SDK to initiate payment
          - `actionToken` string, required: Token returned by checkout SDK to create/validate FOP in PSS order
        - `paymentRequestId` string: Initial payment id generated by checkout SDK to initiate payment
        - `actionToken` string: Token returned by checkout SDK to create/validate FOP in PSS order
        - `confirmPayment` boolean: Flag which indicates that the payment confirmation is now required (after 3ds or redirection)
        - `saveCardForFutureUse` boolean: Flag to indicate that card can be saved for future use.
      - `paymentKey` string: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.
    - object: Wrapper for 3DS2 post verification info object
      - `threeDSecure2PostVerificationInfo` ThreeDSecure2PostVerificationInfo: Result of 3DS2 verification.
        - `results` ThreeDSecure2VerificationResultItem[], required: List of 3DS2 verification results.
          - `cardId` string, required: Card id for which the verification was performed.
          - `sessionId` string, required: session id of the payment service provider.
          - `success` boolean, required: Whether the 3DSecure2 authentication was successful.
      - `paymentKey` string: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.
    - object: Wrapper for post razorpay verification info object.
      - `postRazorpayVerificationInfo` RazorpayPostVerificationInfo: Object to indicate successful stripe verification and provide payment information for next steps.
        - `paymentId` string, required: Razorpay payment id for which the verification was performed.
        - `orderId` string: Razorpay order id in which the payment was added.
        - `signature` string: Razorpay signature to validate the payment.
      - `paymentKey` string: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.
  - `bookingPaymentDetails` BookingPaymentDetails: Payment details used for booking.
    - `bookingTravelerPaymentDetails` BookingTravelerPaymentDetails[], required
      - `selectedFormOfPayments` SelectedFormOfPayment[], required
        - `paymentItems` PaymentItem[], required
          - `itemType` 'SERVICE_FEE' | 'TRAVEL_TICKET' | 'SEAT' | 'BAGGAGE' | 'EARLY_BIRD': Type of payment item eligible for this fop rule
          - `fareComponent` FareComponent[]
        - `selectedPaymentSources` SelectedPaymentSource[], required
          - `paymentSourceId` string, uuid: Unique identifier identifying this payment source.
          - `rawPaymentSource` union: Raw Details of the Payment Source
            - object: Object to pass through dpan payment source details through the api call.
              - …
            - object
              - …
          - `postPaymentRedirectionUrl` string: Url for post payment redirection if payment source navigates user to a third party url
          - `cvv` string: CVV associated with associated payment source, if any.
          - `amount` Money: Money object containing details such as the amount, the currency code, and the converted amount.
            - `amount` number, double, required: The numeric value for the amount of money.
            - `currencyCode` string, required: The 3-letter currency code for the money amount (defined using ISO 4217 standard).
            - `convertedAmount` number, double: The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).
            - `convertedCurrency` string: The 3-letter currency code for the converted currency (defined using ISO 4217 standard).
            - `otherCoinage` object[]: List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.
              - …
  - `manualRemarks` ThirdPartyPnrRemark[]: Remarks from the frontend to be added to the PNR during creation.
    - `sabre` SabrePnrRemark: Sabre Remark
      - `type` 'ALPHA_CODED' | 'CLIENT_ADDRESS' | 'CORPORATE' | 'DELIVERY_ADDRESS' | 'GENERAL' | 'GROUP_NAME' | 'HIDDEN' | 'HISTORICAL' | 'INVOICE' | 'ITINERARY' | 'OSI': Type of remark, for eg, General, Invoice, etc.
      - `text` string: ThirdPartyPnrRemark
      - `legIndex` integer: Index referencing the flight leg for which the remark should be added. Currently required only for OSI Remarks. Should be used in conjunction with the flight Index.
      - `flightIndex` integer: Index referencing the flight for which the remark should be added. Currently required only for OSI Remarks. Should be used in conjunction with the leg Index.
  - `unusedCreditTicketNumbers` string[]: Ticket numbers to be left open to convert to unused credit.
  - `refundDetails` AirCancelRefundDetails[]: Per-ticket refund details including refund amount and cancel type.
    - `ticketNumber` string: Ticket number corresponding to the refund details.
    - `refundAmount` FareAmount: Fare amount including base fare and tax.
      - `base` Money, required: Money object containing details such as the amount, the currency code, and the converted amount.
        - `amount` number, double, required: The numeric value for the amount of money.
        - `currencyCode` string, required: The 3-letter currency code for the money amount (defined using ISO 4217 standard).
        - `convertedAmount` number, double: The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).
        - `convertedCurrency` string: The 3-letter currency code for the converted currency (defined using ISO 4217 standard).
        - `otherCoinage` object[]: List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.
          - `coinageCode` 'PAYMENT_METHOD_UNKNOWN' | 'CREDIT_CARD' | 'BREX_POINTS' | 'CASH' | 'QANTAS_POINTS' | 'VENDOR_PROGRAM_PAYMENT' | 'DELAYED_INVOICING' | 'FLIGHT_CREDITS' | 'QANTAS_TRAVEL_FUND' | 'CUSTOM_VIRTUAL_PAYMENT' | 'FLIGHT_PASS' | 'MISCELLANEOUS_CREDIT_ORDER' | 'NO_PREPAYMENT' | 'DELAYED_PAYMENT': Payment method
          - `amount` number, double
          - `conversionRate` number, double: 1 coin in this system equals to how many currency value
          - `preferredCurrencyConversionRate` number, double: 1 coin in this system equals to how many currency value
          - `otherCoinageMetadata` FlightPassPaymentMetadataWrapper: Wrapper for Flight Pass payment metadata.
            - `metadataType` string: Discriminator field for polymorphic deserialization
            - `flightPassMetadata` FlightPassPaymentMetadata, required: Metadata specific to Flight Pass payment method in OtherCoinage.
              - …
      - `tax` Money, required: Money object containing details such as the amount, the currency code, and the converted amount.
        - `amount` number, double, required: The numeric value for the amount of money.
        - `currencyCode` string, required: The 3-letter currency code for the money amount (defined using ISO 4217 standard).
        - `convertedAmount` number, double: The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).
        - `convertedCurrency` string: The 3-letter currency code for the converted currency (defined using ISO 4217 standard).
        - `otherCoinage` object[]: List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.
          - `coinageCode` 'PAYMENT_METHOD_UNKNOWN' | 'CREDIT_CARD' | 'BREX_POINTS' | 'CASH' | 'QANTAS_POINTS' | 'VENDOR_PROGRAM_PAYMENT' | 'DELAYED_INVOICING' | 'FLIGHT_CREDITS' | 'QANTAS_TRAVEL_FUND' | 'CUSTOM_VIRTUAL_PAYMENT' | 'FLIGHT_PASS' | 'MISCELLANEOUS_CREDIT_ORDER' | 'NO_PREPAYMENT' | 'DELAYED_PAYMENT': Payment method
          - `amount` number, double
          - `conversionRate` number, double: 1 coin in this system equals to how many currency value
          - `preferredCurrencyConversionRate` number, double: 1 coin in this system equals to how many currency value
          - `otherCoinageMetadata` FlightPassPaymentMetadataWrapper: Wrapper for Flight Pass payment metadata.
            - `metadataType` string: Discriminator field for polymorphic deserialization
            - `flightPassMetadata` FlightPassPaymentMetadata, required: Metadata specific to Flight Pass payment method in OtherCoinage.
              - …
      - `taxBreakdown` Tax[]
        - `amount` Money, required: Money object containing details such as the amount, the currency code, and the converted amount.
          - `amount` number, double, required: The numeric value for the amount of money.
          - `currencyCode` string, required: The 3-letter currency code for the money amount (defined using ISO 4217 standard).
          - `convertedAmount` number, double: The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).
          - `convertedCurrency` string: The 3-letter currency code for the converted currency (defined using ISO 4217 standard).
          - `otherCoinage` object[]: List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.
            - `coinageCode` 'PAYMENT_METHOD_UNKNOWN' | 'CREDIT_CARD' | 'BREX_POINTS' | 'CASH' | 'QANTAS_POINTS' | 'VENDOR_PROGRAM_PAYMENT' | 'DELAYED_INVOICING' | 'FLIGHT_CREDITS' | 'QANTAS_TRAVEL_FUND' | 'CUSTOM_VIRTUAL_PAYMENT' | 'FLIGHT_PASS' | 'MISCELLANEOUS_CREDIT_ORDER' | 'NO_PREPAYMENT' | 'DELAYED_PAYMENT': Payment method
            - `amount` number, double
            - `conversionRate` number, double: 1 coin in this system equals to how many currency value
            - `preferredCurrencyConversionRate` number, double: 1 coin in this system equals to how many currency value
            - `otherCoinageMetadata` FlightPassPaymentMetadataWrapper: Wrapper for Flight Pass payment metadata.
              - …
        - `taxCode` string: Tax code
        - `percentage` number, double: Tax amount to total amount
        - `description` string: Tax name or Tax Description
    - `cancelType` 'UNKNOWN_CANCEL_TYPE' | 'VOID' | 'REFUND' | 'UNUSED_CREDIT': Type of cancellation for a ticket.
    - `refundTaxBreakdown` Tax[]
      - `amount` Money, required: Money object containing details such as the amount, the currency code, and the converted amount.
        - `amount` number, double, required: The numeric value for the amount of money.
        - `currencyCode` string, required: The 3-letter currency code for the money amount (defined using ISO 4217 standard).
        - `convertedAmount` number, double: The converted currency and amount that has been converted (if a currency conversion has been requested). For example, if the call requests that money be sent in a specified currency (because the frontend requested the backend to send money in the user's preferred currency).
        - `convertedCurrency` string: The 3-letter currency code for the converted currency (defined using ISO 4217 standard).
        - `otherCoinage` object[]: List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.
          - `coinageCode` 'PAYMENT_METHOD_UNKNOWN' | 'CREDIT_CARD' | 'BREX_POINTS' | 'CASH' | 'QANTAS_POINTS' | 'VENDOR_PROGRAM_PAYMENT' | 'DELAYED_INVOICING' | 'FLIGHT_CREDITS' | 'QANTAS_TRAVEL_FUND' | 'CUSTOM_VIRTUAL_PAYMENT' | 'FLIGHT_PASS' | 'MISCELLANEOUS_CREDIT_ORDER' | 'NO_PREPAYMENT' | 'DELAYED_PAYMENT': Payment method
          - `amount` number, double
          - `conversionRate` number, double: 1 coin in this system equals to how many currency value
          - `preferredCurrencyConversionRate` number, double: 1 coin in this system equals to how many currency value
          - `otherCoinageMetadata` FlightPassPaymentMetadataWrapper: Wrapper for Flight Pass payment metadata.
            - `metadataType` string: Discriminator field for polymorphic deserialization
            - `flightPassMetadata` FlightPassPaymentMetadata, required: Metadata specific to Flight Pass payment method in OtherCoinage.
              - …
      - `taxCode` string: Tax code
      - `percentage` number, double: Tax amount to total amount
      - `description` string: Tax name or Tax Description
  - `waiveOffInfo` WaiveOffInfo: Waive off info.
    - `waiveOffInfoPerModules` WaiveOffInfoPerModule[]: Waive off info per module.
      - `moduleId` 'BOOKING' | 'AGENT': Module id
      - `waiveOffFeeReason` WaiveOffFeeReason: Fee waive off reason info.
        - `reasonCode` string: Fee waive off reason code.
        - `reason` string: Fee waive off reason description.

## Response `200`

OK

- AirCancelPnrResponse
  - `sourcePnrId` string: Source pnr id of the cancellation.
  - `status` 'CANCELLED' | 'AGENT_TASK_CREATED': - CANCELLED: PNR is cancelled. - AGENT_TASK_CREATED: Agent task is created for the cancellation.
  - `automaticCancellationInfo` AutomaticCancellationInfo: Information about automatic processing that was performed during cancellation
    - `segmentsCancelled` boolean: Whether segments were successfully cancelled
    - `automaticRefundSuccessful` boolean: Whether automatic refund was attempted and successful
    - `refundedTicketNumbers` string[]: List of ticket numbers that were automatically refunded
    - `automaticProcessingMessage` string: Human-readable message describing what was automatically processed
  - `processingWarning` string: Optional warning message if processing is taking longer than expected
  - `paymentVerificationInfo` union: VerificationInfo required for the payment operation.
    - object: Wrapper for stripe verification Info.
      - `stripeVerificationInfo` StripeVerificationInfo: Verification information required for card stripe verification.
        - `stripeCardTokens` StripeCardTokens: Stripe card tokens used by clients in authorizing newly added cards.
          - `paymentProcessor` string, required: Payment processor involved.
          - `paymentMethodId` string, required: Stripe's payment-method-id for the card.
          - `setupIntentClientSecret` string, required: Stripe client secret for attaching the card to the setup-intent.
          - `connectedAccountId` string: Account Id of the connected account in which above payment-method and setup-intent exist. This is populated only when a connected account is used.
          - `publishableKey` string: Publishable key of the Stripe platform account.
      - `gatewayIdentifier` GatewayIdentifier
        - `gatewayId` string: Gateway Id for which the payment method should be verified.
        - `gatewayType` 'PAYMENT_GATEWAY_UNKNOWN' | 'STRIPE' | 'BREX' | 'RAZORPAY': Gateway Type for of the verification gateway.
      - `paymentKey` string: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.
    - object: Wrapper for stripe verification Info.
      - `urlVerificationInfo` UrlVerificationInfo: Verification information required for url based payment verification.
        - `ccVerificationUrl` string: Verification url for the payment source.
      - `gatewayIdentifier` GatewayIdentifier
        - `gatewayId` string: Gateway Id for which the payment method should be verified.
        - `gatewayType` 'PAYMENT_GATEWAY_UNKNOWN' | 'STRIPE' | 'BREX' | 'RAZORPAY': Gateway Type for of the verification gateway.
      - `paymentKey` string: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.
    - object: Wrapper for 3DS2 verification Info.
      - `threeDSecure2VerificationInfo` ThreeDSecure2VerificationInfo: Verification information required for 3DS2 authentication.
        - `verificationInfoList` ThreeDSecure2VerificationInfoItem[], required: List of 3DS2 verification info.
          - `cardId` string, required: Card id for which the verification was performed.
          - `sessionId` string, required: session id of the payment service provider.
          - `redirectUrl` string, required: 3DS2 verification redirect url.
      - `gatewayIdentifier` GatewayIdentifier
        - `gatewayId` string: Gateway Id for which the payment method should be verified.
        - `gatewayType` 'PAYMENT_GATEWAY_UNKNOWN' | 'STRIPE' | 'BREX' | 'RAZORPAY': Gateway Type for of the verification gateway.
      - `paymentKey` string: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.
    - object: Wrapper for Razorpay verification Info.
      - `razorPayVerificationInfo` RazorpayVerificationInfo: Verification information required when card is tokenized via Razorpay for Indian markets.
        - `paymentProcessor` string, required: Payment processor involved.
        - `paymentAuthUrl` string: URL for authorizing the payment on the card.
      - `gatewayIdentifier` GatewayIdentifier
        - `gatewayId` string: Gateway Id for which the payment method should be verified.
        - `gatewayType` 'PAYMENT_GATEWAY_UNKNOWN' | 'STRIPE' | 'BREX' | 'RAZORPAY': Gateway Type for of the verification gateway.
      - `paymentKey` string: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: The specified resource was not found.

## Changes

- **2026-10-29** `83d5f6af63d7`: 7 info
  - added the new `DELAYED_PAYMENT` enum value to the request property `bookingPaymentDetails/bookingTravelerPaymentDetails/items/selectedFormOfPayments/items/selectedPaymentSources/items/amount/otherCoinage/items/coinageCode`
  - added the new `DELAYED_PAYMENT` enum value to the request property `bookingPaymentDetails/bookingTravelerPaymentDetails/items/selectedFormOfPayments/items/selectedPaymentSources/items/rawPaymentSource/oneOf[subschema #2: Credit]/totalFare/otherCoinage/items/coinageCode`
  - added the new `DELAYED_PAYMENT` enum value to the request property `cancellationOverride/newCancellationPenalty/otherCoinage/items/coinageCode`
  - added the new `DELAYED_PAYMENT` enum value to the request property `refundDetails/items/refundAmount/base/otherCoinage/items/coinageCode`
  - …3 more
- **2026-10-24** `fa8268177e1d`: 1 info
  - added the new optional request property `customFieldV3Responses/items/selectedOptions/items/optionId`
- …earlier changes not shown

[Operation history](https://skmtc.dev/spotnana/apis/air-api/changes/v2/air/cancel-pnr/post.md)

---

[API](https://skmtc.dev/spotnana/apis/air-api.md) - [All operations](https://skmtc.dev/spotnana/apis/air-api/llms.txt) - [OpenAPI document](https://skmtc.dev/spotnana/apis/air-api/revisions/33dcaecde45b?raw)
