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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 06

    Decide

    You dispute, explain, post or write off. Nothing consequential leaves the system without a named human approving it.

  7. 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.

ClassTriggerClock
HC_DEADLINE_RISKPreventiveCancelled or no-show Hotel Collect stay, unreconciled, checkout month closing4th of next month
VCC_UNCHARGEDPreventiveExpedia Collect stay departed with no settlement record carrying its virtual card12 months
VCC_AMOUNT_VARIANCEAmount charged differs from expected net; cause resolved against the documented taxonomy12 months
COMMISSION_ON_UNCOLLECTEDDocumented, not yet detectedCommission assessed on an overbooking where the property collected nothingInvoice dispute window
COMMISSION_BASE_MISMATCHCommission base differs from the cancellation or no-show fee actually chargedInvoice dispute window
COMMISSION_ON_WAIVEDCommission charged despite a waived fee, a correctly-marked uncharged no-show, or a reported invalid cardInvoice dispute window
TAX_TREATMENT_MISMATCHDocumented, not yet detectedTax-inclusive/exclusive divergence, taxes on commission, or compensation on taxes—
FEE_CONFIG_GAPDocumented, not yet detectedExpedia service, occupancy or environmental fees absent from the PMS rate configuration—
OCCUPANCY_RULE_MISMATCHDocumented, not yet detectedDiffering extra-person rules between channel and PMS—
RATE_PLAN_MISMAPDocumented, not yet detectedPromotions, member deals or rate-plan mapping errors—
FX_ROUNDINGResidual variance attributable to conversion and rounding—
SETTLED_NOT_FUNDEDPreventiveBatch closed successfully with no corresponding bank depositNext business day
DEPOSIT_UNALLOCATEDBank deposit that no settlement batch explainsNext business day
UNEXPLAINED_VARIANCERecords 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.

SourceFromWhat
Your PMSYour 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.
ExpediaExpedia 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.comThe Booking.com extranet.The reservation statement for the month, and its commission invoice (PDF is fine).
Payment gatewayYour card processor's or gateway's reporting.Settled batches, from three days before the month to the 7th of the next.
BankThe 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.

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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/
  6. 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
  7. 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
  8. 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
  9. 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. 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