Distribution Foundations
Lesson 4 / 9Cost per booking, properly calculated

Commission, marketing fee, payment cost

Cost per booking is not commission. Cost per booking is commission + marketing + payment + chargeback risk + cancellation drag, divided by the bookings that actually stayed. Getting this number wrong is how a 15% OTA commission turns into 22% real cost without anyone noticing.

Commission

Base commission is what the contract says — typically 15% for Booking.com base tier, 18-20% for Expedia, 12-15% for Agoda. Add 2-5% for visibility programs (Genius, Preferred, Boost on Booking.com; Accelerator on Expedia). Apply the blended rate per channel, not the headline rate.

Marketing fee

Most properties forget this layer. The OTA "sponsored placement," "preferred partner badges," and "destination featured property" pricing are line items the e-commerce manager often signs up for without telling the revenue manager. They can add €0.50-€2.00 per booked roomnight depending on participation.

Payment processing

When you collect payment directly, the merchant processing fee (1.4-2.9% depending on card type and provider) lands on your P&L. When the OTA collects, you receive the booking net of THEIR payment processing — but you don't see that 1.5-2.5% line because it never crosses your account. Both should count toward your real distribution cost.

Cancellation drag

A €200 booking that cancels costs you nothing in commission (Booking.com refunds the commission). But it costs you the opportunity to have rebooked that night at the same rate. A 20% cancellation channel where lead times are short means 1 in 5 bookings clear inventory and then walk away — your effective conversion is 80% of the apparent volume, so your real commission burden per stayed roomnight is 1/0.8 = 1.25× the headline rate.

A worked example

Property at €150 ADR. Booking.com Preferred Partner. Headline commission 17%. Marketing add: €1.20 per booked night. Payment processing embedded: 2%. Cancellation rate: 22%.

[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop

The headline said 17%. The real number is 20.0%. The conversation with the GM about "should we push direct" has to use the real number, not the headline.

Finished this lesson?
Mark complete and move to the next lesson.
Commission, marketing fee, payment cost · Distribution Foundations · OtelCiro Academy