Why your PMS can't tell you what Expedia kept
· 6 min read
If you run a small hotel and you have ever tried to work out, from your property management system alone, how much Expedia kept on a booking — you did not fail. The number is not there.
The PMS is not hiding it. It never receives it.
Cloudbeds states this plainly in its own Expedia documentation: the system does not receive or calculate Expedia's commission percentage. What arrives depends entirely on which side collected the money.
On a Channel Collect reservation, Expedia charged the guest and sends your PMS the net amount — commission already removed. On a Hotel Collect reservation, you charge the guest and your PMS receives the full sell rate, with the commission to be invoiced to you later.
Same channel. Same-looking booking. Two entirely different numbers, meaning two entirely different things.
How the system tells you which one it is
Not with a field. With a sentence.
"has Expedia compensation withheld" — Expedia already took its cut
"will be invoiced at a later date" — Expedia will bill you for it
These phrases arrive inside the free-text Special Requests field. That is the signal. A guest note about a late arrival and the flag that determines the direction of hundreds of dollars share one text box.
Why this matters more than it sounds
Every reconciliation you attempt downstream depends on getting this right. If you treat a Channel Collect booking as Hotel Collect, you will look for a commission invoice that never arrives and book revenue you already netted. Get it the other way around and you will chase a virtual card payment for a reservation Expedia never intended to pay you for.
There is no arithmetic that recovers from this. It is a classification problem sitting upstream of everything, and it is resolved by string matching on a field that was designed for "please put us on a high floor."
What we do with it
CactusStay matches those phrases deterministically — exact strings, no
inference — and records the raw text alongside the classification so a
mismatch is visible rather than silent. If neither phrase is present, or both
are, the reservation does not get a guess. It gets an UNCLASSIFIED state that
blocks matching and lands in the review queue for a human.
That is deliberately annoying. A reservation stuck in review costs you a minute. A reservation confidently classified backwards costs you the booking.
See this in your own statements
One real month of your own statements, free for every property. You keep whatever it finds.