This guide provides instructions for API partners on how to implement and use the amendments endpoints to process changes to bookings and retrieve amendment confirmation details.

These endpoints are only available to:

  • API partners with access level Full Access + Booking
  • Merchant partners

Please note: Only bookings made after July 2025 are eligible to be amended through these endpoints.

Overview of amendment endpoints

The amendments functionality allows API partners to:

    1
    Check whether a booking is amendable and what elements can be changed
    2
    Retrieve a quote for the amendment, including cost implications
    3
    Confirm the amendment and apply the requested changes

    Please note: Only confirmed bookings can be amended. Bookings that are still on hold and not yet confirmed cannot be amended.

      N

      Supported amendments

      1. Booking details (bookingDetails)
        Update travel date / time / product option
      2. Passenger mix (updatePaxMix)
        Add/remove travelers
      3. Booking questions per traveler (perTravelerQuestions)
        Update questions per traveler (passport, DOB, etc.)
      4. Booking questions per booking (perBookingQuestions)
        Amend questions per booking (pickup point, etc.)
      M

      Unsupported amendments

      1. Lead traveler (the name on the voucher) – unsupported when a product doesn’t have booking questions FULL_NAMES_FIRST and FULL_NAMES_LAST.
      2. Language guides
      3. Special requirements
      4. Bookings confirmed for manual confirmation type products.
      5. Bookings confirmed for products with a mix of instant and manual confirmation types when it’s past cutoff time (in the initial booking).
      6. Merchant partners only: Supplier-driven amendments that require approval from a merchant partner. When such an amendment is initiated, the merchant partner will receive an email notification requesting approval or rejection. The response must be provided via email.

      Deep dive into amendment endpoints

      /amendment/check/{booking-reference}

      ⊗ Basic-access Affiliates ⊗ Full-access Affiliates ✓ Full + Booking access Affiliates ✓ Merchants

      Check booking amendability

      • This endpoint returns information on whether a booking is amendable and lists the elements that can be changed.
      • The request must include the Viator booking reference (bookingRef)
      • isAmendable field will determine if booking can be amended, based on the eligibility criteria.
                           – Manual confirmation type products cannot be amended (if confirmationType = MANUAL, isAmendable = false).
                           – Products with a mix of instant and manual confirmation types cannot be amended past cutoff time (if INSTANT_THEN_MANUAL, isAmendable = false past cutoff time – you can read about booking cutoff times here).
                           – If isAmendable is returned as false, the ineligibility reason will be returned. Otherwise, it will be absent.
      • The paxMixSummary object will match all travellers in the paxMix with a unique identifier and inform which booking questions have been answered for each.
                           – travelerNum field is crucial in the amendment process to identify which traveler is to be amended or removed from the booking.
                           – travelerNum sent by partners during the booking flow will be reused. When travelerNum is not sent by partners (when the product has no booking questions), it’ll be generated automatically.
                           – Only returned if amendmentTypes = UPDATE_PAX_MIX or PER_TRAVELER_QUESTIONS.
                           – paxMixSummary.bookingQuestions will return all answers provided by the partner at the time of the booking and null if the booking question was not answered.
      • Only one amendment type per request is allowed
                           – amendmentTypes vary depending on the product. eg: if product has no per-person booking questions, PER_TRAVELER_QUESTIONS won’t be returned.

        Request example

          {

            “bookingRef”: BR-666666666“,

          }

          Response examples

            Not amendable

            {

              “bookingRef”: “BR-666666666”,

              “isAmendable”: false,

              “reason”: [

                “UNSUPPORTED_PRODUCT”],

            }

            Amendable without booking questions

            {

              “bookingRef”: “BR-666666666”,

              “isAmendable”: true,

              “amendmentTypes”: [

                “BOOKING_DETAILS”,

                “UPDATE_PAX_MIX”,

                “PER_BOOKING_QUESTIONS”],

            }

            Amendable with booking questions

            {

              “bookingRef”: “BR-666666666”,

              “isAmendable”: true,

              “amendmentTypes”: [

                “BOOKING_DETAILS”,

                “UPDATE_PAX_MIX”,

                “PER_TRAVELER_QUESTIONS”,

                “PER_BOOKING_QUESTIONS”

              ],

              “paxMixSummary”: [

                {

                  “travelerNum”: 1,

                  “ageBand”: “ADULT”,

                  “bookingQuestions”: [

                    {

                      “question”: FULL_NAMES_FIRST,

                      “answer”: “JOHN”,

                      “unit”: null

                    },

                    {

                      “question”: WEIGHT,

                      “answer”: “70”,

                      “unit”: “kg”

                    }

                  ]

                },

                {

                  “travelerNum”: 2,

                  “ageBand”: “CHILD”,

                  “bookingQuestions”: []

                }

              ]

            }

            Amendable with unanswered booking questions

            {

              “bookingRef”: “BR-666666666”,

              “isAmendable”: true,

              “amendmentTypes”: [

                “BOOKING_DETAILS”,

                “UPDATE_PAX_MIX”,

                “PER_TRAVELER_QUESTIONS”,

                “PER_BOOKING_QUESTIONS”

              ],

              “paxMixSummary”: [

                {

                  “travelerNum”: 1,

                  “ageBand”: “ADULT”,

                  “bookingQuestions”: [

                    {

                      “question”: FULL_NAMES_FIRST,

                      “answer”: null,

                      “unit”: null

                    },

                    {

                      “question”: WEIGHT,

                      “answer”: null,

                      “unit”: null

                    }

            }

            /amendment/quote

            ⊗ Basic-access Affiliates ⊗ Full-access Affiliates ✓ Full + Booking access Affiliates ✓ Merchants

            Check the cost of the amendment

            • Provides a detailed quote for the requested amendment, including pricing.
            • Only one amendment type per request is allowed: eg. either BOOKING_DETAILS or UPDATE_PAX_MIX.
                                 – The amendment type to perform will be inferred from the request information sent
                                 – If multiple amendment types are sent in the /quote request, /quote will fail.
            • The quote will reflect the intended final state of the booking. The data submitted in /quote will be applied when executing the /amend.
            • The /quote does NOT hold availability or pricing.
            • quoteRef is the unique identifier of each /quote
                                 – It stores all the information to be used for amendment.
                                 – It expires every 10 minutes. Partners should rely on the timeStamp field for quoteRef expiry date/time and must request a new quote after that period.
                                 – An amendment cannot be made without an existing quoteRef.
                                 – Multiple active quoteRef per bookingRef are allowed – if one of them succeeds, the others are deemed as expired.
                                 – Do not use outdated quoteRef when executing the /amend (which could result in price mismatches).
                                 – The same quoteRef can be reused if rejected in the /amend but still within expiry period.
            • All bookingQuestions must be answered when adding new travelers or when editing existing travelers and new questions have been added to the product (partners can verify this at /check step in paxMixSummary)
                                 – Relevant API validations apply, i.e. if unit is required, it must be provided. Read more about the implementation of booking questions in this guide: Implementing Booking Questions.
            • The price information returned in the response consists of:
              initialBookingPrice – returns the value paid in the initial booking (before the amendment)
              quotePriceDifference – the price of the amendment: the price of the requested changes vs the price paid in the initial booking.
              amendedBookingPrice shows the final view of the booking, if amendment succeeds – it includes lineItem price and totalPrice.

            Please note:
                               – The price quotePriceDifference value may be negative (ie, generate a refund).
                               – For markup merchants, quotePriceDifference is purely calculated based on partnerNetPrice.
                               – In case of discounted pricing, price before discount is not returned for amended bookings.
                               – Booking fee is currently not being charged nor refunded when price changes.
                               – You can find more details on how pricing should be handled in this guide: Calculating Product Pricing.

             

            • voucherFormat details will be returned in HTML if not specified in /quote request
            • Full + Booking Access Affiliates only: The last four digits of the previously charged card will be returned in the response under paymentMethod to confirm the payment method. The same card will be used to process the amendment and cannot be changed.

              Request examples

                Quote for booking details

                {“bookingRef”:”BR-123456789,

                 “bookingDetails”: {

                     “travelDate”: “2025-08-15”,

                     “startTime”: “10:00”

                     “productOptionCode”: “TG1”}

                 “voucherFormat”: “PDF”

                       },

                Quote for pax mix changes: add travelers with booking questions

                “bookingRef”: “BR-123456789”,

                “updatePaxMix”:

                “removePaxMix”: [],

                “addPaxMix”: [

                “travelerNum”: 4,

                “ageBand”: “ADULT”,

                “bookingQuestions”: [

                “id”: FULL_NAMES_FIRST,

                “answer”: “Jane”,

                “unit”: null

                “voucherFormat”: “PDF”

                Quote for pax mix changes: remove travelers

                “bookingRef”: “BR-123456789”,

                  “updatePaxMix”:

                    “removePaxMix”: [

                      “travelerNum”: 1,

                      “travelerNum”: 2

                    “addPaxMix”: []

                 “voucherFormat”: “PDF”

                Quote for traveler details changes

                “bookingRef”: “BR-123456789”,

                  “perTravelerQuestions”: [

                    “travelerNum”: 3,

                    “BookingQuestions”:

                      “id”: FULL_NAMES_LAST,

                      “answer”: “Smith”,

                      “unit”: null

                 

                      “id”: WEIGHT,

                      “answer”: 60,

                       “unit”: kg

                  “voucherFormat”: “PDF”

                Quote for pickup changes

                “bookingRef”: “BR-123456789”,

                   “perBookingQuestions”:

                      “question”: “PICKUP_POINT”,

                      “answer”: “LOC-6eKJ+or5y8o”,

                      “unit”: “LOCATION_REFERENCE

                   “voucherFormat”: “PDF”

                Response examples

                  Merchant

                  bookingRef”: “ABC123456”,

                  “quoteRef”: “QUOTE78910”,

                  “status”: “CONFIRMED”

                  “quoteExpiresAt”: 2025-06-01T14:30:00Z”

                  “initialBookingPrice”: 150.00,

                  “quotePriceDifference”: {

                          “recommendedRetailPrice”: 100,

                          “partnerNetPrice”: 90,

                          “bookingFee”: 0.0,

                          “commission”: 10.0

                          “partnerTotalPrice”: 90

                  “amendedBookingPrice”: 

                    “lineItems”: [ 

                        “ageBand”: “ADULT”,

                        “numberOfTravelers”: 2,

                        “subtotalPrice”: {

                          “price”: {

                            “recommendedRetailPrice”: 200.00,

                            “partnerNetPrice”: 180.00,

                        “ageBand”: “CHILD”,

                        “numberOfTravelers”: 1,

                        “subtotalPrice”: {

                          “price”: {

                            “recommendedRetailPrice”: 50.00,

                            “partnerNetPrice”: 45.00

                    “totalPrice”: {

                      “price”: {

                        “recommendedRetailPrice”: 250.00,

                        “partnerNetPrice”: 225.00,

                        “bookingFee”: 0.00,

                        “commission”: 25.0

                        “partnerTotalPrice”: 225.00

                  “currency”: “USD”,

                  “paymentMethod”: []

                  “voucherInfo”: {

                     “url”: “https://www.urletc”,

                     “format”: “PDF”,

                     “type”: “STANDARD”

                  Booking access affiliate

                  “bookingRef”: “ABC123456”,

                  “quoteRef”: “QUOTE78910”,

                  “status”: “CONFIRMED”

                  “quoteExpiresAt”: 2025-06-01T14:30:00Z”

                  “initialBookingPrice”: 150.00,

                  “quotePriceDifference”: {

                          “recommendedRetailPrice”: 100,

                  “amendedBookingPrice”: 

                    “lineItems”: [ 

                        “ageBand”: “ADULT”,

                        “numberOfTravelers”: 2,

                        “subtotalPrice”: {

                          “price”: {

                            “recommendedRetailPrice”: 200.00,

                        “ageBand”: “CHILD”,

                        “numberOfTravelers”: 1,

                        “subtotalPrice”: {

                          “price”: {

                            “recommendedRetailPrice”: 50.00,

                    “totalPrice”: {

                      “price”: {

                        “recommendedRetailPrice”: 250.00,

                       “currency”: “USD”,

                  “paymentMethod”: {

                      “type”: “card”,

                      “identifierType”: “cardLastFour”,

                      “identifier”: “4242”

                  “voucherInfo”: {

                     “url”: “https://www.urletc”,

                     “format”: “PDF”,

                     “type”: “STANDARD”

                  Rejected quote

                  “bookingRef”: “ABC123456”,

                  “quoteRef”: “QUOTE78910”,

                  “status”: “REJECTED”

                  “rejectionReasonCode”: “BOOKABLE_ITEM_IS_NO_LONGER_AVAILABLE”

                  /amendment/amend/{quoteRef}

                  ⊗ Basic-access Affiliates ⊗ Full-access Affiliates ✓ Full + Booking access Affiliates ✓ Merchants

                  Execute the emendment

                  • This endpoint is used to process the amendment requested in /amendment/quote. This step should be made right after /amendment/quote.
                  • The quoteRef must be passed in the request – it carries over all information needed for the amendment.
                  • voucherInfo details will be returned in HTML if not sent in /quote request.
                  • In case of discounted pricing, price before discount is not returned for amended bookings.
                  • Amendment status is returned in the response to this endpoint. Possible amendmentStatus values:
                               – AMENDED
                              – REJECTED
                              – PENDING
                  • Amendment will be rejected if:
                              – Price/availability at the time of the /amend is different from the /quote
                              – Product becomes ineligible for amendment
                  • When the amendment is rejected, a relevant rejectionReasonCodes will be returned.
                              – All possible rejectionReasonCodes values can be found in the documentation.
                  • In case of a PENDING amendment status, status updates should be polled using the /bookings/status endpoint – following the recommended frequency of updates from the nextPollAt timestamp.
                  • Full + Booking Access Affiliates only: Additional charges or refunds related to amendments will be processed via the original payment method (confirmed under paymentMethod). The payment method cannot be changed for processing amendments.

                  Request example

                    {

                      “quoteRef”: “QR-123456789”,

                    }

                    Response examples

                      Success

                      “amendmentStatus”: “AMENDED”,

                      “initialBookingPrice”: 150.00,

                      “quotePriceDifference”: {

                              “recommendedRetailPrice”: 100,

                              “partnerNetPrice”: 90,

                              “bookingFee”: 0.0,

                              “commission”: 10.0

                              “partnerTotalPrice”: 90

                      “amendedBookingPrice”: 

                        “lineItems”: [ 

                            “ageBand”: “ADULT”,

                            “numberOfTravelers”: 2,

                            “subtotalPrice”: {

                              “price”: {

                                “recommendedRetailPrice”: 200.00,

                                “partnerNetPrice”: 180.00,

                            “ageBand”: “CHILD”,

                            “numberOfTravelers”: 1,

                            “subtotalPrice”: {

                              “price”: {

                                “recommendedRetailPrice”: 50.00,

                                “partnerNetPrice”: 45.00

                        “totalPrice”: {

                          “price”: {

                            “recommendedRetailPrice”: 250.00,

                            “partnerNetPrice”: 225.00,

                            “bookingFee”: 0.00,

                            “commission”: 25.0

                            “partnerTotalPrice”: 225.00

                      “currency”: “USD”,

                      “paymentMethod”: []

                      “voucherInfo”: {

                         “url”: “https://www.urletc”,

                         “format”: “PDF”,

                         “type”: “STANDARD”

                       

                      Rejected

                      “amendmentStatus”: “REJECTED”,

                      “rejectionReasonCode”:

                         “INSUFFICIENT_FUNDS”,

                      “voucherInfo”: []

                      Possible request failure reasons for easy troubleshooting:
                      • Partner does not have permission to amend the booking
                      • Invalid quote reference (not in pattern QR-xxx)
                      • Non-existent quote reference
                      • Booking does not belong to the partner
                      • Booking is in an invalid status
                      • Booking is completed (in the past)
                      • Price changed during the amendment process (this error will be returned whether the price rises or falls)

                      /bookings/status

                      ⊗ Basic-access Affiliates ⊗ Full-access Affiliates ✓ Full + Booking access Affiliates ✓ Merchants

                      Check for updates on the amendment status

                      • This endpoint is used to verify updates for PENDING amendments.
                      • The status of the booking (status) is returned separately from the amendment status (amendmentStatus).
                      • amendmentStatus will always reflect the latest amendment attempt status. For example, if a booking was successfully amended once, but a second amendment request was submitted and then rejected, the response will return “amendmentStatus”: “REJECTED”.
                      • When the amendment is rejected, a relevant rejectionReasonCodes will be returned.
                                         – All possible rejectionReasonCodes values can be found in the API documentation.
                      • The price information returned in the response consists of:
                                         – initialBookingPrice – returns the value paid in the initial booking (before the amendment)
                                         – quotePriceDifference – the price of the amendment: the price of the requested changes vs the price paid in the initial booking.
                                         – amendedBookingPrice shows the final view of the booking, if amendment succeeds – it includes lineItem price and totalPrice.

                      Please note:
                                       – The price quotePriceDifference value may be negative (ie, generate a refund).
                                       – For markup merchants, quotePriceDifference is purely calculated based on partnerNetPrice.
                                       – In case of discounted pricing, price before discount is not returned for amended bookings.
                                       – Booking fee is currently not being charged nor refunded when price changes.
                                       – You can find more details on how pricing should be handled in this guide: Calculating Product Pricing.

                       

                      Please read more about the rules applicable to the usage of this endpoint in our Technical guide.

                      Request example

                        {

                          “bookingRef”: “BR-666666666”,

                        }

                        Response examples

                          Success

                          “status”: “CONFIRMED”,

                          “amendmentStatus”: “AMENDED”

                          “bookingRef”: “BR-791143912”,

                          “partnerBookingRef”: “BR-791143912”,

                          “currency”: “USD”,

                          “lineItems”: [

                                “ageBand”: “ADULT”,

                                “numberOfTravelers”: 2,

                                “subtotalPrice”: {

                                  “price”: {

                                    “recommendedRetailPrice”: 21.4,

                                    “partnerNetPrice”: 20.52

                            “totalPrice”: {

                              “price”: {

                                “recommendedRetailPrice”: 21.4,

                                “partnerNetPrice”: 20.52,

                                “bookingFee”: 1.23,

                                “partnerTotalPrice”: 21.75

                            “cancellationPolicy”: []

                            “voucherInfo”:

                              “url”:    “https://www.viator.com/ticket?code:555ab632fe””,

                              “format”: “HTML”,

                              “type”: “STANDARD”

                           

                          Rejected

                          “status”: “CONFIRMED”,

                          “amendmentStatus”: “REJECTED”

                          “rejectionReasonCode”: “INSUFFICIENT_FUNDS”

                          “bookingRef”: “BR-791143912”,

                          “partnerBookingRef”: “BR-791143912”,

                          “currency”: “USD”,

                          “lineItems”: [

                                “ageBand”: “ADULT”,

                                “numberOfTravelers”: 2,

                                “subtotalPrice”: {

                                  “price”: {

                                    “recommendedRetailPrice”: 21.4,

                                    “partnerNetPrice”: 20.52

                            “totalPrice”: {

                              “price”: {

                                “recommendedRetailPrice”: 21.4,

                                “partnerNetPrice”: 20.52,

                                “bookingFee”: 1.23,

                                “partnerTotalPrice”: 21.75

                            “cancellationPolicy”: []

                            “voucherInfo”:

                              “url”:    “https://www.viator.com/ticket?code:555ab632fe””,

                              “format”: “HTML”,

                              “type”: “STANDARD”

                          Amendment API usage policy

                          • Use /amendments/check before requesting a quote to check if the amendment is allowed.
                          • Use /amendments/quote only for one amendment type at a time.
                          • Confirm quotes before they expire – following timestamps from quoteExpiresAt.
                          • Poll /booking/status to track pending amendments.

                            Benefits of processing amendments via the API

                            1. Automation & efficiency
                              – Eliminates manual intervention and reduces time spent on back-and-forth emails.
                              – Enables real-time handling of amendment requests directly from your system.

                               

                            2. Faster response times
                              – Amendments can be verified, quoted, and confirmed in seconds rather than hours or days.
                              – No delays caused by waiting for response.

                               

                            3. Improved user experience
                              – Provide instant feedback to agents/customers and faster resolution times.
                              – Enables in-platform modification without redirecting users or involving external communication.

                               

                            4. Error reduction
                              – Reduces risk of human error (e.g. incorrect data entry or misunderstanding of the request).
                              – Structured request/response format ensures clarity and data integrity.

                               

                            5. Real-time availability & pricing
                              – Quote reflects live prices and availability – which may change by the time they are communicated manually via a customer service agent over email.

                               

                            6. Scalability
                              – Handles large volumes of amendment requests without increasing operational overhead.
                              – Ideal for high-volume partners managing thousands of bookings.

                               

                            7. Visibility & tracking
                              – Full visibility into amendment status via the API – using real-time data.
                              – Easier to monitor, audit, and report on amendment activity.

                               

                            8. Reduced workload for customer support teams
                              – Fewer inbound emails and manual support interactions required.
                              – Frees up customer service teams to focus on more complex issues.