How it works
Money arithmetic is deterministic and done in code. Models are allowed to read documents and propose labels; they are never allowed to compute an amount, apply a match, or send anything on your behalf.
The pipeline
- 01
Ingest
Every file you upload is checked for full card numbers, then hashed, versioned and keyed so the same statement can never be counted twice. Nothing is overwritten.
- 02
Normalise
Each format maps to one canonical shape through a declarative mapping, so adding a new export format is a configuration change with a test fixture, not a code change.
- 03
Classify
Expedia signals settlement direction only through fixed phrases in a free-text field. We match those exactly. An unrecognised string stops the reservation rather than guessing at it.
- 04
Match
Exact reservation keys first, then composite keys, then a constrained search over a bounded candidate set. Every match records its method and stays reversible.
- 05
Open exceptions
Residuals become work items with a cause proposed from a documented list — never an invented one — and the governing deadline attached at the moment the exception opens.
- 06
Decide
You dispute, explain, post or write off. Nothing consequential leaves the system without a named human approving it.
- 07
Evidence and outcome
A hashed bundle of the exact records behind the dispute, and a ledger that reports one-time backlog recovery separately from recurring monthly value.
What we look for
Every class below comes from vendor-documented behaviour. The vendors’ own list of mismatch causes is explicitly incomplete, which is why the last row exists: an honest “these disagree by $18.40 and no known cause fits” is worth more to you than a confident wrong answer.
Five of these are documented vendor behaviour that CactusStay does not yet detect. They are marked as such below: listed so you know they exist, not because a run checks for them today.
| Class | Trigger | Clock |
|---|---|---|
HC_DEADLINE_RISKPreventive | Cancelled or no-show Hotel Collect stay, unreconciled, checkout month closing | 4th of next month |
VCC_UNCHARGEDPreventive | Expedia Collect stay departed with no settlement record carrying its virtual card | 12 months |
VCC_AMOUNT_VARIANCE | Amount charged differs from expected net; cause resolved against the documented taxonomy | 12 months |
COMMISSION_ON_UNCOLLECTEDDocumented, not yet detected | Commission assessed on an overbooking where the property collected nothing | Invoice dispute window |
COMMISSION_BASE_MISMATCH | Commission base differs from the cancellation or no-show fee actually charged | Invoice dispute window |
COMMISSION_ON_WAIVED | Commission charged despite a waived fee, a correctly-marked uncharged no-show, or a reported invalid card | Invoice dispute window |
TAX_TREATMENT_MISMATCHDocumented, not yet detected | Tax-inclusive/exclusive divergence, taxes on commission, or compensation on taxes | — |
FEE_CONFIG_GAPDocumented, not yet detected | Expedia service, occupancy or environmental fees absent from the PMS rate configuration | — |
OCCUPANCY_RULE_MISMATCHDocumented, not yet detected | Differing extra-person rules between channel and PMS | — |
RATE_PLAN_MISMAPDocumented, not yet detected | Promotions, member deals or rate-plan mapping errors | — |
FX_ROUNDING | Residual variance attributable to conversion and rounding | — |
SETTLED_NOT_FUNDEDPreventive | Batch closed successfully with no corresponding bank deposit | Next business day |
DEPOSIT_UNALLOCATED | Bank deposit that no settlement batch explains | Next business day |
UNEXPLAINED_VARIANCE | Records disagree and no documented cause fits. Reported as such, never guessed. | — |
Getting your data in
CSV, Excel or PDF files that you export yourself, one month at a time. Nothing connects to your systems. All four are needed for all five answers. You can choose to run without one; the result then says which checks it could not make, rather than reporting them as clean.
| Source | From | What |
|---|---|---|
| Your PMS | Your property management system's reservation report, whichever system it is. | Every stay checking out in the month, cancellations and no-shows included, as CSV or Excel. |
| Expedia | Expedia Partner Central, the hotel-side extranet. | An export of the same stays. The exact report is still being confirmed with pilot properties; it needs the Special Requests text, so if yours has no such column, tell us. |
| Booking.com | The Booking.com extranet. | The reservation statement for the month, and its commission invoice (PDF is fine). |
| Payment gateway | Your card processor's or gateway's reporting. | Settled batches, from three days before the month to the 7th of the next. |
| Bank | The account your card processor pays into. | Credits only, from the 1st of the month to the 7th of the next, as CSV or Excel. |
Try it on one real month
One past month, free, for every property in your organisation. Send four exports and see every discrepancy with the records behind it. You keep whatever it finds, whether or not you ever buy anything.
Where this comes from
Everything above is drawn from published vendor documentation, accessed September 9, 2026. One entry is marked indirect: that domain blocks automated retrieval, and the wording was confirmed through search-index snippets and corroboration rather than read on the page itself.
- 01
Booking.com — commission on cancellations, no-shows and overbookingsIndirect
Commission accrues on non-refundable bookings whether or not the guest stayed, on overbookings where the property collects nothing, and on cancellation and no-show fees actually charged — but not where the fee is waived, the no-show correctly marked without charge, or the card reported invalid.
https://partner.booking.com/en-us/help/reservations/reduce-cancellations/handling-cancellation-fees-and-commission - 02
Expedia — two settlement pipelines
Expedia Collect settles toward the property by single-use virtual card or an alternate electronic-invoicing route paid within 30 days. Hotel Collect invoices the property for gross commission, payable on receipt.
https://myfrontdesk.cloudbeds.com/hc/en-us/articles/360047222133-Expedia-FAQ - 03
Commission is not derivable from PMS data
Cloudbeds does not receive or calculate Expedia's commission percentage. Settlement direction is signalled only by fixed sentinel phrases in the free-text Special Requests field.
https://myfrontdesk.cloudbeds.com/hc/en-us/articles/360047222133-Expedia-FAQ - 04
Mismatch cause taxonomy (explicitly non-exhaustive)
Commission plus taxes on commission plus compensation on taxes; tax inclusive/exclusive mismatch; Expedia service, occupancy and environmental fees missing from PMS configuration; extra-person rules; promotions and member deals; rate-plan mismapping; conversion and rounding. Documented remediation is manual.
https://myfrontdesk.cloudbeds.com/hc/en-us/articles/360047222133-Expedia-FAQ - 05
The two clocks
Hotel Collect: reconcile from the day after check-in until the 4th day of the month after checkout, or the invoice includes the booked amount. Expedia Collect: 12 months to charge the single-use card, after which neither Expedia nor the relevant guest will have any further obligation.
https://developers.expediagroup.com/supply/lodging/ - 06
Booking.com connectivity is triple-gated
Programme admission is not self-serve and imposes channel-manager-grade obligations; core APIs require Booking.com-run certification; the Payments API is restricted to Payments-by-Booking properties already running the Reservations API and does not support Pay at Property reservations.
https://developers.booking.com/connectivity/docs/payments-api/understanding-the-payments-api - 07
Mews Connector API is open and self-service
Completely open and self-service, free of charge for integration partners and Mews customers alike to access, build against, and use, with demo credentials published in the documentation. First human gate is certification.
https://docs.mews.com/connector-api/guidelines/environments - 08
Cloudbeds separates build access from distribution access
Sandbox requests are subject to internal review and approval by the Cloudbeds team, and a Partner dev test account does not guarantee access to Cloudbeds Marketplace — it requires Partnerships team approval.
https://developers.cloudbeds.com/docs/getting-started-as-a-partner-in-5-steps - 09
Expedia Rapid is the wrong door
Rapid is a demand-side distribution API for sellers of travel. Its lodging navigation contains no reporting, reconciliation, settlement, payout, commission or virtual-card surface; hotel-side invoicing is routed to the Partner Central extranet.
https://developers.expediagroup.com/rapid/setup - 10
Settlement is not funding
A successful batch-close response does not indicate that transactions were funded properly or completely. The only way to confirm settlement funding is through bank deposit information.
https://developer.elavon.com/products/fusebox/v1/settlement-transactions