Taxes & Fees: Metasearch Fiyat Karşılaştırmasında Nasıl Ele Alınmalı?
Base rate, mandatory tax, resort fee, pay-at-property ve optional fee farklarını travel metasearch fiyat normalizasyonu açısından öğrenin.
Travel metasearch'te iki fiyatın gerçekten karşılaştırılabilir olması için vergi ve ücretlerin aynı kapsamda olması gerekir.
Base rate ile total payable amount'u yan yana koymak yanıltıcıdır.
Fiyat bileşenleri
Bir travel offer şu katmanları içerebilir:
- base price,
- government tax,
- city/tourism tax,
- service fee,
- resort/destination fee,
- payment fee,
- optional add-on,
- pay-at-property amount.
Her provider aynı component'leri aynı field'da göstermeyebilir.
Mandatory vs optional
En önemli ayrımlardan biri budur. Rezervasyon için kaçınılmaz maliyet mandatory'dir. Kullanıcı seçimine bağlı baggage upgrade, insurance veya ekstra hizmet optional olabilir. Metasearch total price sıralaması yapıyorsa mandatory ücretleri olabildiğince dahil etmelidir.
Pay at property
Bazı ücretler booking sırasında değil tesiste ödenir.
Bu miktarı "ücretsiz" gibi yok saymak price mismatch algısı yaratabilir.
UI ödeme zamanını ayrı gösterebilir:
- pay now,
- pay later,
- pay at property.
Currency
Vergi/fee farklı currency'de gelebilir.
Conversion rate timestamp'i ve rounding rule audit edilebilir olmalıdır.
Normalizasyon modeli
Useful internal model:
- base_amount,
- mandatory_tax,
- mandatory_fee,
- optional_fee,
- pay_later_amount,
- total_comparable_amount,
- currency.
Bu model provider-specific payload'ı tek comparison layer'a dönüştürür.
Quality checks
- negative amount,
- duplicated tax,
- missing currency,
- total != component sum,
- mandatory fee excluded,
- stale FX rate
gibi kurallar otomatik validation'a uygundur.
Sonuç
Price accuracy çoğu zaman fiyat motorundan değil fee semantics farkından bozulur.
Taxes & fees normalizasyonu, adil metasearch comparison'ın temel veri problemidir.
Comparable total nasıl hesaplanır?
Her channel kendi fee taxonomy'sini kullanabilir. Bu nedenle provider payload'ındaki total alanını doğrudan canonical total kabul etmek risklidir. Normalization pipeline önce component'leri business meaning'e göre sınıflandırmalıdır:
- mandatory at booking,
- mandatory later/pay-at-property,
- conditional mandatory,
- optional,
- refundable deposit/hold.
Sonra comparison için hangi component'lerin dahil edildiği explicit rule ile hesaplanmalıdır.
Occupancy ve stay-length etkisi
Tax/fee her zaman flat değildir.
Örnek:
- kişi başı city tax,
- gece başı resort fee,
- booking başı service fee,
- rental-day bazlı surcharge.
Bu nedenle fee normalizasyonu exact occupancy ve stay duration olmadan doğru yapılamaz.
“Pay later” ucuzluk değildir
UI'da booking sırasında alınmayan mandatory tutarı toplamdan düşürmek provider'ı yapay olarak ucuz gösterir.
Daha doğru presentation:
- total comparable,
- pay now,
- pay later/on arrival
şeklinde ayrıştırmadır.
Supplier contract testi
Her supplier/channel için contract test dataset'i oluşturmak gerekir.
Test case'ler:
- tax inclusive,
- tax exclusive,
- mixed currency,
- child occupancy,
- city tax exemption,
- mandatory resort fee,
- deposit/pre-authorization.
Payload değişikliği sessizce price accuracy'yi bozmasın diye bu testler CI/data-quality pipeline'ına bağlanabilir.
KPI ve alarm
Takip edilecek metrikler:
- component-sum mismatch,
- mandatory-fee missing rate,
- currency mismatch,
- tax parse error,
- price mismatch after click,
- provider-specific fee anomaly.
MetaSearch 101 yorumu
Travel price comparison'da en zor problem çoğu zaman “fiyatı bulmak” değil, aynı ekonomik anlamdaki tutarları karşılaştırmaktır. Taxes & fees modeli bu yüzden pricing domain'inin merkezinde yer alır.
Price component contract oluşturun
"Tax included" boolean çoğu global travel ürünü için yetersizdir.
Örnek model:
base_amount
taxes[]
mandatory_fees[]
optional_fees[]
property_payable[]
included_total
pay_now_total
pay_later_total
currencyHer component type, amount ve payment timing taşımalıdır.
Display ve reconciliation aynı modelden beslenmeli
UI "total price" gösterirken booking reconciliation başka formula kullanıyorsa mismatch kaçınılmazdır. Tek normalized component modelinden:
- display total,
- ranking total,
- price-accuracy comparison,
- booking reconciliation
üretilmelidir.
Failure mode'lar
- resort fee landing'de sonradan eklenir,
- city tax occupancy/stay'e göre yanlış hesaplanır,
- optional fee mandatory gibi gösterilir,
- pay-at-property amount booking total'ına iki kez eklenir,
- FX farklı timestamp ile convert edilir,
- child tax rule uygulanmaz.
KPI'lar
- tax mismatch,
- mandatory-fee mismatch,
- total-price mismatch,
- provider/market component coverage,
- pay-at-property disclosure coverage,
- fee-related support complaint.
Taxes/fees normalization bir UI formatting işi değil; comparable total price'ın temel contract'ıdır.
Benzer bir entegrasyon mu planlıyorsunuz?
Gereksinim, feed/API tasarımı ve production yaklaşımını birlikte değerlendirebiliriz.