We write analytics software. Recently our customers have asked us to take a look at expanding our services into the e-commerce arena, and this has raised some tricky questions in an internationalized world.

The root of our questions is that a store may process transactions in multiple currencies. Imagine a list of transactions that looks like this:

  • transaction #2789, 2015-01-05: 2,400 USD
  • transaction #2790, 2015-01-07: 600 EUR
  • transaction #2791, 2015-01-08: 150 GBP
  • transaction #2792, 2015-01-09: 1,200 USD

Suppose we want to show the total lifetime revenue as it changes over time in a graph. What's the most appropriate variable to graph? Some of the options we're considering:

  • The total for one currency only. Since most of the time and for most stores, the majority of the revenue comes from one currency, only show that currency. This sidesteps the issue entirely by assuming that people will be fine with looking at one currency at a time and seems to make the fewest number of assumptions.

    In this case, the lifetime USD revenue for the four transactions above would be 0 USD before January 5, 2400 USD on January 5, and 3600 USD on January 9. The EUR and GBP transactions would just be ignored when calculating for USD; likewise, the GBP and USD transactions would be ignored when calculating for EUR.

  • The total for all currencies, normalizing to USD via today's exchange rate to the current value of those currencies. If 1 EUR = 1.1 USD and 1 GBP = 1.5 USD, then the lifetime revenue would be 4,485 USD. However, this means that the total revenue would change every time you look at the graph, since exchange rates are always changing.

  • The total for all currencies, normalizing to USD via the exchange rate at the time the transaction was made. This is the same as above, but now we use the exchange rate at the time the transaction was made instead of at the time the graph is being generated, so the total revenue is stable rather than fluctuating each time exchange rates move.

What's the right approach? Should we pick one or try to build all three -- and if we pick one, which one do we do? Or is there another viable option we're missing entirely?

  • would a viable option be to allow the user to switch as they pleased? perhaps also defaulting based on settings or the country the business operates in?
    – Toni Leigh
    Commented Feb 28, 2015 at 18:51
  • I suggest changing the title of the question to something like: how should a multi-currency total be presented to users. This might help search results for other users looking to answer the same question in the future.
    – tohster
    Commented Feb 28, 2015 at 20:49

2 Answers 2


For business analytics, the two most important options are:

  1. Total sales in USD (spot exchange rate) - This is the total sales worldwide, converted to US dollars at the spot currency rate on the day of the purchase. This is useful because it's the closest approximation to what revenue looks like in financial statements. It will not be exact due to revenue recognition timing and specific currency policy, but it's the closest proxy. Sometimes the term as recorded is used instead of spot rate.

  2. Total sales in USD (constant currency) - This uses the same exchange rate across all periods. It's a better measure of underlying sales momentum in most businesses, since currency fluctuations are an external or systematic risk, so removing them by fixing the rate allows you to focus on sales momentum without currency bias. This isn't perfect either, because in reality businesses often adjust their prices in response to currency changes, but it is still broadly used. For constant-currency sales, it's important to note the date of the exchange rate used....usually the most convenient rate is "today's rate".

Companies will often include both metrics in sales analysis (it's best practice), and both are important enough that they often get reported at board-level (although for that, it's typically run through revenue recognition first).


Flexibility and usability:

In principle, having flexibility by providing all options (not sure about option 3) is a good idea but do bear in mind that usability decreases as flexibility increases. one way to counter this problem is to use intelligent defaults:

Intelligent defaults:

Choosing intelligent defaults benefits all users. The beginner can acquire knowledge incrementally, learning only what they want. The expert can buzz around being productive, fiddling with only the choices they want.

source: Intelligent Defaults

So with that in mind you need to carefully assess who will be using which option and to what end; how will this be useful to them? That being said, option 2 "The total for all currencies, normalizing to USD via today's exchange rate to the current value of those currencies" seems to me a viable default option from which users could tweak settings to their desire.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.