Skip to main content
Room charge lets a guest pay for an experience by adding it to their hotel bill: instead of entering a card, they enter their reservation or room number at checkout, and Way posts the charge to their folio in the hotel’s Property Management System (PMS). This guide covers only what changes relative to the card flow. Follow Build a Booking Integration through cart assembly (steps 1-5), then come back here - room charge replaces the payment-intent and Stripe steps with one validation call, and the booking confirms synchronously.

Supported PMS integrations

The flow is identical for all four - only the integrationType in the validate URL and the pmsType in the booking payload change. Prerequisite: the brand’s PMS connection is configured in the Way dashboard under Settings → Integrations (your Way representative helps set this up). You can check what a brand has connected with Get integrations.
1

Validate the guest's reservation

Before booking, verify the reservation exists and is chargeable with Validate room charge. It takes the guest’s last name plus the identifier they entered at checkout:
All four PMS integrations accept a confirmation/reservation number or a room number as reservationNumber (always paired with the last name), so a simple “room number + last name” checkout form works everywhere.
This call matters for two reasons: it confirms the reservation is in a chargeable status, and it returns the reservationId the booking call needs. If the reservation can’t be found or isn’t chargeable, the response has no data - don’t proceed to booking; ask the guest to re-check their details or pay by card.
The session being booked must fall between the reservation’s arrivalDate and departureDate - Way can’t post charges to a folio for dates the guest isn’t staying.
2

Create the booking with paymentMethod room-charge

Make the same Create a booking call as the card flow, but with paymentMethod: "room-charge" and a paymentDetail object carrying the validation results. Skip the payment intent entirely - there is no Stripe involvement.
The paymentDetail fields:Because no card confirmation is pending, the booking is confirmed synchronously in the book-bulk response - no processing state, no webhook wait, and the guest gets their confirmation email immediately. Way posts the charge to the folio and records a note on the reservation with the Way confirmation code.
3

Verify and handle failures

Verify exactly as in the card flow: Get bookings filtered by cartConfirmationCode or cartId. Room-charge bookings carry paymentMethod: "room-charge" and the folio reference in their payment details.If book-bulk fails (folio rejected, reservation status changed between validate and book), rotate to a fresh cartId before retrying - same rule as the card flow. Refunds for cancelled room-charge bookings post back to the folio as negative charges.

PMS-specific notes

Validate resolves the reservation by confirmation number, reservation code, external reference, or room number + last name (leading zeros tolerated). Way posts a fixed charge to the reservation - or a live billing charge when today is the departure date - and adds a reservation note with the booking details. Reservations designated as paying by credit card skip charge posting (the note is still added).
Validate resolves by reservation/confirmation number + last name (cancelled reservations excluded) or room number + last name, and additionally returns arrivalTime and departureTime. Checked-out, no-show, and cancelled reservations are not chargeable.
Validate runs a folio inquiry by last name + room number, confirmation number, or last name + CRS confirmation number. Charges post as an add-on item to the reservation (or directly to the folio on departure day). Checked-out, no-show, and cancelled folios are not chargeable.
Validate resolves by reservation number + last name or room number + last name; if the guest enters a UUID, it’s treated as the Mews reservation ID directly. Way adds an accounting item linked to the reservation, priced net or gross per the brand’s configuration.