Skip to main content

Understanding Multi-Currency in Accounting

In accounting systems, all transactions are ultimately stored and reported in the base currency of the company (most commonly EUR).
Even when multi-currency is supported, accounting software always maintains both:
  • the original transaction currency, and
  • the converted base currency equivalent.
If multi-currency is not supported, then only the base currency is recorded — all conversions must be done before sending data to the accounting system.

How Chift Handles Multi-Currency

With the Unified API, you don’t need to worry about whether the underlying connector supports multi-currency — Chift automatically handles both scenarios. The key is to always check whether your transaction currency differs from the folder’s base currency.

1. Check the base currency of the folder

Each accounting folder has a main_currency field available in the Get Folder endpoint. If your transaction is in another currency (e.g. USD while the folder base currency is EUR), it is considered a foreign currency transaction.

2. Provide currency and exchange rate fields

When posting an invoice, journal entry, or financial entry in a foreign currency:
  • Set the currency field in your payload (the currency of the transaction).
  • Set the currency_exchange_rate field to specify the exchange rate between the base and foreign currency.
If the connected accounting software supports multi-currency:
  • The transaction is booked in the foreign currency, and
  • The accounting software handles conversion and FX gain/loss tracking automatically.
If the accounting software does not support multi-currency:
  • Chift converts the transaction amount to the base currency using the provided currency_exchange_rate.
  • The transaction is then stored in base currency only.

3. Forcing an exchange rate (advanced)

By default, when a connector supports multi-currency, Chift will use the accounting software’s default exchange rate for the selected date and currency pair. However, you can override this behavior by using the force_currency_exchange query parameter (available on journal entry creation).
💡 Recommendation:
Use this parameter whenever your system is the source of truth for exchange rates (i.e., you define the rate at emission time).

✅ Best Practices

  • Always compare your transaction currency with the folder’s main_currency.
  • Always include both currency and currency_exchange_rate — even when not strictly required.
    → This ensures consistent behavior across all connectors.
  • Use force_currency_exchange=true when you need full control over the applied rate.
  • Keep your exchange rates rounded to 6 decimal places for accuracy and stability.

I