Hospitality · Demand and distribution

Channel cost %

Channel cost percentage is OTA commissions plus payment processing fees divided by gross booking value. It measures what distribution costs.

Plan your metrics

What it is

Every channel takes a cut. OTAs charge commissions or service fees to the host, the guest, or both. Direct bookings carry card processing fees and marketing costs.

Channel cost % = (host-side OTA fees + payment processing fees) ÷ GBV. Guest-paid service fees are not a cost to the host and are usually excluded from both sides.

Why operators track it

  • Margin. One of the largest variable costs in a booking.
  • Channel decisions. Compare channels on cost, ADR, and cancellation together.
  • Owner statements. Owners see these fees and ask about them.
  • Reconciliation. Expected fees vs fees in payouts reveals errors.

How it is calculated

Channel cost % = (OTA host fees + payment processing fees) ÷ gross booking value

  • OTA host fees: from payout or reservation detail.
  • Payment fees: processor fees, mainly on direct bookings.
  • Marketing for direct: optional, shown separately.
  • GBV as defined on the GBV page.

Worked example

Example data The same made-up portfolio is used on every hospitality page: a manager with 120 homes, four of them shown in detail.

In October the four example homes had GBV of $33,600 and channel costs of $3,890. Channel cost = 11.6%. These fee amounts are example values, not quoted channel rates.

Channel cost as % of GBV, by channelOTA A13.0%OTA B14.1%OTA C15.3%Direct3.0%$1,950 of $15,000$1,300 of $9,250$450 of $2,950$190 of $6,400Total: $3,890 ÷ $33,600 = 11.6%. Amounts are example values. Actual fees depend on each channel's fee modeland your terms. Direct carries payment processing here; marketing cost for direct is not included.
Example data Channel cost compares what each channel takes, on the same basis.

How to read it

  • Compare net of cost, not commission alone. A cheaper channel with more cancellations may be worse.
  • Fee models change. Check each channel's current terms.
  • Include direct costs honestly.
  • We do not publish a benchmark. Levels vary by market, season, and property type.

Definitional choices and common pitfalls

  • Host fees only or include guest fees. Usually host-side only.
  • Marketing for direct. Include, or show separately.
  • Basis. GBV or rent. GBV is common.
  • Refunds. Fees refunded on cancellation reduce cost.

How different roles use it

Role How they use it
Revenue manager Weighs channel cost against ADR and volume.
Finance / trust accounting Reconciles fees to payouts.
Owner relations Explains channel fees on statements.
Product / engineering lead Captures fee lines per reservation.

Questions it answers

  • What are we paying to each channel?
  • Is direct actually cheaper once marketing is counted?
  • Did fees in payouts match expected fees?

How to present it in a report

  • Cost % by channel next to ADR and cancellations.
  • Total channel cost by month.
  • Reconciliation of expected vs actual fees.
Customer report mockupExample data
Channel costOctober 2026
Channel cost11.6%$3,890 of $33,600
Highest in this exampleOTA C15.3%
Direct3.0%processing only
ChannelGBVHost feesPayment feesCost %
OTA A$15,000$1,950$013.0%
OTA B$9,250$1,300$014.1%
OTA C$2,950$450$015.3%
Direct$6,400$0$1903.0%

Example amounts. Not quoted channel rates.

Data you need

Fields

Field What it means Example value
Host fee Per reservation from the channel $120
Payment fee Per transaction $30
GBV Per reservation $1,850
Payout Net received $1,730

What the raw data looks like

Example data A few rows as they might come out of the source system.

Reservation Channel GBV Host fee Payment fee Payout
R-88412 OTA A $1,850 $120 $0 $1,730
R-88544 OTA C $2,650 $190 $0 $2,460
R-88590 Direct $1,850 $0 $30 $1,820

Where this data usually lives

  • OTAs and booking channels (Airbnb, Vrbo, Booking.com, and partner distribution sites) hold payout reports, host fees, reviews, and cancellations. Payouts are usually net of host fees.
  • Bank feeds and payment processors hold deposits, refunds, and chargebacks used to match payouts.
  • Property management system (PMS) holds units, the calendar with block types, reservations, rates, fees, and often owner statements and trust accounting. For example: Guesty, Hostaway, OwnerRez, Track, Streamline, and Escapia. Some larger managers run their own in-house PMS.
  • Accounting software holds the general ledger, AP, and bank reconciliation.

The same field can live in more than one system. Agree with the customer which one is the source of truth.

Common data gaps and traps

  • Fees only in payout files, not on reservations.
  • Batch payouts with fees netted.
  • Processor fees in a separate system.

FAQ

What commission do OTAs charge?
It depends on the channel, the fee model the host chose, and the contract. Check each channel's current terms. We do not quote rates here.
Are guest service fees a channel cost?
Not to the host. Exclude them from both sides.
Is direct booking free?
No. It has payment processing and marketing costs.
For your data teamFormula variants, tables, SQL sketch, and dashboard spec

Formula details

channel_cost_pct = (SUM(host_fees) + SUM(payment_fees)) / gbv

Worked example detail

Channel GBV Channel cost %
OTA A $15,000 $1,950 13.0%
OTA B $9,250 $1,300 14.1%
OTA C $2,950 $450 15.3%
Direct $6,400 $190 3.0%
Total $33,600 $3,890 11.6%

Tables and fields

Table Fields Notes
reservation_lines reservation_id, line_type, amount line_type includes host_fee, payment_fee
payouts payout_ref, channel, gross, fees, net, paid_at

SQL sketch

SELECT r.channel,
       SUM(l.amount) FILTER (WHERE l.line_type IN ('host_fee','payment_fee'))
       / NULLIF(SUM(l.amount) FILTER (WHERE l.line_type NOT IN ('tax','deposit','host_fee','payment_fee')),0) AS channel_cost_pct
FROM reservations r JOIN reservation_lines l USING (reservation_id)
WHERE r.status='confirmed' GROUP BY r.channel;

Build spec

Copy this into a ticket. It lists the grain, inputs, logic, and edge cases.

metric: hospitality.channel_cost
grain: one row per reservation
inputs:
  - host fees
  - payment fees
  - GBV lines
logic:
  - cost = host + payment fees
  - pct = cost / gbv
edge_cases:
  - refunded fees: net them
  - batch payout: allocate by reservation GBV
  - gbv 0: null

As a dashboard card

  • Bar of cost % by channel with GBV as a label.

Common mistakes

  • Quoting a channel's list rate instead of actual fees.
  • Ignoring direct costs.
  • Including guest-paid fees.

Version 1.0 · Last reviewed 2026-10-20 · Machine-readable definition