---
title: "Taxes & Fees Mismatch Troubleshooting"
description: "Diagnose hotel tax and fee differences through explicit base/total semantics, currency handling, occupancy and market context."
slug: "taxes-fees-mismatch-troubleshooting"
translationKey: "troubleshooting-taxes-fees-mismatch"
locale: "en"
type: "troubleshooting"
category: "troubleshooting"
tags: ["hotel","taxes","fees","price-accuracy","normalization"]
publishedAt: "2026-09-26"
updatedAt: "2026-09-27"
reviewedAt: "2026-09-27"
technicalVerifiedAt: "2026-09-27"
codeExampleStatus: "illustrative"
---

A taxes-and-fees mismatch appears when the same rate has a similar base amount but a different final payable total across providers. The common root cause is treating different price semantics as if they were one interchangeable field.

## Symptom

An offer displayed as “€200 total” becomes €228 on landing, or two channels share the same base rate but expose different totals.

## Possible causes

Tax-inclusive and tax-exclusive fields may be mixed, mandatory resort/service fees may be omitted, local taxes may be payable at property, occupancy or residency may change taxation, FX conversion can differ, or per-night components can be multiplied incorrectly.

## Diagnosis

Decompose the amount instead of comparing one total:

```text
base
+ included taxes
+ excluded mandatory taxes
+ mandatory fees
+ mandatory pay-at-property charges
= comparable total
```

Record the provider source field and display rule for every component.

## Diagnostic decision tree

If the provider supplies an explicit total, compare it with your derived total.

If a mandatory pay-at-property charge exists, separate “pay now” from “trip total”.

If taxation depends on occupancy or market, confirm request context.

If currency conversion is involved, preserve original currency and FX timestamp.

## Evidence to collect

Store raw provider fields, normalized fields and UI-rendered fields side by side. A screenshot alone is not sufficient for root-cause analysis.

## False positives

Refundability premiums, meal inclusions, local-tax estimates or payment surcharges can create different commercial products even when the room looks identical.

## Recovery

Use a canonical price model with base amount, included taxes, excluded mandatory taxes, mandatory fees, optional fees, pay-at-property flags, original currency and display currency.

## Validation

Add unit tests from raw provider response to normalized total. Include single-adult, family, long-stay and different residency contexts.

## Observability

Monitor tax/fee mismatch rate, unknown-fee rate, pay-at-property disclosure coverage and total-price delta.

## Prevention

Avoid a single ambiguous numeric field called “price”. Amounts without explicit semantics eventually create comparison errors.
