---
title: "Taxes & Fees Mismatch Troubleshooting"
description: "Hotel fiyatlarında vergi ve ücret kaynaklı farkları base/total price semantiği, currency, occupancy ve market context üzerinden teşhis edin."
slug: "taxes-fees-mismatch-troubleshooting"
translationKey: "troubleshooting-taxes-fees-mismatch"
locale: "tr"
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"
---

Taxes & fees mismatch, aynı rate için base price aynı görünürken toplam ödenecek tutarın provider'lar arasında farklılaşmasıdır. En sık hata, farklı price semantics'lerinin aynı alan gibi normalize edilmesidir.

## Symptom

Listede “€200 total” görünen offer landing'de €228 olur veya iki channel aynı base price'a sahipken total price farklı görünür.

## Possible causes

- tax inclusive ve exclusive alanları karışmıştır,
- mandatory resort/service fee total'e eklenmemiştir,
- city tax check-in sırasında tahsil edildiği için feed dışında kalmıştır,
- occupancy veya child age vergi kuralını değiştirmiştir,
- market/residency VAT davranışı farklıdır,
- currency conversion farklı timestamp/rate ile yapılmıştır,
- per-night component stay total'e yanlış çarpılmıştır.

## Diagnosis

Önce tek bir total karşılaştırmak yerine price'ı component'lere ayırın:

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

Sonra her component için source field ve display rule kaydedin.

## Karar ağacı

**Provider explicit total veriyor mu?** Veriyorsa kendi hesaplamanızla farkı ölçün.

**Mandatory ama pay-at-property charge var mı?** Varsa “today payable” ile “trip total” ayrımını koruyun.

**Tax occupancy/market dependent mı?** Request context'i doğrulayın.

**Currency conversion var mı?** Original currency ve FX timestamp'ini saklayın.

## Kanıt

Incident kaydında raw provider fields, normalized fields ve UI-rendered fields yan yana bulunmalıdır. Sadece screenshot RCA için yeterli değildir.

## Yanıltıcı durumlar

Refundable premium, breakfast add-on, local tax estimate veya card surcharge aynı rate gibi görünse de farklı commercial product yaratabilir.

## Recovery

Canonical price modelinizi en az şu alanlara bölün:

- base amount,
- included taxes,
- excluded mandatory taxes,
- mandatory fees,
- optional fees,
- pay-at-property flag,
- original currency,
- display currency.

## Doğrulama

Provider raw response'tan normalized total'e kadar unit test ekleyin. Edge case'leri 1 adult, family occupancy, long stay ve farklı residency context'leriyle çalıştırın.

## Observability

Tax/fee mismatch rate, unknown-fee rate, pay-at-property disclosure coverage ve total-price delta izlenmelidir.

## Prevention

“Price” adlı tek numeric field kullanmayın. Semantiği explicit olmayan amount üretim sisteminde uzun vadede mismatch yaratır.
