---
title: "Price a hotel checkout before payment"
method: POST
path: "/v1/payments/hotel-checkout-quote"
tags: ["payments"]
---

# Price a hotel checkout before payment

`POST /v1/payments/hotel-checkout-quote`

## Request

- Base URL: `https://api.getmyhotels.com`
- URL: `https://api.getmyhotels.com/v1/payments/hotel-checkout-quote`
- Auth: none declared

Runs `payment.getHotelCheckoutQuote`. Public by design — it is the price-on-load half of the guest-capable payment-first checkout (critical decision #4), and it is the same call the web checkout makes when its form mounts. Pure read: no PaymentIntent, no payment row, no booking. Call it as the checkout screen loads so the real supplier tax/fee split, add-ons, promo outcome and `rateValidUntil` are on screen BEFORE the customer commits to paying, then send the same pricing fields to `POST /v1/payments/hotel-checkout-intent`. POST rather than GET because the input carries a supplier room id up to 8 KB. Signed-in callers also get their saved cards; staff accounts get `simulated: true`.

## Request body

- object
  - `offerRef` string
  - `supplierCode` string
  - `supplierHotelId` string
  - `supplierRoomId` string
  - `checkIn` string, date, required
  - `checkOut` string, date, required
  - `rooms` integer
  - `adults` integer
  - `children` integer
  - `childrenAges` integer[]
  - `totalPrice` number, required
  - `currency` string, required
  - `promoCode` string
  - `addonIds` string[]

## Response `200`

Success

- unknown

## Other responses

- `400`: Request validation failed or the router rejected the input
- `426`: Reported X-GMH-App-Version is below the supported minimum — the app must update
- `500`: Unexpected server error (opaque; details stay in logs)

---

[API](https://skmtc.dev/getmyhotels/apis/getmyhotels-rest-api.md) · [All operations](https://skmtc.dev/getmyhotels/apis/getmyhotels-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getmyhotels/apis/getmyhotels-rest-api/revisions/cba24a9c13f0?raw)
