Skip to content

Currencies and exchange rates

Manage subscriptions in different currencies and check how exchange rates apply to past spending and future charges.

Every subscription and payment method has its own currency. All totals — monthly cost, total spent, reports — are converted into one base currency.

  • Settings → General → Base currency sets the currency everything is converted into; USD by default.
  • The currency picker in the sidebar switches it any time: pick a currency and all statistics are converted into it (this also changes the base currency setting); pick Original and the list shows each subscription in its own currency while totals stay in the base currency.

You can change the base currency whenever you like; every figure is recalculated instantly, no data migration needed.

There are two core rules:

  1. Past charges use the exchange rate of the day they were charged. TRY charged in March 2024 is converted at the TRY rate for that day in March 2024, as a historical-rate estimate; your card’s actual settlement may differ.
  2. Future (projected) charges use today’s rate. Nobody knows tomorrow’s rates, so today’s is the best guess.

Also:

  • Charges with a Charged to card amount are converted from that actual currency and amount, so FX spreads and fees count as real cost.
  • If there’s no rate for a given day, the nearest earlier day is used; failing that, the nearest later day; failing that, today’s rate.
  • Payments from shared plan members and repayments for charges you paid for others are converted at the rate of the day you received them.

Figures that mean “how much per month right now”, like monthly subscription spend, use today’s rates. Rates can still change between dates. Select Today’s rates to revalue an entire trend at one set of rates when comparing subscription changes.

The trend chart at the top of Reports can switch between Rates then (each month at its month-end rate) and Today’s rates. The monthly change breakdown shows the effect of exchange rates as its own FX step. See Report metrics.

Suppose Alex pays 300 TRY per month and uses CNY as the base currency. These rates are illustrative.

Date Assumed rates CNY equivalent
Previous charge 1 USD = 30 TRY and 1 USD = 7.20 CNY 300 ÷ 30 × 7.20 = 72
Today (next charge forecast) 1 USD = 40 TRY and 1 USD = 7.20 CNY 300 ÷ 40 × 7.20 = 54

The historical charge remains 72 CNY; the next forecast is 54 CNY. If the card actually charged 75 CNY, record 75 CNY under Charged to card (optional) for that charge and historical spending uses 75 CNY.

Purpose Source Updates
Current rates open.er-api.com (USD-based) The scheduled job checks every hour and fetches again if the last update is more than 20 hours old; you can also refresh by clicking Current rate under Settings → Exchange rates. Each fetch is also saved as that day’s historical rate.
Historical rates (from 2024-03-02) fawazahmed0/currency-api daily snapshots, covering almost every currency Filled in as needed
Historical rates (earlier) Frankfurter (European Central Bank data since 1999, major currencies) Filled in as needed

Calends needs historical rates for: every past charge date, every month end (for the trend chart), and every balance’s as-of date. Missing dates are filled in the background when you open the app. Settings → Exchange rates → Historical rates shows how many days are covered and the earliest one; if some are missing, click Fill in missing rates.

Historical snapshots keep common currencies and those used by your subscriptions and payment methods. The current rate table keeps the currencies returned by its source.

Before any rate has been fetched (or without network access), Calends uses a built-in set of fallback rates for twenty-odd common currencies such as CNY, EUR, JPY, TRY and NGN, so the interface still works. They’re replaced by live rates once online.