System Design: Multi-Currency Price Display and Booking
Context
You are building a global travel marketplace where guests discover listings, view prices, and complete bookings. Users come from many countries, want to pay in their preferred currency, and expect consistent amounts across web/app, emails, invoices, and refunds.
Design the frontend and backend to support multi-currency pricing and booking at scale.
Requirements
Cover the following:
-
Currency selection UX and defaulting logic
-
Storage currency vs. presentation currency
-
When conversions are applied (search/quote vs. checkout), and rate locking
-
Exchange-rate sources and refresh cadence; fallbacks
-
Rounding and localization rules (minor units, cash rounding, formatting)
-
Tax/fee handling (inclusive/exclusive, jurisdiction rules)
-
Caching strategy across pages and services
-
Consistency across emails, invoices, and refunds
-
API design (endpoints, headers, responses) and data model considerations
State any assumptions you need to make.