Skip to main content

Hotel surcharge vocabulary

Search and quote responses expose optional surcharges[] on each option. Each line uses:

  • category: TAX, FEE, DEPOSIT, OTHER, or SURCHARGE_CATEGORY_UNSPECIFIED
  • code: stable snake_case token (preferred for UI labels and analytics)
  • included: true if the amount is already in the displayed total; false if typically due at the property
  • price: amount and currency for that line

Integrations only need to forward the provider's raw label as Surcharge.type (e.g. "City Tax", "Resort Fee") and the boolean included flag. The aggregator derives the canonical code (snake_case) and category from that label so vocabulary knowledge stays in a single place.

Codes by category

categoryExample code values
TAXmandatory_tax, city_tax, tourism_fee, vat, sales_tax
FEEproperty_fee, resort_fee, cleaning_fee, tax_and_service_fee
DEPOSITdeposit (reimbursable deposit semantics depend on provider)
OTHERAny provider-specific fee not in the table above

MandatoryFee.name in static hotel content should reuse the same code values where possible for consistency between content and live shopping.

Display notes

  • Do not parse long Remark text for numeric tax/fee when surcharges[] is present.
  • For legal copy around bundled “taxes and fees”, follow your product’s existing disclaimer pattern for the jurisdiction you sell in.