Setting the functional currency
You set the functional (base) currency for each company/entity during entity creation in Accounting Setup → Currencies. The functional currency is the currency your books are denominated in. All reporting for that entity ultimately resolves to this currency. DualEntry uses the functional currency as the basis for all journal entries, account balances, and financial statements produced for that entity. Changing the functional currency after initial setup is a significant operation that requires restating historical balances. Plan your functional currency carefully before creating transactions. If you operate across multiple entities with different functional currencies, DualEntry handles the translation during consolidation using the rate types described below.Troubleshooting: functional currency missing from the dropdownWhen you add a new company, the functional currency picker only lists currencies that are already enabled on the tenant. If the currency you need (for example, SGD for a new Singapore entity) is not in the list, enable it first:
- From an existing company, go to Accounting Setup → Currencies.
- Add the missing currency to the enabled list and save.
- Return to the new company form. The currency now appears in the functional currency dropdown.
Enabling transactional currencies
Once your functional currency is set, you enable the additional currencies you transact in. Navigate to Accounting Setup → Currencies and add each currency to your enabled list. When you create a bill, invoice, or other transaction in a non-functional currency, DualEntry captures both the transaction amount in the foreign currency and the exchange rate used for conversion. You can enable as many transactional currencies as you need. Each enabled currency appears as an option when creating or editing transactions. DualEntry stores both the foreign-currency amount and the functional-currency equivalent on every transaction line, so you always have access to the original amounts alongside the converted figures in reports and account balances.Viewing an account balance in its assigned currency
When you assign a currency to a GL account (bank or non-bank) via the account’scurrency_iso_4217_code field in the chart of accounts, DualEntry keeps a running balance in that native currency in addition to the functional-currency equivalent.
Two places show the native balance:
- Account detail page. Open Chart of Accounts → the account. The header displays the current balance in the account’s assigned currency; the functional-currency equivalent appears alongside it. The transaction list underneath shows each entry’s original amount in the assigned currency.
- General Ledger report. Run Reports → General Ledger, filter to the account, and enable the Transaction currency column from the column picker. Each line shows the amount in its native currency; the report footer totals the balance in that currency.
FX rate sources
DualEntry provides three ways to source exchange rates:- Built-in provider - DualEntry pulls rates automatically from a built-in FX rate provider, updated daily. This is the default and requires no configuration beyond enabling it.
- Manual entry - you enter rates directly for specific currency pairs and dates. Use this when you have negotiated rates or need to override the provider rate for a specific transaction.
- CSV upload - upload a rate table with date, currency pair, and rate columns. This is useful for importing rates from your treasury system or central bank.
Rate types
DualEntry uses three rate types, each serving a different purpose:- Spot rate (historical rate) - used for individual transactions at the date they occur. Once a transaction is booked, its spot rate is locked to the transaction date and never retroactively adjusted.
- Period-end rate - used for balance sheet revaluation at the closing date of each period.
- Average rate - used for income statement translation when consolidating entities with different functional currencies.
Historical rate locking on transactions
DualEntry locks every transaction to the spot (historical) exchange rate as of its transaction date. This happens automatically when the transaction is booked. You do not enter or update the rate manually, and the system does not retroactively re-rate posted transactions or average them across periods. Each transaction permanently retains its own historical rate, which is the correct accounting treatment for equity and other date-specific events under ASC 830 / IAS 21. If you need to override the rate on a specific transaction (for example, to match a negotiated contract rate), you can enter it manually at the time of booking; the manual rate is then locked to that transaction the same way. Example: CAD equity raise across two dates. Assume your functional currency is USD and you raise equity in CAD on two separate dates:- June 2025 raise - booked and locked at the June 2025 CAD/USD spot rate on the transaction date.
- Later raise - booked and locked at that later date’s own CAD/USD spot rate.
