UCP Checker
Draft capability merged · not yet released

UCP for Lodging

UCP has a draft spec for booking hotel stays. dev.ucp.lodging.booking was merged on 24 September 2026. It isn't in a release yet, and its names may still change.

It covers the last step: turning a rate an agent has found into a confirmed reservation, with the hotel's own price, guest details and payment. Finding the room, and changing a booking afterwards, come later.

It was written by the Lodging Technical Council: Amadeus, Booking.com, Expedia, Google, Hilton, Marriott and Trip.com.

Checked against Lodging Booking (draft) at c9a1395·25 Sep 2026
  1. 24 Jun 2026
    Charter proposed
  2. 11 Aug 2026
    Council seated
  3. 28 Aug 2026
    Booking capability filed
  4. 24 Sep 2026
    Merged as a draft

01How a booking works

A booking is a session that moves through six statuses. The platform makes the calls; the business sets the status and says what it needs next. Press play, or step through.

dev.ucp.lodging.booking · status

One session, step by step

Step 1 of 5
POST /booking-sessions
{
  "status": "incomplete",
  "stays": [{ "accommodation_type": { "id": "…" },
             "rate_plan": { "id": "…" } }],
  "totals": [{ "type": "total", "amount": 77600 }],
  "expires_at": "2026-09-25T18:30:00Z"
}

The platform opens a session. It sends the stay it found in search. The business answers with its own price and availability, and from here on the session is authoritative. expires_at says how long that price and any inventory hold last.

Source: UCP spec, Lodging Booking → Booking Status Lifecycle, at c9a1395. Statuses and rules are the spec's; the example session is simplified.

02What a booking is made of

Select a part to see whether the spec requires it, who sets it, and what it means.

booking session › stays[]
Set by: Platform picks, business confirmsRequired

One entry per unit booked. Each binds an accommodation type, a rate plan, stay dates and occupancy: four things that must agree.

Required per stay: id, stay_dates, accommodation_type, rate_plan, totals. The ids come from upstream search and are opaque.

Source: UCP spec, schemas lodging/booking.json and lodging/types/*.json, at c9a1395. "Required" is the schema's required list.

03Where the money goes, and when

The same total, drawn twice: what the stay costs (totals) and when it's paid (payment terms). The two bars are the same length because the spec says they must add up. Both examples are the spec's own.

Totals vs payment terms

3 nights in Tokyo, taxes and fees paid at the hotel

totals[] · what the stay coststotal ¥77,600
¥64,000
payment.terms[].schedules[] · when it's paidsum ¥77,600
¥70,400
Room rate, 3 nights (incl. 10% consumption tax)¥64,000Service fee, prepaid¥6,400Resort fee, paid at hotel¥6,000Tokyo accommodation tax, paid at hotel¥1,200Due today (immediate)¥70,400Due at check-in (at_property)¥7,200
sum of totals (excl. total) = ¥77,600
total = ¥77,600
sum of schedules in term = ¥77,600
✓ both add up, as the spec requires

The fees paid at the hotel are still in the total: the price is all-in, only the timing differs. The spec also requires a disclosure warning pointing at the at-property schedule, so the guest isn't surprised at check-in.

Source: UCP spec, Lodging Booking → Pricing Examples, at c9a1395. The spec gives amounts in minor units.

04What the draft covers

Specified, partly specified, or left for later.

AreaStatusWhat it says
Price and availability checkspecifiedOpening a session switches from search results to the business's own price and availability. It can't complete at a changed price without first returning new totals.
All-in pricespecifiedThe total is the whole stay, taxes and fees included, and the guest must see it before confirming.
Pay now or at the propertyspecifiedDeposits, balances and property-collected charges are payment schedules that add up to the total.
Holding a quoted pricepartlyexpires_at holds price and inventory inside a session. How long a rate from search stays valid is out of scope.
Cancellation termspartlyRefundable, partly or not, as structured data. Cutoffs and penalties are still text; an open proposal (#861) would structure them.
Changes after bookingnot yetModifications, cancellations and check-in are left to future post-purchase order extensions.
Finding the roomnot yetSearch and discovery come in a later phase of the charter.

05What to do now

The draft may change, but three of its rules are safe to build against today.

01

Make deposits add up

Model deposits and balances as payment-terms schedules against one total, not as extra totals. It's the rule in the draft that is easiest to get right now.

Read what changed →
02

Hold your quoted price

Return updated totals before completing at any price other than the one quoted, and set expires_at to the time your hold really lasts.

Validate your endpoint →
03

Test how agents handle expiry

Our data shows agents book expired offers and miss price changes; run a frontier model through your flow.

Read the data →

06What we'll measure

No business publishes dev.ucp.lodging.booking yet. When the first one does, we'll validate it against the spec and check the rules above that can be tested from outside: totals that add up, payment schedules that match the total, and cancellation terms that agree with their description.

07Lodging Technical Council (seated 11 Aug 2026)

AmadeusBooking.comExpediaGoogleHiltonMarriottTrip.com

08Terms

The words this page uses, as the spec uses them.

Booking session
An in-flight booking with a status, from the first request until it is completed or canceled.
Stay
One booked unit: an accommodation type, rate plan, dates and occupancy together.
Rate plan
The commercial terms for a unit, such as flexible or non-refundable.
Booker
The person or company that makes and pays for the booking.
Guest
A person who will stay, identified by a session-only id.
Payment schedule
When part of the total is paid: now, later, or at the property.

09FAQ

Is there a UCP for Lodging spec yet?

A draft one. On 24 September 2026 the Lodging Technical Council's PR #780 was merged, putting dev.ucp.lodging.booking and a cancellation-policy extension into the UCP spec repository, with schemas and REST and MCP bindings. It is marked draft and may change, and it is not in a release yet: v2026-08-25 still ships only dev.ucp.shopping.* and dev.ucp.common.*. Shopping Tech Council minutes target the next release for early December 2026 or January 2027, without saying whether lodging will be in it.

Who sits on the Lodging Technical Council?

The inaugural members announced on 11 August 2026 are Amadeus, Booking.com, Expedia, Google, Hilton, Marriott and Trip.com. The council developed the booking capability, and its 25 September announcement also credits open-source contributors.

What does the draft cover?

The booking core. A platform opens a booking session from a property, stay, rate plan and dates found upstream, adds guest and payment details over one or more updates, and completes it to create a confirmed reservation. The business stays merchant of record, and unless the AP2 mandates extension is used, the user finalises the booking in a trusted UI.

What namespace does UCP for Lodging use?

dev.ucp.lodging. The draft defines dev.ucp.lodging.booking and dev.ucp.lodging.policy.cancellation, with operations named create, get, update, complete and cancel_booking_session. Two things may still change: issue #858 is weighing an explicit accommodation type, and whether to keep the _session suffix or match shopping's shorter verb-noun names. Our checker validates any declared namespace against the spec's authority-binding rule regardless of who defines it.

What changed between the filed PR and the merged draft?

Hotel-only room vocabulary became generic stays (property, stays, accommodation_type, stay_dates). Totals were reworked so they describe what a stay costs, with payment-terms schedules for when it is paid, which must add up to the total. Guest roles became primary and accompanying, guest identifiers stayed platform-minted and free of personal data, and expires_at now covers quoted pricing and temporary inventory holds.

What is still out of scope?

Discovery and search, how long a rate seen in search stays valid before a session exists, and managing a reservation after booking (modifications, cancellations and check-in), which the PR leaves to future post-purchase order extensions. Structured cancellation schedules are a separate open proposal (#861, re-filed from #808).

What should hotels and booking engines do now?

Prototype against a pinned commit of the draft and expect naming changes. Model deposits and balances as schedules that add up to one total, hold your quoted price for as long as expires_at says, and test how AI agents handle an offer that expires mid-session.

10Keep reading

Other UCP verticals

Explore protocol data

Is your booking engine agent-ready?

Whichever vertical you're in, the prerequisite is the same: a valid, machine-readable UCP endpoint an agent can actually transact against.

Weekly UCP Report

Get the agentic commerce digest every Monday

Real adoption data, ecosystem trends, new spec versions, and the stores that broke or recovered this week. Read by founders and engineers building the next generation of commerce.

Free forever No spam Unsubscribe anytime

View a sample report →

Weekly UCP Report
Issue #53 · Oct 5, 2026
+664
new verified stores
Verified rate
Latest spec
Cart capability