Back to case studies

Backend Engineer

Designing Multi-Currency Analytics for Global Merchant Dashboards

How exchange-rate ingestion, normalized values, and query-time conversion APIs can make global merchant reporting usable.

Details are intentionally generalized to respect confidentiality.

AnalyticsCurrency ConversionData PipelinesClickHouseQuery Optimization
Timeline
2025
Domain
Analytics pipelines, currency normalization, dashboard APIs
Impact
Supported analytics for 20M/day transactions through the Express Checkout product.

Architecture

Sanitized System Flow

The diagram shows the major responsibility boundaries without exposing proprietary internal implementation.

Multi-Currency Merchant Analytics

Designed scheduled exchange-rate ingestion, USD-normalized storage, query-time conversion wrappers, optimized queries, and schema extensions.

1Exchange Rates
2Transaction Data
3USD Normalization
4Analytics Store
5Conversion API
6Dashboard

Context

Global merchants need analytics that remain meaningful across countries, currencies, and reporting windows.

This case study is intentionally generalized and does not expose internal schemas or proprietary dashboard details.

Problem

Raw transaction amounts in different currencies made dashboard totals difficult to compare and forced manual reporting work at Express Checkout scale.

The system needed normalized values without losing the ability to display merchant-selected currencies.

Constraints

Exchange-rate ingestion had to be scheduled and resilient.

Queries needed to stay performant for dashboard workloads backed by roughly 20M/day transactions through the Express Checkout product.

Schema changes had to preserve historical correctness and avoid surprising reporting shifts.

Conversion APIs needed consistent behavior across reporting surfaces.

My Role

Designed the backend architecture for normalized storage and query-time conversion behavior.

Worked through schema extensions, optimized query patterns, and dashboard-facing API shape.

Technical Design

Introduced scheduled exchange-rate ingestion and stored USD-normalized transaction values for consistent aggregation.

Designed a conversion wrapper API for query-time display in merchant-selected currencies.

Extended schemas to support normalized analytics while preserving original transaction context.

Optimized queries around dashboard access patterns rather than one-off reports, with the design shaped for 20M/day transaction volume through Express Checkout.

Tradeoffs

Storing normalized values increased write-time responsibility, but reduced repeated conversion work at read time.

Query-time conversion preserved dashboard flexibility, but required careful rate selection and response semantics.

Impact

Supported multi-currency merchant analytics for 20M/day transactions through the Express Checkout product.

Reduced manual reporting overhead for global transaction analytics.

Created a scalable foundation for merchant dashboards that need cross-currency comparisons.

What I learned

Analytics correctness is a product feature; users lose trust when totals are hard to explain.

Currency systems need explicit time, source, and normalization semantics.