Taxes & Fees Mismatch Troubleshooting
Hotel fiyatlarında vergi ve ücret kaynaklı farkları base/total price semantiği, currency, occupancy ve market context üzerinden teşhis edin.
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:
base
+ taxes included
+ taxes excluded
+ mandatory fees
+ pay-at-property mandatory charges
= comparable totalSonra 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.
Bu problemi production’da mı yaşıyorsunuz?
Semptomu, veri akışını ve entegrasyon davranışını birlikte teknik olarak inceleyebiliriz.