Skip to content

[FEAT] Store exchange rate snapshots for non-primary-currency expense/income transactions #716

@LOVAHE

Description

@LOVAHE

Description

Flow already supports multiple currencies, and cross-currency transfers can store a conversion rate.

For normal expense and income transactions, it looks like Flow stores the original amount, currency, and transaction date, but does not store the exchange rate or converted primary-currency amount used for historical reports.

This can make old reports change when exchange rates change.

Example:

  • Primary currency: JPY
  • Transaction: 10 USD expense
  • Transaction date: 2026-05-07

For current balance or net worth, using the latest USD/JPY rate makes sense.

For historical spending reports, I would expect the JPY value of that 10 USD expense to stay fixed once the transaction is recorded.

Suggested behavior:

  • Keep the original transaction amount and currency as the source of truth.
  • For expense/income transactions where the transaction currency differs from the primary currency, store an exchange rate snapshot.
  • Store the converted amount in the primary currency as well.
  • Historical spending/income reports should use the stored converted amount when available.
  • Current balance and net worth views can continue using the latest exchange rate.

This would keep historical reporting stable while preserving current-rate valuation for balances.

Additional Context

This is different from cross-currency transfers.

Transfers already have a conversion rate field, but this request is about normal expense and income transactions.

A snapshot could include:

  • Original currency
  • Primary currency
  • Exchange rate
  • Converted amount
  • Rate date
  • Rate source
  • Whether the rate was manually edited

Manual editing would be useful because card providers often settle foreign-currency transactions using a slightly different rate from public exchange-rate APIs.

Thank you very much.

Metadata

Metadata

Assignees

No one assigned

    Labels

    S: ConfirmedThe issue will be worked on for sure.enhancementImprove existing featurereadyReady to be implemented. Is simple or has detailed description about the requirements
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions